TSM+Inscription

Here's a How-To on using Trade Skill Master to run an Inscription business. Watch fullscreen.

The best WoW video of all

Wowcrendor has released a compilation of some of the funniest moments from his 2.9 years of making WoW videos. This here is 7.8 minutes of THE FUNNY. Enjoy.

Power Auras Primer vid

Please enjoy this short tutorial on Power Auras. Watch in HD.

Djörk Gold Blog: Basics

A long time ago, there was a warrior on a popular PvE server who made it to level 45 before getting a mount. This was my first WoW character, and besides being clueless about how to play the character, I was also clueless about how to manage the character's wealth. As you can see from the figure to the right, I've learned a few things since then. Let me share a few pointers about WoW wealth management. As in real life, money will not bring happiness, but it sure makes the pain more bearable. There's no reason to be poor in this game. With a little time spent managing professions and inventory, you too can be WoWealthy.

Use What You Have

Every WoW character has the potential to make cash. Seriously. The most basic way to make lots of cash while levelling a new character is to take herbalism and mining as your professions. Do this as soon as possible. Starting areas are loaded with herbs and ore that go for big money. Sell all of them on the Auction House. Resist the temptation to go for professions that "mesh" like herbalism and alchemy, or mining and blacksmithing on your first character. We don't want to USE the materials we gather, we want to SELL them.

Even if you're unwilling to cater to the lowest common denominator, or if your character is already level 85 and you're unwilling to give up tailoring/enchanting, there are infinite other options for making gold in this game. Starting with Tailoring/Enchanting, we're dealing with two nice money makers. Tailoring makes money easily from bags, especially Netherweave, Embersilk, and specialty gem bags. Use the Dreamcloth cooldowns (yes, all of them) and make leg enchants. Starter 85 PvE and PvP items sell quite well also. Enchanting has two ways to cash in: 1) a) Buy/craft vellum. b) Buy/craft enchanting materials.  c) Market profitable enchants. 2) Buy items to disenchant (greens/blues) from the auction house. All levels of gear work, as long as you know the market value for the disenchant products. This brings us to point 2:

Addons

There are two essential addons you must use if you're serious about never. being. poor. again. The first is Auctioneer. Everyone complains it does too much, it's bloated and slow. Yes it is. Now give Norganna and company the donations they richly deserve for this superb product and stop the QQ. For flexible posting, nothing beats it yet. I like to customize and change prices manually for some items. There's no need to undercut Brilliant Inferno Rubies, for instance. For others, I like to let the market price float around. Auctioneer tends to price things higher, which I like.

 

The second essential addon suite is Trade Skill Master. Get all the components. You use Trade Skill Master to determine what to craft. It's automated to the point where you can just click the "Restock Queue" button once you configure how many of each item to craft, then mindlessly click the "Craft Next" button to make more profit. Trade Skill Master, or TSM for short, will even generate a shopping list for you to go to the auction house and buy the items needed to make the profitable items from the queue. I tend not to use this feature. Most of what I craft, with notable exceptions, is level 85 gear with level 85 material requirements. I tend to keep a stock on these materials, using the crafting character as a warehouse for these materials.

More Ore

Shop for bargains on raw materials. Know what the going prices for important mats for your profession are, and when you see bargains, pounce. Fear not excessive inventory. Use the mail system as 30-day-at-a-time storage. Each mail can contain 12 stacks of a material, and up to 50 mails appear in one pane of the standard mail interface. This gives you an effective 600 slots more bank space, as long as you're willing to pay for the shipping. Mails are tagged automatically with the name of the material, so if you send 12 stacks of Elementium Ore to a crafting alt, the mail will be tagged "Elementium Ore" as its mail subject. Now when the crafting alt needs elementium ore, check the mail and shift-click a mail that says "Elementium ore". Boom, 12 stacks.

 

TSM has a very nice feature called "General Buying" with which you can type the name of a raw material and it will present the lowest price per unit to you. It makes navigating through dozens of AH pages of raw materials much easier.

Mr. Data, you have The Con

I'd be remiss if I didn't point to the single finest market research resource available to WoW players, The Undermine Journal. If you want to find out historical pricing data and stock levels in the marketplace, this is the place to go. You can use its breakdown of cut gem prices to determine which cuts to purchase with your hard-earned JC tokens. You can find out what hours your competition posts auctions so you know when to post your own. The richness of the data on this site is hard to overestimate. Spend some time here and you'll understand your market better.

Keep Liquid

Once you develop a sizable enough inventory of materials to sell, make sure to never outspend your current cash position, or risk not being able to take advantage of bargains when they present themselves. This also applies to your spending. You'll get everything you want to buy in this game eventually. Waiting until you have sizable cash reserves to splurge will reap benefits. This is why I encourage first characters to go herb/mine, as they only increase your cash position. Using farmed materials to craft for a second profession doesn't make all that much money. Levelling gear tends to get disenchanted at a discount. Some can be profitable, but not compared to the profits from simply selling the raw materials.

Almost all suffice

Virtually every profession offers gold-making benefits. Simply produce what people want.

  • Blacksmithing—starter lv 85 PvE/PvP sets, Ebonsteel Belt Buckles, Pyrium Weapon Chains, Shield Spikes.
  • Tailoring—bags, starter sets, leg enchants
  • Jewelcrafting—Do I really need to say prospect and reap? JC is probably the single best moneymaker.
  • Alchemy—Work that 20% specialization bonus in either potion or elixir/flask markets. Swiftness pots sell, as do Elixirs of Giant Growth. Truegold Transmutes.
  • Fishing—I buy Lavascale Catfish at 9g. Get out there and fish your way to riches.
  • Skinning—Savage Leathers at 5g each, but it is work.
  • Leatherworking—PvP/PvE starter sets, Pack of Endless Pockets, leg enchants
  • Inscription—Profitable, lots of work to maintain inventory, lots of undercut bots. Mysterious Fortune Cards are very nice easy money. 
  • Engineering—Now that ammo is gone, Engineering is probably the least profitable profession at the moment. Pets can sell, but this depends on your realm and markets.

Unless you're a skinner/engineer, there's no reason you can't be using the materials available at your auction house right now to make money in this game. Again, it won't ensure happiness when playing, but it sure doesn't hurt! Good gaming to you.

Firelands: The Djörkreport

<Djörk> once again ventures into the fray against Azeroth’s evil forces. Bosses are being dirtnapped as always. Loot is being gotten. Times are good.

 

Join us on our adventures. Fill out an application and help us down Ragnaros. Again.

 

UI TIP: Mount Macro

So you've amassed a ton of mounts that you want to show off. What's a wow player to do???  Sure, you can put different mounts on different keybinds, or use a button bar with all your mounts on it, but who really wants to mouse to a button or remember all those keybinds? We have too many keybinds already. What most people in this situation will do is find a way to randomize their mounts. There are many good mount randomization addons available for this purpose, GoGoMount BrokerMounts and MountRandomMount just to name a few, but I like to have a custom-crafted solution for a lot of my WoW UI issues. I like to make my own macros for targetting, CC and handling cooldowns like Soulburn, and so randomizing my mount macro and giving it all the features I would like to have is something I actually enjoy.

Mounts have numbers!

Mounts are located on the mounts tab, which you can open by looking at your spellbook. Mounts are numbered in the standard left-to-right fashion, starting with 1. By passing the appropriate number to a function called CallCompanion(), we can get on any mount from our stables! Note here that there is one annoying problem with managing your mounts: anytime you add a new mount to your collection, these numbers will change. Sometimes they seem to change in odd ways as well, not merely the "shift to the right" you would imagine. Just be aware that if you want to handle things yourself, you'll need to change your macro anytime you add a new mount. Once you get used to parsing the code, it doesn't really take that long.

Into the Code…

Bindpad is awesome!

I use an addon called BindPad to manage my mount macro. Blizzard's default UI for macros only allows macros of up to 255 characters. This is not at all a limitation of the lua language that World of Warcraft runs on, it's just that they didn't design their macro UI to handle macros that are larger. To be honest, this is the only macro I use that approaches shattering this limit. Without BindPad, I would be forced to either give up some features of the macro or run a mount randomization addon. Thanks to BindPad, I can write it myself!

/run local t,z={},GetRealZoneText();local v,s,a,sh,f,sw=(z=="Kelp'thar Forest" or z=="Shimmering Expanse" or z=="Abyssal Depths"),(z=="Strand of the Ancients"), IsAltKeyDown(), IsShiftKeyDown(), IsFlyableArea(), IsSwimming() ;if IsMounted() then Dismount();return elseif UnitInVehicle("player") then VehicleExit();return end if v then t={1} elseif (a and not sh) or sw then t={20} elseif(sh and a)then t={24} elseif (sh and not a) then t={19}elseif not f then t={3,5,8,10,11,12,13,14,15,22,23} else t={16,9}end; if (not (v or a or f or s or sw or sh)) then t[#t+1]=4;t[#t+1]=24;end;CallCompanion("MOUNT",t[random(#t)])

The Mount Macro itself

The first thing this macro does is /run. This directs WoW's macro interpreter to treat the following text as lua code. Lua is a powerful, fast, and efficient language that powers much of World of Warcraft. Anything you interact with in WoW is constructed out of Lua code. Lua powers buttons, mana bars, the minimap and essentially the entire WoW UI. With the power of Lua, addon writers can customize the UI in almost any way imaginable. Even if you're not a programmer, I'm sure you can follow along as I dissect this seemingly intractable block of code.

The next bit of code assigns various variables with values that will determine which mount we will use. local t,z={},GetRealZoneText(); creates a table with no entries, called a null table. It is in this table that we will store a list of the numbers of the mounts we would like to select from based on our current location and any modifier keys we're pressing. This assignment line also puts the value obtained from GetRealZoneText() into the variable z. So, if we were in Dalaran at the time, z would contain the value "Dalaran". Note also the specifier local. This important word tells the lua interpreter that the values we're assigning are local to the code that runs after the /run. These values will only be accessible by the specified variable within this block of code. Outside of this block of code, other functions can indeed have their own values for these exact same variables. In addition, there can be what is called a global context for these variables. It is for this reason that we specify the local tag. We don't want to write over anyone else's global context for these variables (not that anyone else should be using them either).

The next block of code handles assigning all the other variables we'll use in our mounting decision process. local v,s,a,sh,f,sw=(z=="Kelp'thar Forest" or z=="Shimmering Expanse" or z=="Abyssal Depths"),(z=="Strand of the Ancients"), IsAltKeyDown(), IsShiftKeyDown(), IsFlyableArea(), IsSwimming(); simply fills the variables v,s,a,sh,f,sw with the values to the right of the single equals sign. The first value v is set to several text comparisions where z is checked versus several text strings. Remember that z was set to the current zone. Now we're seeing if that zone is either Shimmering Expanse, Abyssal Depths, or Kelp'thar Forest. You may recognize these as the subzones of Vashj'ir. That's exactly what we're putting in the variable v. If we're in one of those zones, then we're in Vashj'ir, and v will be set to true. We're also testing whether the alt key is down, whether we can currently fly, and whether we're currently swimming. These states will determine which mount we choose.

Sir, Please Step Out of the Vehicle

This is my favorite part of the macro, and was probably the inspiration for me to write a macro to do this in the first place. How many times have you been in a World of Warcraft vehicle and wished your mount key would get you out of the vehicle? This part of the macro does just that! if IsMounted() then Dismount();return elseif UnitInVehicle("player") then VehicleExit(); return end handles both dismounting and leaving vehicles. No more fumbling with the mouse to get out of a demolisher or sidecar! The return end then exits the macro if either of these conditions are true. Lua's entire syntax with regard for if statements is actually if (statement) then DoSomething() else DoSomethingElse() end. The keyword end is a required part of that construct, even though in this case the code terminates execution with the return statement.

Decisions, Decisions

Finally we come to where we pick which mount to use based on the contents of all those variables we populated. The first test if v then t={1} simply checks to see if we're in Vashj'ir. If we are, then the value 1 is is put into the table t. Tables can be thought of as arrays, although they are much more powerful. For the purposes of this treatment however, assume that a table works like an array. Just like arrays, tables can contain multiple values for individual elements. We will populate the array t with the values of the mounts we can choose from randomly based on our current location. For the case where we're in Vashj'ir, clearly we'll want to be using the Abyssal Seahorse. Parsing through the rest of the chain of elseifs , one sees that the Sea Turtle will be selected if the alt key is down without the shift key also down OR we're swimming. If both the shift key and the alt key are down, we'll mount the Traveler's Tundra Mammoth. If the shift key without the alt key is held, we'll mount a Sandstone Drake.

Note that all of these assignments thus far have been a single number for the value placed in the table t. Next however, we have the statement elseif not f then t={3,5,8,10,11,12,13,14,15,22,23}. These are the ground mounts we want to select. If we're in a non-flyable area like Tol Barad or a bg, f will be false, as it was set previously to the value of IsFlyableArea(). So when we can't fly, this is a list of the mounts we select. Finally, we have else t={16,9}end. These two mounts are the mounts that will be selected if we can fly.

Low Clearance

Some mounts are just too darn big. As any tauren who has visited Undercity can attest, some mounts will simply not fit through some arches. I have two mounts that impede my ability to travel in some locations. The Black War Mammoth and Traveler's Tundra Mammoth are great mounts, but they will not fit up the stairs in the Strand of the Ancients battleground. These mounts are added as elements to the table t if we're not in Vashj'ir, a flyable area, or Strand of the Ancients. Lastly, CallCompanion("MOUNT",t[random(#t)]) then randomly selects one of the numbers from the table t, and mounts up.

I hope I've given you a sense what goes on in the underpinnings of World of Warcaft's macro and scripting system. Have fun out there, and keep on coding!

Subscribe to Djörk RSS