Wowpedia

We have moved to Warcraft Wiki. Click here for information and the new URL.

READ MORE

Wowpedia
 
 
Line 1: Line 1:
  +
== User Templates ==
−
[[Addons]] in ''World of Warcraft'' share a single execution environment. As a result, all Addons have access to the same global variables. If one Addon creates a global variable named "foo", then all other addons can use (or overwrite) that same variable. This allows for some really useful things to happen; the most frequently used tactic that takes advantage of this feature is [[Hooking functions|hooking]]. Unfortunately, this can also cause some problems in addons. They will conflict if more than one Addon tries to use the same name for a variable. As a result, Addon authors must ensure that their Addons don't conflict by doing one (or more) of the following:
 
−
#Using assuredly-unique names for variables, such as MyAddon_MyFrame_OnLoad
 
−
#Making their addons [[Object_Oriented_Programming|object-oriented]]
 
−
#Using variable ''scope'' to the author's advantage.
 
   
  +
<onlyinclude>{{Userbox
−
== What is scope? ==
 
  +
|bcolor={{#if:{{{bcolor|}}}|{{{bcolor}}}|black}}
−
No, it's not just a mouthwash. A variable's ''scope'' defines how visible it is to the rest of the program. The feature exists in most high-level languages and [[Lua]] is no exception.
 
  +
|mainbg={{#if:{{{mainbg|}}}|{{{mainbg}}}|#551166}}
  +
|color={{#if:{{{color|}}}|{{{color}}}|#FFFFFF}}
  +
|lbg={{#if:{{{lbg|}}}|{{{lbg}}}|black}}
  +
|lcontent={{#if:{{{lcontent|}}}|{{{lcontent}}}|[[File:Spell Holy SenseUndead.png|50px]]}}
  +
|content={{#if:{{{toon|}}}|{{{toon}}}|This user's character}} has {{#if:{{{bosses|}}}|{{#if:{{{dbosses|}}}|{{#ifexpr:{{{dbosses}}}<{{{bosses}}}|downed {{{dbosses}}} {{#ifexpr:{{{dbosses}}}=1|boss|bosses}} in|cleared}}|cleared}}|run others through}} {{#if:{{{instance|}}}|{{{instance|}}}|'''[[Scholomance]]''' so many times that the user got exalted with the [[Argent Dawn]]}}.
  +
}}</onlyinclude>
   
−
Variables can exist in two forms: "global" or "local." A global variable is accessible to everything and is not limited. This is the default functionality in Lua. This is unlike many other languages, such as PHP and C, where a variable is always local unless declared global. This difference is important to note. A global variable is not limited to its file, function, or code block:
 
   
−
foo = 1;
 
−
function bar()
 
−
foo = 2;
 
−
end
 
−
bar();
 
−
DEFAULT_CHAT_FRAME:AddMessage(foo); -- Will output "2"
 
   
−
foo = 1;
 
−
if (true) then
 
−
foo = 2;
 
−
end
 
−
DEFAULT_CHAT_FRAME:AddMessage(foo); -- Will output "2"
 
   
−
-- File #1
 
−
foo = 2;
 
−
-- File #2 (run after File #1)
 
−
DEFAULT_CHAT_FRAME:AddMessage(foo); -- Will output "2"
 
   
−
This is precisely the opposite functionality of a local variable, which is limited in scope. Take the following examples, where variable scope comes into play. The reasoning behind this functionality will be explained a bit later, but for now these are shown as a general overview of what scope is:
 
   
  +
== Top Links ==
−
local foo = 1;
 
  +
[[Enchantments by Slot]]
−
function bar()
 
−
local foo = 2;
 
−
end
 
−
bar();
 
−
DEFAULT_CHAT_FRAME:AddMessage(foo); -- Will output "1"
 
   
  +
[[Thorium Brotherhood]]
−
local foo = 1;
 
−
if (true) then
 
−
local foo = 2;
 
−
end
 
−
DEFAULT_CHAT_FRAME:AddMessage(foo); -- Will output "1"
 
   
  +
[[Temple of Ahn'Qiraj quest loot]]
−
-- File #1
 
−
local foo = 1;
 
−
-- File #2
 
−
DEFAULT_CHAT_FRAME:AddMessage(foo); -- Fails; foo does not exist (is nil)
 
   
  +
[http://cata.wowhead.com/currencycalc (Wowhead) Cataclysm Currency Exchange Calculator]
   
  +
== Gems ==
−
Whenever writing addons, it is important to understand the concept of a variable's scope, because it tells the author where a variable is defined (and in some cases, which variable will be used). In general, it is best, in most programming languages, to keep a limited-scope approach, that is, to minimize variable visibility. If a variable does not need to be accessed by other addons and files, it should be kept local. Excessive, unnecessary use of global variables is called "polluting the global namespace" and is often looked upon as a messy or sloppy programming practice.
 
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Gems (Show --->)</div>
  +
<div class="NavContent" style="display:none">
   
  +
<div class="NavFrame" style="border: none;">
−
=== Out of scope and garbage collection ===
 
  +
<div class="NavHead">Red</div>
−
A variable is said to have gone "out of scope" when it is no longer accessible by the currently executing code block. If a variable is out of scope, it is eligible for garbage collection. If no accessible references exist to the variable anymore, the variable will be garbage collected at some point in the future. Take note that this implies that global variables will never be garbage collected unless they are overwritten because they never go out of scope.
 
  +
<div class="NavContent" style="display:none">
  +
:::::::::{| class="darktable"
  +
|- align="left"
  +
! colspan=7 |
  +
|-
  +
| bgcolor="#113a5e" | '''Agility'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Delicate Cardinal Ruby}}
  +
|-
  +
| bgcolor="#113a5e" | '''Armor Penetration'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Fractured Cardinal Ruby}}
  +
|-
  +
| bgcolor="#113a5e" | '''Attack Power'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Bright Cardinal Ruby}}
  +
|-
  +
| bgcolor="#113a5e" | '''Dodge Rating'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Subtle Cardinal Ruby}}
  +
|-
  +
| bgcolor="#113a5e" | '''Expertise Rating'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Precise Cardinal Ruby}}
  +
|-
  +
| bgcolor="#113a5e" | '''Parry Rating'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Flashing Cardinal Ruby}}
  +
|-
  +
| bgcolor="#113a5e" | '''Spell Power'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Runed Cardinal Ruby}}
  +
|-
  +
| bgcolor="#113a5e" | '''Strength'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Bold Cardinal Ruby}}
  +
|}
   
  +
</div>
−
== Local variables ==
 
  +
</div>
−
Local variables exist in many forms. What's important to remember is that local variables exist in a minimal-scope context. That is, they only exist for the block in which they are defined. Although they are all declared in the same fashion, local variables can effectively be split into three types. These types are listed below, ordered from most visible to least visible:
 
−
#File-local variables
 
−
#Function-local variables
 
−
#Block-local variables
 
   
  +
<div class="NavFrame" style="border: none;">
−
=== File-local variables ===
 
  +
<div class="NavHead">Post-Cata Red</div>
−
File-local variables, as their name suggests, are local to the file in which they are declared. To be accessible throughout the entire file, they must be declared outside of any function or code blocks, otherwise they will become function-local or block-local, respectively. These variables are not accessible in any other file. Addons can make extensive use of these types of local variables because it ensures that variable names will not conflict with other addons. These types of local variables are especially effective for variables which may need to be accessed throughout the file in which they are declared (often times, this is the entire addon), but never needed outside of that file. This can allow an author to use very simple, easy-to-remember variable names, without worrying about conflicting with other addons. Take the following examples:
 
  +
<div class="NavContent" style="display:none">
  +
:::::::::{| class="darktable"
  +
|- align="left"
  +
! colspan=7 |
  +
|-
  +
| bgcolor="#113a5e" | '''Agility'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Delicate Inferno Ruby}}
  +
|-
  +
| bgcolor="#113a5e" | '''Expertise Rating'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Precise Inferno Ruby}}
  +
|-
  +
| bgcolor="#113a5e" | '''Intellect'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Brilliant Inferno Ruby}}
  +
|-
  +
| bgcolor="#113a5e" | '''Parry Rating'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Flashing Inferno Ruby}}
  +
|-
  +
| bgcolor="#113a5e" | '''Strength'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Bold Inferno Ruby}}
  +
|}
  +
Will apparently have Agility, Expertise, Intellect, Parry, and Strength in Cataclysm.
   
  +
</div>
−
--MyAddon.lua
 
  +
</div>
−
local name = "MyAddon"; -- File local variable; not accessible outside MyAddon.lua
 
−
function MyAddon()
 
−
DEFAULT_CHAT_FRAME:AddMessage(name); -- Always Outputs "MyAddon"
 
−
end
 
−
--MyAddon2.lua
 
−
local name = "MyAddon2"; -- Does not conflict with MyAddon.lua's name. This is a different variable.
 
−
function MyAddon2()
 
−
DEFAULT_CHAT_FRAME:AddMessage(name); -- Always outputs "MyAddon2"
 
−
end
 
   
  +
<div class="NavFrame" style="border: none;">
−
These two addons use the same variable name, but in different scopes, so they do not conflict. As a result, everything runs smoothly. Depending on which function you call, it will output the correct value. If the variables ''weren't'' declared as local, then we would run into problems:
 
  +
<div class="NavHead">Orange</div>
  +
<div class="NavContent" style="display:none">
  +
::::::{| class="darktable"
  +
|- align="left"
  +
! colspan=9 |
   
  +
|-
−
--MyAddon.lua (loaded first)
 
  +
| bgcolor="#113a5e" align="center" colspan=2 rowspan=2 |
−
name = "MyAddon";
 
  +
| bgcolor="#113a5e" align="center" colspan=7 | '''Yellow'''
−
function MyAddon()
 
−
DEFAULT_CHAT_FRAME:AddMessage(name);
 
−
end
 
−
--MyAddon2.lua (loaded second)
 
−
name = "MyAddon2";
 
−
function MyAddon2()
 
−
DEFAULT_CHAT_FRAME:AddMessage(name);
 
−
end
 
   
  +
|-
−
Now, note that in this example, no matter which function we call, we will always see "MyAddon2" output. This is because MyAddon2.lua was loaded second, and overwrote MyAddon.lua's name. They both use the same global scope, and as such, they are the same variable. Thus, using file-local variables for those variables which only the addon is concerned about is always considered a best-practice, as it limits visibility and overall prevents conflicts. This practice allows you to use much simpler names without needing to worry about whether or not the same name will be used by another addon.
 
  +
| bgcolor="#113a5e" align="center" | '''Crit'''
  +
| bgcolor="#113a5e" align="center" | '''Defense'''
  +
| bgcolor="#113a5e" align="center" | '''Haste'''
  +
| bgcolor="#113a5e" align="center" | '''Hit'''
  +
| bgcolor="#113a5e" align="center" | '''Intellect'''
  +
| bgcolor="#113a5e" align="center" | '''Resiliance'''
   
  +
|-
−
=== Function-local variables ===
 
  +
| bgcolor="#113a5e" | '''Agility'''
−
Function-local variables are not declared, but are still local variables nonetheless. They are created when a function is called, and are the parameters of a function. Take the following example function:
 
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Deadly Ametrine|Deadly}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" | {{item|icon=|Deft Ametrine|Deft}}
  +
| bgcolor="#300000" | {{item|icon=|Glinting Ametrine|Glinting}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" | {{item|icon=|Lucent Ametrine|Lucent}}
  +
|-
  +
| bgcolor="#113a5e" | '''Attack Power'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Wicked Ametrine|Wicked}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" | {{item|icon=|Stark Ametrine|Stark}}
  +
| bgcolor="#300000" | {{item|icon=|Pristine Ametrine|Pristine}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" | {{item|icon=|Empowered Ametrine|Empowered}}
  +
|-
  +
| bgcolor="#113a5e" | '''Dodge Rating'''
  +
| bgcolor="#300000" colspan=2 |
  +
| bgcolor="#300000" | {{item|icon=|Stalwart Ametrine|Stalwart}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Expertise Rating'''
  +
| bgcolor="#300000" colspan=2 |
  +
| bgcolor="#300000" | {{item|icon=|Resolute Ametrine|Resolute}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" | {{item|icon=|Accurate Ametrine|Accurate}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Parry Rating'''
  +
| bgcolor="#300000" colspan=2 |
  +
| bgcolor="#300000" | {{item|icon=|Glimmering Ametrine|Glimmering}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Spell Power'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Potent Ametrine|Potent}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" | {{item|icon=|Reckless Ametrine|Reckless}}
  +
| bgcolor="#300000" | {{item|icon=|Veiled Ametrine|Veiled}}
  +
| bgcolor="#300000" | {{item|icon=|Luminous Ametrine|Luminous}}
  +
| bgcolor="#300000" | {{item|icon=|Durable Ametrine|Durable}}
  +
|-
  +
| bgcolor="#113a5e" | '''Strength'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Inscribed Ametrine|Inscribed}}
  +
| bgcolor="#300000" | {{item|icon=|Champion's Ametrine|Champion's}}
  +
| bgcolor="#300000" | {{item|icon=|Fierce Ametrine|Fierce}}
  +
| bgcolor="#300000" | {{item|icon=|Etched Ametrine|Etched}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" | {{item|icon=|Resplendent Ametrine|Resplendent}}
  +
|}
  +
</div>
  +
</div>
   
  +
<div class="NavFrame" style="border: none;">
−
function foo(bar, baz)
 
  +
<div class="NavHead">Post-Cata Orange</div>
−
-- Code block
 
  +
<div class="NavContent" style="display:none">
−
end
 
  +
::::::{| class="darktable"
  +
|- align="left"
  +
! colspan=9 |
   
  +
|-
−
Two local variables, bar and baz, are created. They are not accessible outside of the function, however they can be used within the function as if they were any other variable. The following code segment demonstrates this system:
 
  +
| bgcolor="#113a5e" align="center" colspan=2 rowspan=2 |
  +
| bgcolor="#113a5e" align="center" colspan=7 | '''Yellow'''
   
  +
|-
−
function foo(bar, baz)
 
  +
| bgcolor="#113a5e" align="center" | '''Crit'''
−
local n = bar + baz;
 
  +
| bgcolor="#113a5e" align="center" | '''Dodge'''
−
DEFAULT_CHAT_FRAME:AddMessage(tostring(bar).." + "..tostring(baz).." = "..tostring(n));
 
  +
| bgcolor="#113a5e" align="center" | '''Haste'''
−
end
 
  +
| bgcolor="#113a5e" align="center" | '''Mastery'''
−
foo(1,2) -- Prints 1 + 2 = 3
 
  +
| bgcolor="#113a5e" align="center" | '''Resiliance'''
−
DEFAULT_CHAT_FRAME:AddMessage(tostring(bar).." + "..tostring(baz).." = "..tostring(n)); -- Prints nil + nil = nil (out of scope)
 
   
  +
|-
−
Function-local parameter variables are not directly declared by the author (though they are essentially created by the author, as the author created the function), but they operate in the same manner. They are still local variables and should be treated as such. Besides the parameters the author can still explicitly declare local variables inside the function that are function-local variables.
 
  +
| bgcolor="#113a5e" | '''Agility'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Deadly Ember Topaz|Deadly}}
  +
| bgcolor="#300000" | {{item|icon=|Polished Ember Topaz|Polished}}
  +
| bgcolor="#300000" | {{item|icon=|Deft Ember Topaz|Deft}}
  +
| bgcolor="#300000" | {{item|icon=|Adept Ember Topaz|Adept}}
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Expertise Rating'''
  +
| bgcolor="#300000" colspan=2 |
  +
| bgcolor="#300000" | {{item|icon=|Vibrant Ember Topaz|Vibrant}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" | {{item|icon=|Keen Ember Topaz|Keen}}
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Intellect'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Potent Ember Topaz|Shrewd}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" | {{item|icon=|Clever Ember Topaz|Clever}}
  +
| bgcolor="#300000" | {{item|icon=|Artful Ember Topaz|Artful}}
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Parry Rating'''
  +
| bgcolor="#300000" colspan=2 |
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" | {{item|icon=|Fine Ember Topaz|Fine}}
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Strength'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Inscribed Ember Topaz|Inscribed}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" | {{item|icon=|Fierce Ember Topaz|Fierce}}
  +
| bgcolor="#300000" | {{item|icon=|Skillful Ember Topaz|Skillful}}
  +
| bgcolor="#300000" |
  +
|}
  +
No resilience? Interesting?
  +
</div>
  +
</div>
   
  +
<div class="NavFrame" style="border: none;">
−
=== Block-local variables ===
 
  +
<div class="NavHead">Yellow</div>
−
Block-local variables, like their name suggests, are variables which are accessible only within the code block in which they are defined. These are often used for simplistic names which only need to be quickly accessed within that function and nowhere else. These are often counters or temporary variables which are no longer necessary once the function returns. Take the following function, for example, which adds two numbers together:
 
  +
<div class="NavContent" style="display:none">
  +
:::::::::{| class="darktable"
  +
|- align="left"
  +
! colspan=7 |
  +
|-
  +
| bgcolor="#113a5e" | '''Crit'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Smooth King's Amber}}
  +
|-
  +
| bgcolor="#113a5e" | '''Defense'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Thick King's Amber}}
  +
|-
  +
| bgcolor="#113a5e" | '''Haste'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Quick King's Amber}}
  +
|-
  +
| bgcolor="#113a5e" | '''Hit'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Rigid King's Amber}}
  +
|-
  +
| bgcolor="#113a5e" | '''Intellect'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Brilliant King's Amber}}
  +
|-
  +
| bgcolor="#113a5e" | '''Resiliance'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Mystic King's Amber}}
  +
|}
   
  +
</div>
−
function add(a, b)
 
  +
</div>
−
local n = a + b;
 
−
return n;
 
−
end
 
−
DEFAULT_CHAT_FRAME:AddMessage(tostring(add(1,2))); -- Prints 3
 
−
DEFAULT_CHAT_FRAME:AddMessage(tostring(n)); -- Prints nil (n is out of scope)
 
   
  +
<div class="NavFrame" style="border: none;">
−
Similar to the way this code segment works, the following segment also demonstrates how a code block can limit scope (without a function). Keep in mind that if..then..end, do..while..end, for..do..end, and other such blocks all create a limited variable scope:
 
  +
<div class="NavHead">Post-Cata Yellow</div>
  +
<div class="NavContent" style="display:none">
  +
:::::::::{| class="darktable"
  +
|- align="left"
  +
! colspan=7 |
  +
|-
  +
| bgcolor="#113a5e" | '''Crit'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Smooth Amber Jewel}}
  +
|-
  +
| bgcolor="#113a5e" | '''Dodge'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Subtle Amber Jewel}}
  +
|-
  +
| bgcolor="#113a5e" | '''Haste'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Quick Amber Jewel}}
  +
|-
  +
| bgcolor="#113a5e" | '''Mastery'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Fractured Amber Jewel}}
  +
|-
  +
| bgcolor="#113a5e" | '''Resiliance'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Mystic Amber Jewel}}
  +
|}
  +
Will apparently have Crit, Dodge, Haste, Mastery, and Resiliance in Cataclysm.
   
  +
</div>
−
local a = 1; -- File local
 
  +
</div>
−
local b = 2; -- File local
 
−
if (a+b > 2) then
 
−
local n = a + b; -- Block local
 
−
DEFAULT_CHAT_FRAME:AddMessage(a.."+"..b.."="..tostring(n)); -- Prints 1+2=3
 
−
end
 
−
DEFAULT_CHAT_FRAME:AddMessage(a.."+"..b.."="..tostring(n)); -- Prints 1+2=nil
 
   
  +
<div class="NavFrame" style="border: none;">
−
Block-local variables are especially useful as counters and other variables which will only be useful for a particularly small section of code. One extra advantage to doing this is an author can use extremely simple variable names such as "a," "n," or "key," which can then be reused several times within the same function, each time not conflicting with the other version of it. This greatly simplifies code without the need to make esoteric variable names.
 
  +
<div class="NavHead">Green</div>
  +
<div class="NavContent" style="display:none">
  +
::::::{| class="darktable"
  +
|- align="left"
  +
! colspan=7 |
   
  +
|-
−
== Static Variables ==
 
  +
| bgcolor="#113a5e" align="center" colspan=2 rowspan=2 |
−
The "static" keyword does not exist in Lua; therefore, it's not possible to create a static variable. Static variables are useful in that they are local to the function, but retain their value with subsequent calls to said function. You can simulate this functionality by encapsulating your function definition in a do...end block with the local variable declaration inside the do...end block and before the function definition. Like so:
 
  +
| bgcolor="#113a5e" align="center" colspan=5 | '''Blue'''
−
<pre>do
 
−
local myStaticFrame
 
−
function(...)
 
−
if not myStaticFrame then
 
−
-- Don't create the frame until the function is called once and don't make it again.
 
−
myStaticFrame = CreateFrame('Frame')
 
−
end
 
−
-- Do stuff to myStaticFrame
 
−
end
 
−
end</pre>
 
   
  +
|-
−
This could be useful in OnUpdate scripts that must use a frame/table each time it's executed, which is horribly inefficient.
 
  +
| bgcolor="#113a5e" align="center" | '''Stamina'''
  +
| bgcolor="#113a5e" align="center" | '''Spirit'''
  +
| bgcolor="#113a5e" align="center" | '''Mana Per Five'''
  +
| bgcolor="#113a5e" align="center" | '''Spell Pen'''
   
  +
|-
−
== Complex scope ==
 
  +
| bgcolor="#113a5e" | '''Crit'''
−
Yes, nothing's ever that simple, of course. Above, we have only looked at limiting scope one level at a time. Unfortunately, addons often are complex enough that an author will mix several levels of scope. But how does Lua know which local variable to use? Well, as stated before, Lua uses a rule system called "least visibility." That means, the variable which is "most local" to the current scope will be the one used. Global variables are only used in the event that a local variable does not exist at the current scope. The following block shows a very complex example which isolates the various cases that may occur.
 
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Jagged Eye of Zul|Jagged}}
  +
| bgcolor="#300000" | {{item|icon=|Misty Eye of Zul|Misty}}
  +
| bgcolor="#300000" | {{item|icon=|Sundered Eye of Zul|Sundered}}
  +
| bgcolor="#300000" | {{item|icon=|Radiant Eye of Zul|Radiant}}
  +
|-
  +
| bgcolor="#113a5e" | '''Defense'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Enduring Eye of Zul|Enduring}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Haste'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Forceful Eye of Zul|Forceful}}
  +
| bgcolor="#300000" | {{item|icon=|Intricate Eye of Zul|Intricate}}
  +
| bgcolor="#300000" | {{item|icon=|Energized Eye of Zul|Energized}}
  +
| bgcolor="#300000" | {{item|icon=|Shattered Eye of Zul|Shattered}}
  +
|-
  +
| bgcolor="#113a5e" | '''Hit'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Vivid Eye of Zul|Vivid}}
  +
| bgcolor="#300000" | {{item|icon=|Shining Eye of Zul|Shining}}
  +
| bgcolor="#300000" | {{item|icon=|Lambent Eye of Zul|Lambent}}
  +
| bgcolor="#300000" | {{item|icon=|Tense Eye of Zul|Tense}}
  +
|-
  +
| bgcolor="#113a5e" | '''Intellect'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Timeless Eye of Zul|Timeless}}
  +
| bgcolor="#300000" | {{item|icon=|Seer's Eye of Zul|Seer's}}
  +
| bgcolor="#300000" | {{item|icon=|Dazzling Eye of Zul|Dazzling}}
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Resiliance'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Steady Eye of Zul|Steady}}
  +
| bgcolor="#300000" | {{item|icon=|Turbid Eye of Zul|Turbid}}
  +
| bgcolor="#300000" | {{item|icon=|Opaque Eye of Zul|Opaque}}
  +
| bgcolor="#300000" |
  +
|}
  +
</div>
  +
</div>
   
  +
<div class="NavFrame" style="border: none;">
−
Note we create the function "p" as a synonym for DEFAULT_CHAT_FRAME:AddMessage because it is a long name to write. More importantly, note that we make this function file-local. Remember, in Lua, functions are variables too. As a result, it is equally possible to make a function local as well. In this case, the function is file-local, meaning that it will be used only within this file, and not be accessible outside of this file. This is often a good idea, especially with very simplistic names such as "p" which other authors may also choose.
 
  +
<div class="NavHead">Post-Cata Green</div>
  +
<div class="NavContent" style="display:none">
  +
::::::{| class="darktable"
  +
|- align="left"
  +
! colspan=7 |
   
  +
|-
−
local function p(msg)
 
  +
| bgcolor="#113a5e" align="center" colspan=2 rowspan=2 |
−
DEFAULT_CHAT_FRAME:AddMessage(tostring(msg));
 
  +
| bgcolor="#113a5e" align="center" colspan=5 | '''Blue'''
−
end
 
−
n = 0; -- Global variable
 
−
function foo(n) -- In comments, assuming parameter n = 1
 
−
p(n); -- Prints 1
 
−
local n = n + 1; -- Creates a new n in block scope, equal to n + 1
 
−
p(n); -- Prints 2
 
−
if (true) then -- Entering a new code block
 
−
p(n); -- Prints 2
 
−
local n = 15; -- Creates a more local n, now
 
−
p(n); -- Prints 15
 
−
for x = 1, 10 do -- Note x is implicitly declared as a local variable now, it is not accessible outside the for block
 
−
-- Note each iteration is a separate block!
 
−
p(n); -- Prints 15 EVERY TIME (even on 2nd+ loop)
 
−
local n = x;
 
−
p(n); -- Prints 1,2,...,10 (depending on iteration)
 
−
end
 
−
p(n); -- Prints 15 (n in for block is out of scope)
 
−
p(x); -- Prints nil (x is local to the for block)
 
−
end
 
−
p(n); -- Prints 2
 
−
end
 
−
foo(1);
 
−
p(n); -- Prints 0 (using global n, as there is no local n)
 
   
  +
|-
−
Now, is it a best-practice to use the same variable name for every variable you get your hands on? Most certainly not, but it does provide some extra functionality that can be useful. In general, you should avoid using names that are the same, especially as much as the above function foo(), where it can become very difficult to determine which version of "n" you are using, but it is useful on occasion to be able to localize variables. Always remember, however, that the most local variable will always be used, where possible. Global variables are a last resort.
 
  +
| bgcolor="#113a5e" align="center" | '''Hit'''
  +
| bgcolor="#113a5e" align="center" | '''Stamina'''
  +
| bgcolor="#113a5e" align="center" | '''Spirit'''
  +
| bgcolor="#113a5e" align="center" | '''Spell Pen'''
   
  +
|-
−
== Scope de-resolution ==
 
  +
| bgcolor="#113a5e" | '''Crit'''
−
Sometimes it is necessary to use a global version of a variable instead of a local copy which may exist. Luckily, Lua provides a mechanism to do this. In general, it won't be necessary if you follow programming best-practices, but occasionally it can be useful to use. Lua provides two methods to obtain a global variable:
 
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Piercing Dream Emerald|Piercing}}
−
#The [[API_getglobal|getglobal]]() function
 
  +
| bgcolor="#300000" | {{item|icon=|Jagged Dream Emerald|Jagged}}
−
#The [[Dump_G|_G]] table
 
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Dodge'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Nimble Dream Emerald|Nimble}}
  +
| bgcolor="#300000" | {{item|icon=|Regal Dream Emerald|Regal}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Haste'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Lightning Dream Emerald|Lightning}}
  +
| bgcolor="#300000" | {{item|icon=|Forceful Dream Emerald|Forceful}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Mastery'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Sensei's Dream Emerald|Sensei's}}
  +
| bgcolor="#300000" | {{item|icon=|Puissant Dream Emerald|Puissant}}
  +
| bgcolor="#300000" | {{item|icon=|Zen Dream Emerald|Zen}}
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Resiliance'''
  +
| bgcolor="#300000" colspan=2 |
  +
| bgcolor="#300000" | {{item|icon=|Steady Dream Emerald|Steady}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|}
  +
</div>
  +
</div>
   
  +
<div class="NavFrame" style="border: none;">
−
=== The [[API_getglobal|getglobal]]() function ===
 
  +
<div class="NavHead">Blue</div>
−
A function provided by the Lua language is [[API_getglobal|getglobal]](). It does precisely what its name states -- it retrieves a global variable and returns it. To use this function, you pass in a string representation of its name:
 
  +
<div class="NavContent" style="display:none">
  +
:::::::::{| class="darktable"
  +
|- align="left"
  +
! colspan=7 |
  +
|-
  +
| bgcolor="#113a5e" | '''Stamina'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Solid Majestic Zircon}}
  +
|-
  +
| bgcolor="#113a5e" | '''Spirit'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Sparkling Majestic Zircon}}
  +
|-
  +
| bgcolor="#113a5e" | '''Mana Per Five'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Lustrous Majestic Zircon}}
  +
|-
  +
| bgcolor="#113a5e" | '''Spell Penetration'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Stormy Majestic Zircon}}
  +
|}
   
  +
</div>
−
n = 1; -- Global n
 
  +
</div>
−
local n = 2; -- Local n
 
−
DEFAULT_CHAT_FRAME:AddMessage(n); -- Outputs 2
 
−
DEFAULT_CHAT_FRAME:AddMessage(getglobal("n")); -- Outputs 1
 
   
  +
<div class="NavFrame" style="border: none;">
−
Because getglobal() can be expensive, and in general it is easier to access local variables than global variables, often times, programmers will create local copies of globals they retrieve. This can make code much easier to understand and run:
 
  +
<div class="NavHead">Post-Cata Blue</div>
  +
<div class="NavContent" style="display:none">
  +
:::::::::{| class="darktable"
  +
|- align="left"
  +
! colspan=7 |
  +
|-
  +
| bgcolor="#113a5e" | '''Hit'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Rigid Ocean Sapphire}}
  +
|-
  +
| bgcolor="#113a5e" | '''Stamina'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Solid Ocean Sapphire}}
  +
|-
  +
| bgcolor="#113a5e" | '''Spirit'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Sparkling Ocean Sapphire}}
  +
|-
  +
| bgcolor="#113a5e" | '''Spell Penetration'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Stormy Ocean Sapphire}}
  +
|}
  +
Will apparently have Hit Rating, Stamina, Spirit, and Spell Penetration in Cataclysm.
   
  +
</div>
−
n = 1; -- Global n
 
  +
</div>
−
local n = 2; -- Local n
 
−
local global_n = getglobal("n"); -- Make local copy of global
 
−
DEFAULT_CHAT_FRAME:AddMessage(n); -- Outputs 2
 
−
DEFAULT_CHAT_FRAME:AddMessage(global_n); -- Outputs 1
 
   
  +
<div class="NavFrame" style="border: none;">
−
=== The _G Table ===
 
  +
<div class="NavHead">Purple</div>
−
Lua also creates and maintains a table defined by the language which contains all global variables. This table is named _G. You access it similarly to getglobal() — its keys are the string representations of variable names. As such, the same block exemplified in the previous section could be rewritten thusly, with the exact same result:
 
  +
<div class="NavContent" style="display:none">
  +
::::::{| class="darktable"
  +
|- align="left"
  +
! colspan=7 |
   
  +
|-
−
local global_n = getglobal("n"); -- These two lines
 
  +
| bgcolor="#113a5e" align="center" colspan=2 rowspan=2 |
−
local global_n = _G["n"]; -- are functionally equivalent
 
  +
| bgcolor="#113a5e" align="center" colspan=5 | '''Blue'''
   
  +
|-
−
This can allow authors to write much more compact code which performs the same operation, though it may be less readable. As always, use the appropriate tool for the situation to help maintain readability.
 
  +
| bgcolor="#113a5e" align="center" | '''Stamina'''
  +
| bgcolor="#113a5e" align="center" | '''Spirit'''
  +
| bgcolor="#113a5e" align="center" | '''Mana Per Five'''
  +
| bgcolor="#113a5e" align="center" | '''Spell Pen'''
   
  +
|-
−
== Conclusion ==
 
  +
| bgcolor="#113a5e" | '''Agility'''
−
Understanding Lua's use of variable scope is vital to understanding the process in which Lua decides which variable to use. Correct use of limited scope will allow your addon to be less likely to conflict with others, and minimize global namespace pollution.
 
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Shifting Dreadstone|Shifting}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" | {{item|icon=|Tenuous Dreadstone|Tenuous}}
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Armor Penetration'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Puissant Dreadstone|Puissant}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Attack Power'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Balanced Dreadstone|Balanced}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" | {{item|icon=|Infused Dreadstone|Infused}}
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Dodge Rating'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Regal Dreadstone|Regal}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Expertise Rating'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Guardian's Dreadstone|Guardian's}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Parry Rating'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Defender's Dreadstone|Defender's}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Spell Power'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Glowing Dreadstone|Glowing}}
  +
| bgcolor="#300000" | {{item|icon=|Purified Dreadstone|Purified}}
  +
| bgcolor="#300000" | {{item|icon=|Royal Dreadstone|Royal}}
  +
| bgcolor="#300000" | {{item|icon=|Mysterious Dreadstone|Mysterious}}
  +
|-
  +
| bgcolor="#113a5e" | '''Strength'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Sovereign Dreadstone|Sovereign}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|}
  +
</div>
  +
</div>
   
  +
<div class="NavFrame" style="border: none;">
−
[[Category:Interface customization]]
 
  +
<div class="NavHead">Post-Cata Purple</div>
−
[[Category:Lua functions| Lua Scope]]
 
  +
<div class="NavContent" style="display:none">
  +
::::::{| class="darktable"
  +
|- align="left"
  +
! colspan=7 |
  +
  +
|-
  +
| bgcolor="#113a5e" align="center" colspan=2 rowspan=2 |
  +
| bgcolor="#113a5e" align="center" colspan=5 | '''Blue'''
  +
  +
|-
  +
| bgcolor="#113a5e" align="center" | '''Hit'''
  +
| bgcolor="#113a5e" align="center" | '''Stamina'''
  +
| bgcolor="#113a5e" align="center" | '''Spirit'''
  +
| bgcolor="#113a5e" align="center" | '''Spell Pen'''
  +
  +
|-
  +
| bgcolor="#113a5e" | '''Agility'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Glinting Demonseye|Glinting}}
  +
| bgcolor="#300000" | {{item|icon=|Shifting Demonseye|Shifting}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Expertise Rating'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Accurate Demonseye|Accurate}}
  +
| bgcolor="#300000" | {{item|icon=|Guardian's Demonseye|Guardian's}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Intellect'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Focused Demonseye|Focused}}
  +
| bgcolor="#300000" | {{item|icon=|Timeless Demonseye|Timeless}}
  +
| bgcolor="#300000" | {{item|icon=|Seer's Demonseye|Seer's}}
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Parry Rating'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Retaliating Demonseye|Retaliating}}
  +
| bgcolor="#300000" | {{item|icon=|Defender's Demonseye|Defender's}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|-
  +
| bgcolor="#113a5e" | '''Strength'''
  +
| bgcolor="#300000" colspan=2 | {{item|icon=|Etched Demonseye|Etched}}
  +
| bgcolor="#300000" | {{item|icon=|Sovereign Demonseye|Sovereign}}
  +
| bgcolor="#300000" |
  +
| bgcolor="#300000" |
  +
|}
  +
</div>
  +
</div>
  +
  +
</div>
  +
</div>
  +
  +
== Honor System Conversion Table ==
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Table Show ---></div>
  +
<div class="NavContent" style="display:none">
  +
  +
:::{|class="darktable sortable zebra"
  +
! Old currency !! Post4.0 Per Old || Old Per New || Value in Honor || Value in Money || per {{cost|100||}}
  +
|-
  +
| Pre-4.0 [[Honor point]] || 0.024 || 41.667 || 1 || {{cost|||84}} || 11904
  +
|-
  +
| Pre-4.0 [[Arena point]] || 0.85 || 1.176 || 35.416 || {{cost||29|75}} || 336
  +
|-
  +
| Battleground [[Mark of Honor]] || 2.976 || 0.336 || 124 || {{cost|1|4|16}} || 96
  +
|-
  +
| {{loot|uncommon|Wintergrasp Mark of Honor}} || 19.08 || 0.052 || 795 || {{cost|6|67|80}} || 14.97
  +
|-
  +
| {{loot|rare|Stone Keeper's Shard}} || 1.6 || 0.625 || 66 2/3 || {{cost||56|}} || 178.57
  +
|-
  +
| {{loot|common|Venture Coin}} || 3 || 0.333 || 125 || {{cost|1|5|}} || 95.23
  +
|-
  +
| {{loot|common|Spirit Shard}} || 1 || 1 || 41.667 || {{cost||35|}} || 285.7
  +
|}
  +
  +
</div>
  +
</div>
  +
  +
== Outlands Non-Heroic Instance Loot Tables ==
  +
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Outlands Non-heroic Loot tables - Cloth Caster</div>
  +
<div class="NavContent" style="display:none">
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Ramparts (60-62)</div>
  +
<div class="NavContent" style="display:none">
  +
{| class="darktable"
  +
|-
  +
!Boss
  +
!Weapons and Wands
  +
!Cloth
  +
!Other
  +
|-
  +
|[[Watchkeeper Gargolmar]]
  +
|
  +
|
  +
{{loot|Rare|Pauldrons of Arcane Rage}}
  +
|
  +
|- class="alt"
  +
|[[Omor the Unscarred]]
  +
|
  +
{{loot|Rare|Crystalfire Staff}}<br/>
  +
{{loot|Rare|Heart Fire Warhammer}}
  +
|
  +
|
  +
{{loot|Rare|Heartblood Prayer Beads}}
  +
|-
  +
|[[Vazruden]]<br/>
  +
|
  +
|
  +
{{loot|Rare|Lifegiver Britches}}
  +
|
  +
{{loot|Rare|Band of Renewal}}<br/>
  +
{{loot|Rare|Witching Band}}
  +
|}
  +
</div>
  +
</div>
  +
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Blood Fernace (61-63)</div>
  +
<div class="NavContent" style="display:none">
  +
{| class="darktable"
  +
|-
  +
!Boss
  +
!Weapons and Wands
  +
!Cloth
  +
!Other
  +
|-
  +
|[[The Maker]]
  +
|
  +
{{loot|Rare|Diamond-Core Sledgemace}}
  +
|
  +
|
  +
|- class="alt"
  +
|[[Broggok]]
  +
|
  +
|
  +
{{loot|Rare|Arcing Bracers}}<br/>
  +
{{loot|Rare|Bloody Surgeon's Mitts}}
  +
|
  +
{{loot|Rare|Auslesse's Light Channeler}}
  +
|-
  +
|[[Keli'dan the Breaker]]
  +
|
  +
|
  +
{{loot|Rare|Mindfire Waistband}}<br/>
  +
{{loot|Rare|Raiments of Divine Authority}}
  +
|
  +
|}
  +
</div>
  +
</div>
  +
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Slave Pens (62-64)</div>
  +
<div class="NavContent" style="display:none">
  +
{| class="darktable"
  +
|-
  +
!Boss
  +
!Weapons and Wands
  +
!Cloth
  +
!Back
  +
!Other
  +
|-
  +
|[[Mennu the Betrayer]] (Normal)
  +
|
  +
{{loot|Rare|Spellfire Longsword}}<br/>
  +
|
  +
{{loot|Rare|Princely Reign Leggings}}
  +
|
  +
|
  +
|- class="alt"
  +
|[[Rokmar the Crackler]] (Normal)
  +
|
  +
{{loot|Rare|Calming Spore Reed}}<br/>
  +
{{loot|Rare|Coilfang Hammer of Renewal}}<br/>
  +
|
  +
|
  +
|
  +
{{loot|Rare|Runed Fungalcap}}
  +
|-
  +
|[[Quagmirran]] (Normal)
  +
|
  +
|
  +
|
  +
{{loot|Rare|Spore-Soaked Vaneer}}
  +
|
  +
|}
  +
</div>
  +
</div>
  +
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Underbog (63-65)</div>
  +
<div class="NavContent" style="display:none">
  +
{| class="darktable"
  +
|-
  +
!Boss
  +
!Weapons and Wands
  +
!Cloth
  +
!Back
  +
!Other
  +
|-
  +
|[[Hungarfen]]
  +
|
  +
|
  +
{{loot|Rare|Manaspark Gloves}}
  +
|
  +
|
  +
|- class="alt"
  +
|[[Ghaz'an]]
  +
|
  +
|
  +
|
  +
{{loot|Rare|Cloak of Healing Rays}}<br/>
  +
|
  +
{{loot|Rare|Luminous Pearls of Insight}}<br/>
  +
|-
  +
|[[Swamplord Musel'ek]]
  +
|
  +
{{loot|Rare|Zangartooth Shortblade}}
  +
|
  +
|
  +
|
  +
|- class="alt"
  +
|[[The Black Stalker]]
  +
|
  +
|
  +
{{loot|Rare|Robes of the Augurer}}
  +
|
  +
|
  +
|}
  +
</div>
  +
</div>
  +
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Mana Tombs (64-66)</div>
  +
<div class="NavContent" style="display:none">
  +
{| class="darktable"
  +
|-
  +
!Boss
  +
!Weapons and Wands
  +
!Cloth
  +
!Back
  +
!Other
  +
|-
  +
|[[Pandemonius]]
  +
|
  +
{{loot|Rare|Voidfire Wand}}
  +
|
  +
|
  +
|
  +
|- class="alt"
  +
|[[Tavarok]]
  +
|
  +
{{loot|Rare|Staff of Polarities}}
  +
|
  +
|
  +
{{loot|Rare|Cloak of Revival}}
  +
|
  +
|-
  +
|[[Nexus-Prince Shaffar]]
  +
|
  +
|
  +
{{loot|Rare|Ethereal Boots of the Skystrider}}
  +
|
  +
|
  +
{{loot|Rare|Sigil of Shaffar}}<br/>
  +
|}
  +
</div>
  +
</div>
  +
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Auchenai Crypts (65-67)</div>
  +
<div class="NavContent" style="display:none">
  +
{| class="darktable"
  +
|-
  +
!Boss
  +
!Weapons and Wands
  +
!Cloth
  +
!Other
  +
|-
  +
|[[Shirrak the Dead Watcher]]
  +
|
  +
|
  +
{{loot|Rare|Collar of Command}}
  +
|
  +
{{loot|Rare|Oculus of the Hidden Eye}}<br/>
  +
|- class="alt"
  +
|[[Exarch Maladaar]]
  +
|
  +
{{loot|Rare|Ironstaff of Regeneration}}
  +
|
  +
{{loot|Rare|Slippers of Serenity}}
  +
|
  +
|}
  +
</div>
  +
</div>
  +
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Sethekk Halls (67-69)</div>
  +
<div class="NavContent" style="display:none">
  +
{| class="darktable"
  +
|-
  +
!Boss
  +
!Cloth
  +
!Back
  +
|-
  +
|[[Darkweaver Syth]] <br/>(Normal and Heroic)
  +
|
  +
{{loot|Rare|Light-Woven Slippers}}
  +
|
  +
|- class="alt"
  +
|[[Talon King Ikiss]] <br/>(Normal and Heroic)
  +
|
  +
{{loot|Rare|Hallowed Trousers}}<br/>
  +
{{loot|Rare|Incanter's Trousers}}<br/>
  +
{{loot|Rare|Trousers of Oblivion}}
  +
|
  +
{{loot|Rare|Avian Cloak of Feathers}}<br/>
  +
{{loot|Rare|Sethekk Oracle Cloak}}
  +
|}
  +
</div>
  +
</div>
  +
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Mechanar (69-72)</div>
  +
<div class="NavContent" style="display:none">
  +
{| class="darktable"
  +
|-
  +
!Boss
  +
!Weapons and Wands
  +
!Cloth
  +
!Back
  +
!Other
  +
|-
  +
|[[Cache of the Legion]]<br/>
  +
(Key created by combining both Crystals)
  +
|
  +
|
  +
{{loot|Rare|Bloodfyre Robes of Annihilation}}<br/>
  +
{{loot|Rare|Vestia's Pauldrons of Inner Grace}}
  +
|
  +
|
  +
|- class="alt"
  +
|[[Mechano-Lord Capacitus]] <br/>(Normal and Heroic)
  +
|
  +
{{loot|Rare|Hammer of the Penitent}}<br/>
  +
|
  +
|
  +
|
  +
{{loot|Rare|Warp Engineer's Prismatic Chain}}
  +
|-
  +
|[[Nethermancer Sepethrea]] <br/>(Normal and Heroic)
  +
|
  +
|
  +
|
  +
|
  +
{{loot|Rare|Cosmic Lifeband}}<br/>
  +
{{loot|Rare|Manual of the Nethermancer}}
  +
|- class="alt"
  +
|[[Pathaleon the Calculator]] <br/>(Normal and Heroic)
  +
|
  +
{{loot|Rare|Mana Wrath}}<br/>
  +
|
  +
{{loot|Rare|Incanter's Cowl}}
  +
|
  +
{{loot|Rare|Baba's Cloak of Arcanistry}}
  +
|
  +
|}
  +
</div>
  +
</div>
  +
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Botanica (70-72)</div>
  +
<div class="NavContent" style="display:none">
  +
{| class="darktable"
  +
|-
  +
!Boss
  +
!Weapons and Wands
  +
!Cloth
  +
!Other
  +
|-
  +
|[[Commander Sarannis]] <br/>(Normal and Heroic)
  +
|
  +
|
  +
{{loot|Rare|Prismatic Mittens of Mending}}
  +
|
  +
|- class="alt"
  +
|[[High Botanist Freywinn]] <br/>(Normal and Heroic)
  +
|
  +
|
  +
{{loot|Rare|Energis Armwraps}}
  +
|
  +
|-
  +
|[[Thorngrin the Tender]] <br/>(Normal and Heroic)
  +
|
  +
{{loot|Rare|Runed Dagger of Solace}}
  +
|
  +
|
  +
{{loot|Rare|Arcane Netherband}}<br/>
  +
|- class="alt"
  +
|[[Laj]] <br/>(Normal and Heroic)
  +
|
  +
|
  +
{{loot|Rare|Devil-Stitched Leggings}}
  +
|
  +
|-
  +
|[[Warp Splinter]] <br/>(Normal and Heroic)
  +
|
  +
{{loot|Rare|Warpstaff of Arcanum}}
  +
|
  +
{{loot|Rare|Incanter's Robe}}<br/>
  +
{{loot|Rare|Warp Infused Drape}}
  +
|
  +
{{loot|Rare|Bangle of Endless Blessings}}<br/>
  +
|}
  +
</div>
  +
</div>
  +
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Arcatraz (70-72)</div>
  +
<div class="NavContent" style="display:none">
  +
{| class="darktable"
  +
|-
  +
!Boss
  +
!Weapons and Shields
  +
!Cloth
  +
!Back
  +
!Other
  +
|-
  +
|[[Zereketh the Unbound]] <br/>(Normal and Heroic)
  +
|
  +
|
  +
{{loot|Rare|Mana-Sphere Shoulderguards}}
  +
|
  +
{{loot|Rare|Cloak of Scintillating Auras}}
  +
|
  +
|- class="alt"
  +
|[[Wrath-Scryer Soccothrates]]<br/>(Normal and Heroic)
  +
|
  +
{{loot|Rare|Warmaul of Infused Light}}
  +
|
  +
|
  +
{{loot|Rare|Gloves of the Unbound}}<br/>
  +
{{loot|Rare|The Sleeper's Cord}}
  +
|
  +
{{loot|Rare|Ryngo's Band of Ingenuity}}
  +
|-
  +
|[[Dalliah the Doomsayer]]<br/>(Normal and Heroic)
  +
|
  +
{{loot|Rare|Nether Core's Control Rod}}<br/>
  +
|
  +
|
  +
|
  +
{{loot|Rare|Lamp of Peaceful Repose}}
  +
|- class="alt"
  +
|[[Harbinger Skyriss]]<br/>(Normal and Heroic)
  +
|
  +
|
  +
{{loot|Rare|Hallowed Crown}}<br/>
  +
{{loot|Rare|Hood of Oblivion}}<br/>
  +
{{loot|Rare|Sigil-Laced Boots}}
  +
|
  +
|
  +
{{loot|Rare|Choker of Fluid Thought}}<br/>
  +
{{loot|Rare|Lamp of Peaceful Radiance}}<br/>
  +
{{loot|Rare|Shiffar's Nexus-Horn}}
  +
|}
  +
</div>
  +
</div>
  +
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Shattered Halls (70-72)</div>
  +
<div class="NavContent" style="display:none">
  +
{| class="darktable"
  +
|-
  +
!Boss
  +
!Weapons and Wands
  +
!Cloth
  +
!Other
  +
|-
  +
|[[Grand Warlock Nethekurse]] <br/>(Normal and Heroic)
  +
|
  +
|
  +
{{loot|Rare|Bands of Nethekurse}}
  +
|
  +
|- class="alt"
  +
|[[Warbringer O'mrogg]] <br/>(Normal and Heroic)
  +
|
  +
{{loot|Rare|Runesong Dagger}}<br/>
  +
|
  +
{{loot|Rare|Jeweled Boots of Sanctification}}
  +
|
  +
|-
  +
|[[Warchief Kargath Bladefist]] <br/>(Normal and Heroic)
  +
|
  +
{{loot|Rare|Lightsworn Hammer}}<br/>
  +
{{loot|Rare|Nexus Torch}}
  +
|
  +
{{loot|Rare|Gloves of Oblivion}}<br/>
  +
{{loot|Rare|Hallowed Handwraps}}
  +
|
  +
{{loot|Rare|Hortus' Seal of Brilliance}}<br/>
  +
|}
  +
</div>
  +
</div>
  +
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Steamvault (70-72)</div>
  +
<div class="NavContent" style="display:none">
  +
{| class="darktable"
  +
|-
  +
!Boss
  +
!Weapons and Wands
  +
!Cloth
  +
!Back
  +
!Other
  +
|-
  +
|[[Hydromancer Thespia]] <br/>(Normal and Heroic)
  +
|
  +
|
  +
{{loot|Rare|Incanter's Gloves}}
  +
|
  +
{{loot|Rare|Cloak of Whispering Shells}}
  +
|
  +
{{loot|Rare|Scintillating Coral Band}}<br/>
  +
|- class="alt"
  +
|[[Mekgineer Steamrigger]] <br/>(Normal and Heroic)
  +
|
  +
{{loot|Rare|Serpentcrest Life-Staff}}
  +
|
  +
|
  +
|
  +
|-
  +
|[[Warlord Kalithresh]] <br/>(Normal and Heroic)
  +
|
  +
|
  +
{{loot|Rare|Incanter's Pauldrons}}<br/>
  +
{{loot|Rare|Sash of Serpentra}}<br/>
  +
{{loot|Rare|Vermillion Robes of the Dominant}}
  +
|
  +
|
  +
|}
  +
</div>
  +
</div>
  +
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Shadow Labs (70-72)</div>
  +
<div class="NavContent" style="display:none">
  +
{| class="darktable"
  +
|-
  +
!Boss
  +
!Weapons and Wands
  +
!Cloth
  +
!Other
  +
|-
  +
|[[Ambassador Hellmaw]] <br/>(Normal and Heroic)
  +
|
  +
{{loot|Rare|Soul-Wand of the Aldor}}
  +
|
  +
{{loot|Rare|Jaedenfire Gloves of Annihilation}}
  +
|
  +
|- class="alt"
  +
|[[Blackheart the Inciter]] <br/>(Normal and Heroic)
  +
|
  +
{{loot|Rare|Wand of the Netherwing}}
  +
|
  +
|
  +
|-
  +
|[[Grandmaster Vorpil]] <br/>(Normal and Heroic)
  +
|
  +
|
  +
{{loot|Rare|Hallowed Pauldrons}}
  +
|
  +
{{loot|Rare|Jewel of Charismatic Mystique}}<br/>
  +
|- class="alt"
  +
|[[Murmur]]<br/>(Normal and Heroic)
  +
|
  +
{{loot|Rare|Greatsword of Horrid Dreams}}<br/>
  +
{{loot|Rare|Silvermoon Crest Shield}}<br/>
  +
|
  +
{{loot|Rare|Hallowed Garments}}<br/>
  +
{{loot|Rare|Robe of Oblivion}}<br/>
  +
{{loot|Rare|Silent Slippers of Meditation}}<br/>
  +
{{loot|Rare|Spaulders of Oblivion}}
  +
|
  +
|}
  +
</div>
  +
</div>
  +
</div>
  +
</div>
  +
  +
  +
= Player-Created Character Stats =
  +
<div class="NavFrame" style="border: none;">
  +
<div class="NavHead">Show --></div>
  +
<div class="NavContent" style="display:none">
  +
Kudos to Gourra for the character sheet.
  +
  +
{| style="background: #000; border: 3px #000 solid; border-spacing: 0; font-size: 90%; moz-border-radius:0.5em 0" cellspacing="0" align="left"
  +
|-
  +
{{3D Cell|align=center|css=-moz-border-radius-topleft:0.5em|attr=rowspan="2" colspan="3"}} '''Character'''
  +
{{3D Cell|align=center|attr=rowspan="2"}} '''Server'''
  +
{{3D Cell|align=center|attr=rowspan="2"}} '''Guild'''
  +
{{3D Cell|align=center|attr=colspan="4"}} '''Spec'''
  +
{{3D Cell|align=center|attr=colspan="8"|css=-moz-border-radius-topright:0.5em}} '''Skills'''
  +
|-
  +
{{3D Cell|align=center|attr=colspan="2"}} '''Main'''
  +
{{3D Cell|align=center|attr=colspan="2"}} '''Off'''
  +
{{3D Cell|align=center|attr=colspan="4"}} '''Professions'''
  +
{{3D Cell|align=center}} [[File:APB Skill Cooking.png|link=Cooking]]
  +
{{3D Cell|align=center}} [[File:APB Skill First Aid.png|link=First Aid]]
  +
{{3D Cell|align=center}} [[File:APB Skill Fishing.png|link=Fishing]]
  +
{{3D Cell|align=center}} [[File:APB Skill Riding.png|link=Riding]]
  +
|-
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black|join=right}} {{RaceIcon|NightElf|Female}}{{ClassIcon|Druid}}
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black|join=both}} <span class="plainlinks">[http://www.wowarmory.com/character-sheet.xml?r=Antonidas&n=Shapy <span style="color:black">Shapy, Guardian of Cenarius</span>]</span>
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black|join=left|align=right}} 80
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black}} [[Server:Antonidas|<span style="color:black">Antonidas</span>]]
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black}} <span class="plainlinks">[http://wowarmory.com/guild-info.xml?r=Antonidas&gn=Rat+Lab <span style="color:black">Rat Lab</span>]</span>
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black|join=right}} [[File:APB Druid Restoration.png|link=Druid talents#Restoration|Restoration]]
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black|join=left|align=center}} 14/0/57
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black|join=right}} [[File:APB Druid Feral Combat.png|link=Druid talents#Feral|Feral]]
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black|join=left|align=center}} 0/54/17
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black|join=right}} {{User:ArmoryProfileBot/Profession|Alchemy}}
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black|join=left|align=center}} 450
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black|join=right}} {{User:ArmoryProfileBot/Profession|Engineering}}
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black|join=left|align=center}} 450
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black|align=center}} 450
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black|align=center}} 419
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black|align=center}} 300
  +
{{3D Cell|#ff7d0a|#dd6c09|#bb5c07|black|align=center}} 300
  +
|-
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black|join=right}} {{RaceIcon|Human|Female}}{{ClassIcon|Rogue}}
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black|join=both}} <span class="plainlinks">[http://www.wowarmory.com/character-sheet.xml?r=Antonidas&n=Cadasune <span style="color:black">Bloodsail Admiral Cadasune</span>]</span>
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black|join=left|align=right}} 80
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black}} [[Server:Antonidas|<span style="color:black">Antonidas</span>]]
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black}} <span class="plainlinks">[http://wowarmory.com/guild-info.xml?r=Antonidas&gn=Rat+Lab <span style="color:black">Rat Lab</span>]</span>
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black|join=right}} [[File:APB Rogue Combat.png|link=Rogue_talents#Combat|Combat]]
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black|join=left|align=center}} 31/40/0
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black|join=right}}
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black|join=left|align=center}}
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black|join=right}} {{User:ArmoryProfileBot/Profession|Enchanting}}
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black|join=left|align=center}} 450
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black|join=right}} {{User:ArmoryProfileBot/Profession|Engineering}}
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black|join=left|align=center}} 450
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black|align=center}} 376
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black|align=center}} 450
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black|align=center}}
  +
{{3D Cell|#fff569|#ddd45b|#bbb44d|black|align=center}} 300
  +
|-
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black|join=right}} {{RaceIcon|NightElf|Female}}{{ClassIcon|Death Knight}}
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black|join=both}} <span class="plainlinks">[http://www.wowarmory.com/character-sheet.xml?r=Antonidas&n=Enipyrn <span style="color:black">Merrymaker Enipyrn</span>]</span>
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black|join=left|align=right}} 80
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black}} [[Server:Antonidas|<span style="color:black">Antonidas</span>]]
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black}} <span class="plainlinks">[http://wowarmory.com/guild-info.xml?r=Antonidas&gn=Rat+Lab <span style="color:black">Rat Lab</span>]</span>
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black|join=right}} [[File:APB Deathknight Blood.png|link=Death knight talents#Blood|Blood]]
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black|join=left|align=center}} 37/5/29
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black|join=right}} [[File:APB Deathknight Frost.png|link=Death knight talents#Frost|Frost]]
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black|join=left|align=center}} 0/51/20
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black|join=right}} {{User:ArmoryProfileBot/Profession|Herbalism}}
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black|join=left|align=center}} 450
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black|join=right}} {{User:ArmoryProfileBot/Profession|Skinning}}
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black|join=left|align=center}} 450
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black|align=center}} 387
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black|align=center}} 405
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black|align=center}}
  +
{{3D Cell|#c41f3b|#a31a31|#801426|black|align=center}} 300
  +
|-
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black|join=right}} {{RaceIcon|Gnome|Female}}{{ClassIcon|Mage}}
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black|join=both}} <span class="plainlinks">[http://www.wowarmory.com/character-sheet.xml?r=Antonidas&n=Pemizea <span style="color:black">Pemizea the Noble</span>]</span>
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black|join=left|align=right}} 80
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black}} [[Server:Antonidas|<span style="color:black">Antonidas</span>]]
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black}} <span class="plainlinks">[http://wowarmory.com/guild-info.xml?r=Antonidas&gn=Rat+Lab <span style="color:black">Rat Lab</span>]</span>
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black|join=right}} [[File:APB Mage Frost.png|link=Mage talents#Frost|Frost]]
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black|join=left|align=center}} 18/0/53
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black|join=right}} [[File:APB Mage Fire.png|link=Mage talents#Fire|Fire]]
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black|join=left|align=center}} 0/56/15
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black|join=right}} {{User:ArmoryProfileBot/Profession|Mining}}
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black|join=left|align=center}} 412
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black|join=right}} {{User:ArmoryProfileBot/Profession|Engineering}}
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black|join=left|align=center}} 442
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black|align=center}} 40
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black|align=center}} 291
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black|align=center}} 6
  +
{{3D Cell|#69ccf0|#5bb1d0|#4d96b0|black|align=center}} 300
  +
|-
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black|join=right}} {{RaceIcon|Draenei|Female}}{{ClassIcon|Shaman}}
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black|join=both}} <span class="plainlinks">[http://www.wowarmory.com/character-sheet.xml?r=Antonidas&n=Ultai <span style="color:black">Brewmaster Ultai</span>]</span>
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black|join=left|align=right}} 80
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black}} [[Server:Antonidas|<span style="color:black">Antonidas</span>]]
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black}} <span class="plainlinks">[http://wowarmory.com/guild-info.xml?r=Antonidas&gn=Rat+Lab <span style="color:black">Rat Lab</span>]</span>
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black|join=right}} [[File:APB Shaman Restoration.png|link=Shaman talents#Restoration|Restoration]]
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black|join=left|align=center}} 0/17/54
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black|join=right}} [[File:APB Shaman Elemental Combat.png|link=Shaman talents#Elemental|Elemental Combat]]
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black|join=left|align=center}} 54/16/1
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black|join=right}} {{User:ArmoryProfileBot/Profession|Jewelcrafting}}
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black|join=left|align=center}} 455
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black|join=right}} {{User:ArmoryProfileBot/Profession|Tailoring}}
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black|join=left|align=center}} 443
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black|align=center}} 37
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black|align=center}}
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black|align=center}}
  +
{{3D Cell|#2459ff|#1f4ddd|#1a41bb|black|align=center}} 225
  +
|-
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black|join=right}} {{RaceIcon|Gnome|Female}}{{ClassIcon|Warlock}}
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black|join=both}} <span class="plainlinks">[http://www.wowarmory.com/character-sheet.xml?r=Antonidas&n=Ciminaria <span style="color:black">Ciminaria</span>]</span>
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black|join=left|align=right}} 74
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black}} [[Server:Antonidas|<span style="color:black">Antonidas</span>]]
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black}} <span class="plainlinks">[http://wowarmory.com/guild-info.xml?r=Antonidas&gn=Rat+Lab <span style="color:black">Cooky Trainer</span>]</span>
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black|join=right}} [[File:APB Warlock Demonology.png|link=Warlock talents#Demonology|Demonlogy]]
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black|join=left|align=center}} 13/50/0 +2
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black|join=right}} [[File:APB Warlock Destruction.png|link=Warlock talents#Destruction|Destruction]]
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black|join=left|align=center}} 0/13/52
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black|join=right}} {{User:ArmoryProfileBot/Profession|Herbalism}}
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black|join=left|align=center}} 450
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black|join=right}} {{User:ArmoryProfileBot/Profession|Inscription}}
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black|join=left|align=center}} 445
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black|align=center}} 63
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black|align=center}} 400
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black|align=center}}
  +
{{3D Cell|#9482c9|#8071af|#6c5f94|black|align=center}} 225
  +
|-
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black|join=right}} {{RaceIcon|Gnome|Female}}{{ClassIcon|Warrior}}
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black|join=both}} <span class="plainlinks">[http://www.wowarmory.com/character-sheet.xml?r=Antonidas&n=Filfa <span style="color:black">Filfa</span>]</span>
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black|join=left|align=right}} 44
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black}} [[Server:Antonidas|<span style="color:black">Antonidas</span>]]
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black}} <span class="plainlinks">[http://wowarmory.com/guild-info.xml?r=Antonidas&gn=Rat+Lab <span style="color:black">Rat Lab</span>]</span>
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black|join=right}} [[File:APB Warrior Protection.png|link=Warrior talents#Protection|Protection]]
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black|join=left|align=center}} 0/0/35
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black|join=right}}
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black|join=left|align=center}}
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black|join=right}} {{User:ArmoryProfileBot/Profession|Mining}}
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black|join=left|align=center}} 282
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black|join=right}} {{User:ArmoryProfileBot/Profession|Blacksmithing}}
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black|join=left|align=center}} 260
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black|align=center}} 38
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black|align=center}} 240
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black|align=center}}
  +
{{3D Cell|#c79c6e|#ac875f|#927250|black|align=center}} 150
  +
|-
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black|join=right}} {{RaceIcon|Draenei|Female}}{{ClassIcon|Paladin}}
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black|join=both}} <span class="plainlinks">[http://www.wowarmory.com/character-sheet.xml?r=Antonidas&n=Jadeen <span style="color:black">Jadeen</span>]</span>
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black|join=left|align=right}} 21
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black}} [[Server:Antonidas|<span style="color:black">Antonidas</span>]]
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black}} <span class="plainlinks">[http://wowarmory.com/guild-info.xml?r=Antonidas&gn=Rat+Lab <span style="color:black">Rat Lab</span>]</span>
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black|join=right}} [[File:APB Paladin Holy.png|link=Paladin talents#Holy|Holy]]
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black|join=left|align=center}} 12/0/0
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black|join=right}}
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black|join=left|align=center}}
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black|join=right}} {{User:ArmoryProfileBot/Profession|Mining}}
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black|join=left|align=center}} 111
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black|join=right}} {{User:ArmoryProfileBot/Profession|Engineering}}
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black|join=left|align=center}} 94
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black|align=center}} 39
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black|align=center}} 75
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black|align=center}}
  +
{{3D Cell|#f58cba|#d47aa1|#b46789|black|align=center}} 75
  +
|-
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black|join=right}} {{RaceIcon|Dwarf|Female}}{{ClassIcon|Priest}}
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black|join=both}} <span class="plainlinks">[http://www.wowarmory.com/character-sheet.xml?r=Antonidas&n=Alissa <span style="color:black">Alissa</span>]</span>
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black|join=left|align=right}} 6
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black}} [[Server:Antonidas|<span style="color:black">Antonidas</span>]]
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black}} <span class="plainlinks">[http://wowarmory.com/guild-info.xml?r=Antonidas&gn=Rat+Lab <span style="color:black">Rat Lab</span>]</span>
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black|join=right}} [[File:APB Priest Discipline.png|link=Priest talents#Discipline|Discipline]]
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black|join=left|align=center}} 0/0/0
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black|join=right}}
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black|join=left|align=center}}
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black|join=right}} {{User:ArmoryProfileBot/Profession|Tailoring}}
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black|join=left|align=center}} 0
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black|join=right}} {{User:ArmoryProfileBot/Profession|Tailoring}}
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black|join=left|align=center}} 0
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black|align=center}}
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black|align=center}}
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black|align=center}}
  +
{{3D Cell|#ffffff|#dddddd|#bbbbbb|black|align=center}}
  +
|-
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black|join=right}} {{RaceIcon|Worgen|Female}}{{ClassIcon|Hunter}}
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black|join=both}} <span class="plainlinks">[http://www.wowarmory.com/character-sheet.xml?r=Antonidas&n= <span style="color:black"> </span>]</span>
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black|join=left|align=right}} 0
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black}} [[Server:Antonidas|<span style="color:black">Antonidas</span>]]
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black}} <span class="plainlinks">[http://wowarmory.com/guild-info.xml?r=Antonidas&gn=Rat+Lab <span style="color:black">Rat Lab</span>]</span>
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black|join=right}} [[File:APB Hunter Survival.png|link=Hunter talents#Survival|Survival]]
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black|join=left|align=center}} 0/0/0
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black|join=right}}
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black|join=left|align=center}}
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black|join=right}} {{User:ArmoryProfileBot/Profession|Skinning}}
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black|join=left|align=center}} 15
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black|join=right}} {{User:ArmoryProfileBot/Profession|Leatherworking}}
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black|join=left|align=center}} 0
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black|align=center}}
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black|align=center}}
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black|align=center}}
  +
{{3D Cell|#abd473|#94b763|#7d9b54|black|align=center}}
  +
|}
  +
  +
</div>
  +
</div>

Revision as of 23:09, 26 October 2010

User Templates

Spell Holy SenseUndead This user's character has run others through Scholomance so many times that the user got exalted with the Argent Dawn.




Top Links

Enchantments by Slot

Thorium Brotherhood

Temple of Ahn'Qiraj quest loot

(Wowhead) Cataclysm Currency Exchange Calculator

Gems

Honor System Conversion Table

Outlands Non-Heroic Instance Loot Tables


Player-Created Character Stats