<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Casters R Us</title>
	<atom:link href="http://www.castersrus.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.castersrus.com</link>
	<description>Pew Pew</description>
	<lastBuildDate>Wed, 21 Apr 2010 17:47:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>A Short Break&#8230;and Then Some</title>
		<link>http://www.castersrus.com/?p=88</link>
		<comments>http://www.castersrus.com/?p=88#comments</comments>
		<pubDate>Wed, 21 Apr 2010 17:45:14 +0000</pubDate>
		<dc:creator>Basta</dc:creator>
				<category><![CDATA[Basta]]></category>

		<guid isPermaLink="false">http://www.castersrus.com/?p=88</guid>
		<description><![CDATA[ So, obviously it&#8217;s been awhile since we&#8217;ve posted anything on here and I&#8217;d like to change that.  School is getting less crazy, and as we draw ever closer to the Summer and the release of Cataclysm, I feel that I need some sort of creative output.  Obviously I&#8217;d like ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.castersrus.com/wp-content/uploads/2010/04/spriest.jpg"><img class="alignleft size-full wp-image-87" title="spriest" src="http://www.castersrus.com/wp-content/uploads/2010/04/spriest.jpg" alt="" width="126" height="124" /></a> So, obviously it&#8217;s been awhile since we&#8217;ve posted anything on here and I&#8217;d like to change that.  School is getting less crazy, and as we draw ever closer to the Summer and the release of Cataclysm, I feel that I need some sort of creative output.  Obviously I&#8217;d like some more help (if anyone even reads this), so make sure to drop me a line either via <a href="mailto: infiniz@castersrus.com">e-mail</a> or <a href="http://www.twitter.com/infiniz" target="_blank">Twitter</a>.</p>
<p>Since I&#8217;ve been away, I missed posting about the new Cataclysm changes coming for the Priests.  Not a whole lot to talk about really since it&#8217;s all subject to change anyway.</p>
<p>I&#8217;ve also recently (few months ago) transferred back to my original server, Azuremyst-US, to be back in the raiding scene and be with some old friends/guildies.  So far, eveything is working out great, but we are falling behind in the race to clear Icecrown Citadel Hard Modes.  Right now, our main problem is the lack of any sort of set-group of 25 people who consistently show up to raid.  We&#8217;ll get people to show up Tuesday &amp; Wednesday (a.k.a Free Loot Night), but then people will have conflicts/connection problems/excuses for Thursday and Sunday.  The last two weeks, we&#8217;ve cleared up to Lich King, but have had (maybe) a total of 45 minutes of time on him.  Obviously that isn&#8217;t enough, but what can we do when we don&#8217;t have people show up.</p>
<p>Again, if your a caster and would like to blog a bit (maybe once a week or even bi-weekly is fine), let me know!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.castersrus.com/?feed=rss2&amp;p=88</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ask the Raiders: Consumables?</title>
		<link>http://www.castersrus.com/?p=70</link>
		<comments>http://www.castersrus.com/?p=70#comments</comments>
		<pubDate>Sun, 15 Nov 2009 21:59:16 +0000</pubDate>
		<dc:creator>Basta</dc:creator>
				<category><![CDATA[Ask the Raiders]]></category>

		<guid isPermaLink="false">http://www.castersrus.com/?p=70</guid>
		<description><![CDATA[Ask the Raiders is a short article I&#8217;ll run each week, asking you (the Raiders) something that pertains to your raids/guilds/play style.  I&#8217;m looking forward to hearing some of your answers and I hope you can provide me with some valuable insight on how other players take the World we ...]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>Ask the Raiders is a short article I&#8217;ll run each week, asking you (the Raiders) something that pertains to your raids/guilds/play style.  I&#8217;m looking forward to hearing some of your answers and I hope you can provide me with some valuable insight on how other players take the World we all play in.</em></p></blockquote>
<p style="padding-left: 30px;">
<p>So, there you are at the start of the raid.  You get their early.  You&#8217;ve read up on the bosses for tonights raid.  You&#8217;re ready to grab some badges and loot.  Now, did you forget anything  Think real hard&#8230;</p>
<p style="padding-left: 30px;">WHERE ARE YOUR CONSUMABLES?</p>
<p>If there is one thing that &#8216;irks&#8217; me more than anything, it&#8217;s when people come to Progression Hard Mode content, and they don&#8217;t bring food, flasks, or potions.  There is no excuse for not having them.  In 2 hours, I can do my Cooking, Jewelcrafting, and Fishing Daily along with 22 other Daily Quests in Icecrown and make ~300G.  I know some of you are saying &#8216;Well, I don&#8217;t have an extra 2 hours to play&#8217;, then perhaps try and make an arrangement with the Guild leader or someone else to perhaps give you a few extra Flasks/Potions/etc.  It&#8217;s not fair for 24 other people to show up with consumables and you be the only one without them.</p>
<p>I&#8217;m not a Guild or Raid leader, but I do like to make sure everyone is ready, so I use an nifty little addon called <a title="RaidBuffStatus" href="http://wow.curse.com/downloads/wow-addons/details/raidbuffstatus.aspx" target="_blank">RaidBuffStatus</a>.  It monitors all buffs, and determines what people are missing, and which people are capable of giving out those buffs.  My personal favorite (and my guild leader&#8217;s most hated) feature is when the RBS whispers players who are missing a food buff before the Fish Feast expires.  This let&#8217;s them know that someone is watching and trying to hold them accountable.  This addon also allows me to broadcast to the raid what players are missing which buffs.</p>
<p>I usually just let the slackers slip buy, unless it&#8217;s a food buff (there&#8217;s no excuse to miss that), so maybe a Mage is missing Gift of the Wild and the lead healer doesn&#8217;t have Kings, or maybe the Boomkin only popped 1 elixir instead of two.</p>
<p>Now, here is what I&#8217;m asking all of you.  Do you not worry about it?  Do you inform the Raid/Guild leader or officers?  Do you ask the person directly?  Are you one of those people who aren&#8217;t fully buffed and don&#8217;t worry about it?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.castersrus.com/?feed=rss2&amp;p=70</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>EventHorizon Course 4: Mucking With the Class Config</title>
		<link>http://www.castersrus.com/?p=57</link>
		<comments>http://www.castersrus.com/?p=57#comments</comments>
		<pubDate>Sun, 15 Nov 2009 05:05:59 +0000</pubDate>
		<dc:creator>Taroven</dc:creator>
				<category><![CDATA[Interface]]></category>

		<guid isPermaLink="false">http://www.castersrus.com/?p=57</guid>
		<description><![CDATA[While adjusting EventHorizon&#8217;s look and feel is pretty straightforward, many users have been completely stumped when trying to add or remove spells from the addon. This is, in part, because the spell bar coding hasn&#8217;t been documented in quite a while.
At one point each class config file (more on those ...]]></description>
			<content:encoded><![CDATA[<p>While adjusting EventHorizon&#8217;s <a href="http://www.castersrus.com/?p=49">look and feel</a> is pretty straightforward, many users have been completely stumped when trying to add or remove spells from the addon. This is, in part, because the spell bar coding hasn&#8217;t been documented in quite a while.</p>
<p>At one point each class config file (more on those in a moment) had instructions within. However, as EventHorizon&#8217;s API grew, so did the instructions &#8211; If I were to include them within the files now, the instructions would be longer than the configs!</p>
<p>In today&#8217;s article we&#8217;ll be going over each available setting. A certain level of Lua knowledge will be needed for this, which we covered for the most part in the previous post. Assuming you&#8217;ve read and understand it, all that&#8217;s needed is a quick interlude to explain how the spell config works.</p>
<h2>Lua Recap: The Spell Config</h2>
<p>EventHorizon&#8217;s class config files are located in <strong>WoW/Interface/AddOns/EventHorizon_<em>ClassName</em></strong>, where <em><strong>ClassName</strong></em> is, of course, the class you intend to change. These files are only loaded if you are playing that class, and are loaded after the general config. This can be useful later on, which I&#8217;ll cover in the next section.</p>
<p>The class config creates a function which is called but left <em>undefined</em> within EventHorizon&#8217;s core. This function, <em>EventHorizon:InitializeClass()</em>, is a <em>method</em> which assigns the spells to a given class when played.</p>
<p><strong>EventHorizon:InitializeClass()</strong> calls multiple instances of another function, <em>self:NewSpell()</em>. NewSpell takes the table that it is given as a <em>parameter</em> (more on that in a moment) and uses that information to create the spell within EH.</p>
<p>The basics:</p>
<p><strong>self</strong> is a shortcut for the <em>table that we&#8217;re working with</em>. In the case of the class config, <em>self</em> can be replaced with <em>EventHorizon</em> freely. There&#8217;s no real reason to use <em>self</em> within the class config aside from being shorter to type, but I feel that it makes it a tiny bit easier to see what&#8217;s going on from a novice perspective.</p>
<p>A <strong>function</strong> is, briefly, a <em>list of instructions to perform</em> with optional <em>returns and parameters</em>. Since this article&#8217;s scope is limited to the essentials for the spell config, we won&#8217;t delve into it much. It&#8217;s enough to know how a function works.</p>
<blockquote><p>local Foobar <em>&#8211; If a value is not specified when declaring a local, the local defaults to &#8220;nil&#8221;.<br />
</em></p>
<p>local function DoThis() <em>&#8211; First declare the function.<br />
</em></p>
<p style="padding-left: 30px;">local Rawr = &#8220;lol&#8221; <em>&#8211; A local declared within a function <strong>cannot be accessed</strong> outside the current execution of the function. In other words, this line does absolutely nothing since we&#8217;re not doing anything with Rawr. If we tried to use Rawr later, Lua would spew an error.</em><br />
Foobar = Rawr</p>
<p>end <em>&#8211; Ending the function.<br />
</em></p></blockquote>
<p>Functions can also be used as if they are variables through the use of <strong>return</strong>s. Again, not delving into the topic too much since there&#8217;s a good bit to cover here, but be aware that anything below the <em>return </em>line in a class config file <em>will not be executed</em>.</p>
<p>A function aspect to be aware of in this case: <strong>parameters</strong>. Those parenthesis following a function may be used to provide a function with essential data. With the spell config, we&#8217;re giving <em>NewSpell</em> a table which is translated into usable information for EventHorizon&#8217;s core.</p>
<p>To recap it all&#8230;</p>
<p><strong>IntializeClass() </strong>is a function defined within the class config that, when executed, gives EH the spell information for the currently played class.</p>
<p><strong>NewSpell( <em>{table}</em> )</strong> is executed multiple times within <em>InitializeClass</em>, providing usable information to EH for each spell in order. This function uses a <em>table</em> as a <em>parameter</em> to do so.</p>
<p>Due to <em>InitializeClass</em> and <em>NewSpell</em> both existing within the EventHorizon global table, we can use <em>self</em> as a shortcut within <em>InitializeClass</em> for readability&#8217;s sake.</p>
<h2>Applying Knowledge: A Few Things To Do</h2>
<p>Knowledge is half the battle, or so they say. Now that we&#8217;ve got an understanding of how the class config <em>works</em>, we&#8217;ll take a deep look into <em>what can be done with it</em>.</p>
<p><strong>Myconfig</strong>: Since we&#8217;re making changes to essential aspects of EventHorizon here, we want to make sure that we&#8217;ve got a backup and that we don&#8217;t lose those changes in an update. <em>Myconfig</em> is an excellent way of doing that &#8211; Just like EH&#8217;s general config, make a copy of <em>config.lua</em> and rename that copy to <em>myconfig.lua</em>. You can&#8217;t just delete the contents like last time though, since we&#8217;re not just changing fields in a table.</p>
<p><strong>Using the class config as another general config</strong>: The class config files are loaded after EventHorizon&#8217;s core and config files. This lets you change things around in the class config without mucking with conditionals and all that. If you want to change settings or colors, just write in the appropriate code before the function call at the top of the file. You&#8217;ll notice that EH&#8217;s config is declared for your convenience.</p>
<p><strong>Deleting or moving spells</strong>: Easily done. If you want a bar to appear higher or lower in the frame, just move its NewSpell function accordingly. The spells are defined in the order which they appear in EH. To remove a spell from the frame completely, delete its NewSpell entry and you&#8217;re all set. Efforts have been made to label each spell with a preceding comment so that they can be found easily. <em>(Little note here, I&#8217;ve also tried to be as complete as possible when describing a bar. If you&#8217;re not sure why a bar is included in the first place, take a look at the config. Secondary effects have been applied to many, many otherwise pointless bars)</em></p>
<p>That&#8217;s all well and good. Let&#8217;s dig deeper and start changing things up.</p>
<h2>Finding a Spell ID</h2>
<p>You&#8217;ll need to know how to look up a Spell ID before adding or removing much from a bar. They can be found easily enough via <a href="http://www.wowhead.com/">WowHead</a>. To look one up you usually only need the spell&#8217;s name.</p>
<ul>
<li><em>Know what you&#8217;re looking for</em>. EventHorizon has the ability to look for <strong>any</strong> buff or debuff visible to you, including the effects of your equipped trinkets. The type of spell you&#8217;re looking up does matter when searching for it.</li>
<li>Know that EventHorizon looks up spells by <strong>name</strong> for the most part, but does require that the Spell ID is usable by EH. Certain IDs aren&#8217;t, which will be covered here.</li>
<li>If you&#8217;re looking for a <strong>usable ability or common buff/debuff</strong>, here&#8217;s how. We&#8217;ll use Rupture for this example:</li>
</ul>
<blockquote>
<ol>
<li>Type <strong>rupture</strong> into the search box. You&#8217;ll be greeted with a list of search results.</li>
<li>Since we&#8217;re looking for a <strong>usable ability</strong>, head to the <strong>Abilities</strong> tab and click one of the ranks.</li>
<li>Take a look at the <strong>URL bar of your browser</strong>. If we picked Rank 1, this would be <em>&#8220;http://www.wowhead.com/?spell=1943&#8243;.</em></li>
<li>The Spell ID is the number at the end.</li>
</ol>
</blockquote>
<ul>
<li>If you&#8217;re looking for the <strong>effect of a trinket</strong>, the process is a little more complicated. Let&#8217;s use a <strong>Fetish of Volatile Power</strong> for this, and assume we have no idea what the buff&#8217;s name is. The same can be done for talents.</li>
</ul>
<blockquote>
<ol>
<li>Search for <strong>fetish of volatile power</strong>. It should bring you straight to the trinket&#8217;s page.</li>
<li>Click on the <strong>tooltip line</strong> saying &#8220;Use: &#8230;&#8221;. This should bring you to another page.</li>
<li>We&#8217;re now looking at the <strong>trigger</strong> of the effect. This isn&#8217;t quite usable &#8211; EH will show a tiny marker when you use the trinket, but because the name of the trigger isn&#8217;t the same as its effect, we still need to dig deeper. Scroll down a little and look at the <strong>Spell Details</strong> section.</li>
<li>You should see a <strong>spell name</strong> and <strong>icon</strong> somewhere in there. Click on it and we&#8217;ll have the actual buff that&#8217;s applied when the trinket is used. For reference, you should be at <em>&#8220;http://www.wowhead.com/?spell=67743&#8243;, </em>looking at a spell named <strong>Volatility</strong>.</li>
<li>This is the one we want. The Spell ID is the set of numbers at the end. While this didn&#8217;t take long to look up, you&#8217;ll note that the information we needed was buried fairly deep. To make this a little easier in the future, you&#8217;ll want to know the name of the buff or debuff beforehand and search for it directly.</li>
</ol>
</blockquote>
<ul>
<li>If you&#8217;re looking for a <strong>glyph</strong>, the process is again a little different, but also shorter as long as you know what to look for. EH looks up glyphs <em>directly by ID</em> instead of by name, so we need exact information here. We&#8217;ll use <strong>Glyph of Life Tap</strong> in this case.</li>
</ul>
<blockquote>
<ol>
<li>Search for <strong>glyph of life tap</strong>. You should see three tabs: <strong>Items, Professions, </strong>and <strong>Uncategorized spells</strong>.</li>
<li>Head to the <strong>Uncategorized</strong> tab.</li>
<li>You should see two results there, both with the same name but different icons. One is the <strong>glyph application</strong>, one is the <strong>glyph when equipped</strong>. We want the equipped version. One way to tell is by looking at the tooltip &#8211; The glyph application has a cast time, while the equipped glyph does not. Another way is via the icon itself &#8211; Application has a unique icon, while the equipped glyph generally has a golden gear for its icon.</li>
<li>Once you&#8217;ve figured out which one the equipped glyph is, click it and find the Spell ID as normal. Again, it&#8217;s at the end of the URL.</li>
</ol>
</blockquote>
<h2>Working With The Config: Applied Knowledge</h2>
<p>Alright, so it&#8217;s been over 1500 words and I haven&#8217;t even started on the easy stuff. No more examples, on to the variables! Remember, these are case sensitive.</p>
<p>Note that if a variable is boolean, it may still act as if it were <em>true</em> due to how EH checks these settings, even if set to <em>nil</em>. This may change, but in the end it&#8217;s best to remove or comment out a line if it&#8217;s not required instead of setting its opposite.</p>
<ul>
<li><strong>spellID </strong>= <em>number </em>- The only required line for NewSpell. This sets the spell&#8217;s <em>icon, internal name, and Combat Log spellID</em> to keep track of. Any time you&#8217;re adding a new spell, you&#8217;ll need to use the steps above to find its ID, which usually goes here.</li>
<li><strong>cast </strong>= <em>boolean</em> &#8211; If this is present, EH displays a cast bar as appropriate for the primary spellID. Spells contained within <em>debuff </em>and <em>playerbuff</em> aren&#8217;t tracked with this. If a spell is channeled, use <em>channeled</em> instead.</li>
<li><strong>channeled </strong>= <em>boolean </em>- Cannot be used with <em>cast</em>. Tells EH that this spell is channeled and adjusts its logic accordingly.
<ul>
<li><strong>numhits </strong>= <em>number </em>- Optional variable for <em>channeled</em>, specifies the number of hits in a channeled ability. No effect if present and a spell is not tagged as channeled. If you&#8217;re trying to find the number of hits in the channeled ability, <em>duration/interval of hits</em> is the math to use.</li>
</ul>
</li>
<li><strong>cooldown </strong>= <em>boolean </em>- If present, tracks the cooldown of a spell. Same deal as <em>cast</em>, doesn&#8217;t track anything but the defined spell.</li>
<li><strong>requiredTalent </strong>= <em>table</em> = <em>{tab, index, requiredPoints}</em> &#8211; Tells EH to track talents for this bar. Talents may be found by your talent window or any of the talent calculators available online. The <em>tab</em> is a number from 1 to 3, found by counting left to right along the available talent pages for a class (For warriors, Arms = 1, Fury = 2, Protection = 3). The <em>index</em> can be found by counting the talents within a tab from <em>left to right, top to bottom</em>. Position within the tree doesn&#8217;t matter, you just need to count the icons. <em>requiredPoints</em> is optional, can be any number from zero to 5, and means &#8220;Only show this talent when it has this many points&#8221;. Setting the field to zero tells EH to only show a bar if the talent has no points applied to it.</li>
<li><strong>requiredGlyph</strong> = <em>number </em>- Can be used in combination with <em>requiredTalent</em>. Adds a glyph requirement to the bar using the equipped GlyphID (method to find is located above). Especially useful for Glyph of Life Tap.</li>
<li>
<div><strong>stance</strong> = <em>number</em> &#8211; Tells EH to only show a bar when in a specific stance or form. A Priest in Shadowform has a stance of 1. A Druid in Cat Form has a stance of 3. A Warrior in Defensive Stance has a stance of 2, so on, and so forth. At present there is no way to tell EH to <em>not</em> show a bar when in a specific stance, though there are plans to change that.</div>
</li>
<li><strong>auraunit</strong> = <em>string</em> &#8211; This field is present in every spell that EH tracks, and may be manually set. Buffs default to <em>&#8216;player&#8217;</em>, while debuffs default to <em>&#8216;target&#8217;</em>. This can be any unit able to be tracked via macros (pet, partyX, targettarget, focus, etc).</li>
<li><strong>playerbuff </strong>= <em>boolean or</em> <em>number or table </em>- Cannot be used with <em>debuff</em> for various reasons. Tells EH that this bar tracks <em>buffs</em> using the <em>UnitBuff(auraunit) </em>API and sets the <em>auraunit</em> to <em>&#8216;player&#8217;</em> unless otherwise specified. Shares optional variables with <em>debuff</em>. If set to true, tracks buffs of the <em>same name</em> as the primary spellID. If set to a number, tracks a single buff using that spellID. See instructions in the next entry for multiple tracked buffs.</li>
<li><strong>debuff </strong>= <em>boolean or</em> <em>number or table </em>- Cannot be used with <em>playerbuff</em> for the same various reasons. Tells EH that this bar tracks <em>debuffs</em> using the <em>UnitDebuff(auraunit)</em> API and sets the <em>auraunit </em>to <em>&#8216;target&#8217;</em> unless otherwise specified. Shares optional variables with <em>playerbuff</em>. If set to true, tracks debuffs of the <em>same name</em> as the primary spellID. If set to a number, tracks a single debuff using that spellID.
<ul>
<li>To track multiple buffs or debuffs on a bar, use an <em>iterated</em> <em>table</em> containing <em>{spellID1, spellID2, etc}</em>. Each entry in the table marks another spellID to track. Note that if multiple buffs or debuffs are tracked, only the primary spellID is capable of tracking periodic ticks <em>(other spells listed in the debuff/playerbuff field will be ignored as far as periodic effects are concerned)</em>. You cannot combine buffs and debuffs like this, sadly.</li>
<li><strong>dot </strong>= <em>number</em> &#8211; Seconds between periodic tick effects. Tells EH to watch for periodic tick events and display tick markers accordingly.
<ul>
<li><strong>cleu </strong>or <strong>event</strong> = <em>string or table</em> &#8211; Can be used with <em>channeled+numhits </em>as well, or really any spell that otherwise refuses to show up. Adds (does not override) a <em>combat log event</em> to track for ticks on this bar. This is useful for spells no handled in a standard fashion. Penance, for example, uses <em>SPELL_HEAL</em> as its tick event even though it is a channeled spell and should use <em>SPELL_PERIODIC_HEAL</em>. Only use this if you&#8217;ve exhausted all other options for getting periodic events working on a spell &#8211; It won&#8217;t break anything, but it does have an impact on performance. Multiple events may be added via an <em>iterated table</em> if needed.</li>
<li><strong>hasted</strong> = <em>number or table </em>= <em>glyphID or {talentTab,talentIndex}</em> &#8211; Added in EH v1.3, for Patch 3.3 support. Can be set to either a Glyph (using just the glyphID, no table) or a talent (using a table with the standard <em>tab,index</em> format). This setting adds in a little extra handling for the bar, allowing ticks to be quite a lot more accurate when they&#8217;re affected by haste.</li>
<li><strong>refreshable </strong>= <em>boolean</em> &#8211; Changes the logic used for spell refreshes and stores extra information between target swaps. If this value is present, periodic tick intervals will <em>not</em> be reset when a spell is refreshed and no gap will be drawn in the bar showing that it was. This is mainly used when a spell can have its duration extended or refreshed by <em>another</em> spell (Shadow Priests with Mind Flay and SWP, Affliction Warlocks with Haunt and Corruption, Rogues with Rupture and Glyph of Backstab, Deadly Poison, etc). Note that this does not affect re-casts, so manually refreshing a spell instead of using another will reset ticks and such accordingly.</li>
</ul>
</li>
<li><strong>unique</strong> = <em>boolean</em> &#8211; Tells EH to track auras from <em>other players</em> in addition to your own. Especially useful for things like Mortal Strike/Wound Poison, Trauma/Mangle, etc. Can be used to great effect with multiple specified auras, or alone for truly unique effects such as Weakened Soul.</li>
<li><strong>minstacks</strong> = <em>number</em> &#8211; Used currently in the Mage config for Arcane Blast if you&#8217;d like an example. Sets a minimum number of stacks before the aura&#8217;s bar is shown.</li>
<li><strong>internalcooldown </strong>= <em>number</em> &#8211; Not all spells have cooldowns that are visible to EH. For example, if tracking a trinket or Cheat Death, there is no way to see the cooldowns involved. <em>internalcooldown </em>solves this by placing a cooldown line as soon as the aura is detected. While not entirely accurate, especially for multiple tracked spells, it works pretty well. Most trinkets with proc effects have an <em>internalcooldown </em>of 45, most usable trinkets are 120, etc. Setting this to <em>true</em> won&#8217;t do you any good. Requires an aura to track, and is thus unavailable for bars tracking only cooldown.</li>
<li><strong>glyphrefresh </strong>= <em>table = {numRefreshes, GlyphID, TriggerName} <strong> &#8211; </strong></em>A complex var that adds glyph-based spell refresh tracking (Glyph of Backstab extends Rupture up to 3 times per usage). <em>numRefreshes</em> is the maximum number of refreshes per primary spell cast. <em>GlyphID</em> can be obtained using the instructions above (this will not track extensions without a glyph). <em>TriggerName</em> is the exact name of the spell that triggers the extension.</li>
<li><strong>textureID </strong>= <em>number</em> &#8211; Displays the buff/debuff bar <em>only</em> if the aura&#8217;s icon matches this. When a spell has multiple effects of the same name but differing icons, this gives you the ability to choose which is shown on the bar. See the Druid config for examples (Eclipse).</li>
</ul>
</li>
</ul>
<p>Hopefully I&#8217;ve covered everything here. Happy modding, and we&#8217;ll see you next time!</p>
<p>Previous – <a href="../?p=49">EventHorizon Course 3: Pimping EH</a></p>
<p><em>You can download EventHorizon <a href="http://www.wowinterface.com/downloads/info14878-EventHorizonContinued.html">here</a>.<br />
If you enjoy the addon, remember that donations are what keeps it alive and evolving. I no longer play the game any more than necessary for testing purposes, and cannot spare the money to keep my WoW account running for that purpose alone.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.castersrus.com/?feed=rss2&amp;p=57</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>EventHorizon Course 3: Pimping EH</title>
		<link>http://www.castersrus.com/?p=49</link>
		<comments>http://www.castersrus.com/?p=49#comments</comments>
		<pubDate>Sat, 07 Nov 2009 05:32:10 +0000</pubDate>
		<dc:creator>Taroven</dc:creator>
				<category><![CDATA[Interface]]></category>

		<guid isPermaLink="false">http://www.castersrus.com/?p=49</guid>
		<description><![CDATA[In the previous two entries, we covered what EventHorizon is and does, and what it doesn&#8217;t do. If you&#8217;ve been following this blog, you&#8217;ve likely already used (or just started using) EH. And, if you&#8217;re like me, you&#8217;re probably wondering where all the options are at.
Lua: Your Friendly Neighborhood Scripting ...]]></description>
			<content:encoded><![CDATA[<p>In the previous two entries, we covered what <a href="http://www.wowinterface.com/downloads/info14878-EventHorizonContinued.html">EventHorizon</a> is and <a href="http://www.castersrus.com/?p=19">does</a>, and what it <a href="http://www.castersrus.com/?p=26">doesn&#8217;t do</a>. If you&#8217;ve been following this blog, you&#8217;ve likely already used (or just started using) EH. And, if you&#8217;re like me, you&#8217;re probably wondering where all the options are at.</p>
<h2>Lua: Your Friendly Neighborhood Scripting Language</h2>
<p>All of EventHorizon&#8217;s configuration is done through <a href="http://en.wikipedia.org/wiki/Lua_%28programming_language%29"><em>Lua</em></a>, which is the language of WoW&#8217;s addons. Before we go rummaging through the config files, you&#8217;ll probably want to know some of Lua&#8217;s absolute basics.</p>
<p>I&#8217;ll skip the lengthy introductions and head straight for the relevant portions. First, some jargon.</p>
<p>A note on all of this: Lua is <strong>case sensitive</strong>. If you miss capitalizing a letter, Lua will spew an error at you.</p>
<p>A <strong>comment</strong>, signified by a double-dash ( <strong>&#8211; </strong>), is a line or bit of text that is not executed by the interpreter (in this case, WoW). Comments give you the ability to let yourself and everyone else know what a particular chunk of code does.</p>
<p><strong>Comment blocks</strong> are multiple-line comments, signified by a leading double-dash and double-bracket ( <strong>&#8211;[[ </strong>) and ending with another set of double brackets ( <strong>]]&#8211;</strong> ). Note that the tailing comment dashes aren&#8217;t necessary, but it&#8217;s not a bad idea to write them in.</p>
<p>A <strong>local</strong> is a portable, named, re-assignable chunk of information which is <em>only used within the function or file it was created in</em>. More on how they&#8217;re used in a second.</p>
<p>A <strong>single = sign</strong> sets a chunk of information to something else.<br />
A <strong>double == sign</strong> checks if one chunk of information is an <em>exact match</em> to another.<br />
A <strong>tilde followed by a single = sign </strong>( <strong>~= </strong>) checks if a chunk of information <em>does not match</em> with another.</p>
<blockquote><p>local X = &#8220;Foo!&#8221; <em>&#8211; Assigns X as a string</em><br />
local Y = X <em>&#8211; Assigns Y to X&#8217;s value</em><br />
local Class = UnitClass(&#8216;player&#8217;) <em>&#8211; A WoW function that checks the class of a unit. This local will end up reading &#8220;PRIEST&#8221; if you&#8217;re playing one, &#8220;DEATHKNIGHT&#8221; if you&#8217;re on your DK, etc.</em><br />
local Priest = UnitClass(&#8216;player&#8217;) == &#8216;PRIEST&#8217; <em>&#8211; A little more complicated, checks the player&#8217;s class and assigns &#8220;Priest&#8221; as the string as &#8220;PRIEST&#8221;  if playing one.</em><br />
local NotPriest = UnitClass(&#8216;player&#8217;) ~= &#8216;PRIEST&#8217; <em>&#8211; Same thing in reverse, if you&#8217;re not playing a Priest it&#8217;ll assign NotPriest as your class&#8217;s name.</em></p></blockquote>
<p>A <strong>table</strong> (Anyone who&#8217;s written in C/C++ likely prefers calling them <em>arrays</em>) is a <em>list of data</em>, declared in the same fashion as a local but using curved braces ( <strong>{ and }</strong> ) to contain its information. Tables have all sorts of uses &#8211; Most of EH&#8217;s settings are stored in one giant table named <em>EventHorizon</em>.</p>
<p>Tables may be <strong>indexed</strong> or <strong>iterated</strong>. An indexed table can be described as a table that contains a bunch of locals. An iterated table is pure data, without named indexes. To clarify:</p>
<blockquote><p>local Table = {&#8220;This&#8221;, &#8220;is&#8221;, &#8220;an&#8221;, &#8220;iterated&#8221;, &#8220;table&#8221;} <em>&#8211; I&#8217;ll give you three guesses, first two don&#8217;t count. Note the commas separating everything.</em><br />
local Table2 = { <em>&#8211; An indexed table</em>.<br />
foo = 1,<br />
bar = &#8220;String!&#8221;,<br />
rawr = {&#8220;Another&#8221;, &#8220;table!&#8221;},<br />
class = UnitClass(&#8216;player&#8217;), &#8212; <em>Yep, you can call functions in tables too.</em><br />
} <em>&#8211; The table only ends when its matching curved bracket appears.</em></p></blockquote>
<p>Tables can be accessed in quite a few ways. The easiest is when using an <em>indexed table</em>, calling the entry by the index name. You may also call them by their <em>iteration</em>, which is explained below.</p>
<blockquote><p>local Iterated = {1, 2, 3, 4, &#8220;Foo&#8221;, &#8220;Bar&#8221;}<br />
local Indexed = {<br />
foo = &#8220;lol&#8221;,<br />
bar = &#8220;haithar&#8221;,<br />
table = {&#8220;can has&#8221;, &#8220;cheezburger&#8221;}<br />
number = 1, <em>&#8211; Note: A number cannot be used as a table index.</em><br />
number2 = 2, <em>&#8211; This is because of table iteration. Long story.</em><br />
}</p>
<p><em>&#8211; First, let&#8217;s call some stuff in the iterated table. The best way of doing this is via square braces, though there are other ways. Again, we cannot assign a number as a local, so we&#8217;ll be spelling out the numbers as we assign them.</em><br />
local One = Iterated[1] <em>&#8211; 1</em><br />
local Two = Iterated[2] <em>&#8211; 2</em><br />
local Three = One + Two <em>&#8211; Yes, you can do that, and yes, the result is 3.</em></p>
<p><em>&#8211; Next up we&#8217;ll call some things from the indexed table. Indexed tables are a little easier to use in some respects, and harder in others. Mix and match methods as you please, it&#8217;s flexible stuff.<br />
</em>local Foo = Indexed.foo <em>&#8211; Called by name.<br />
</em>local FooToo = Indexed[foo] <em>&#8211; Those square brackets really come in handy, this does the exact same thing. However, if &#8220;foo&#8221; is declared as a local&#8230;</em><br />
local String = &#8220;foo&#8221;<br />
local FooThree = Indexed[String] <em>&#8211; &#8230;then the local will call that portion of the table.</em><br />
local FooIt = Indexed[1] <em>&#8211; Called by iteration. This isn&#8217;t generally useful for indexed tables, but can come in handy. See why a table index cannot be a number now?<br />
</em>local Table = Indexed.table<em> &#8212; Our Table local now reads {&#8220;can has&#8221;, &#8220;cheezburger&#8221;}.<br />
</em>local TableOne = Indexed.table[1] <em>&#8211; &#8220;can has&#8221;&#8230;<br />
</em>local TableTwo = Indexed.table.2 <em>&#8211; &#8220;cheezburger&#8221;</em>.</p></blockquote>
<h2>Using All That In EH</h2>
<p>If you don&#8217;t already have it installed, it would be a very good idea to snag <a href="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a> (NPP) and start using it from here on out. Lua is a very simple and easy to learn language, but if you&#8217;re trying to use the Windows Notepad or (<em>*shudder*</em>) WordPad to edit EventHorizon&#8217;s config files&#8230; it won&#8217;t be. NPP is free and open source software that uses <em>syntax highlighting</em> to make what you&#8217;ll be doing much, much easier, among other things.</p>
<p>I&#8217;ll assume from this point on that you:</p>
<ul>
<li>Know where WoW is installed (I have mine in D:ProgramsWoW, for example)</li>
<li>Know where EventHorizon is installed (within your WoW directory, Interface/AddOns/EventHorizon).</li>
<li>Know how to open a file with Notepad++ (rightclick a <strong>.lua</strong> file, you&#8217;ll see the option in there).</li>
<li>Have file extensions enabled in Windows Explorer, or at least know how to see and change them.</li>
</ul>
<p>EventHorizon comes with the following files:<br />
<strong>EventHorizon.lua</strong> contains EH&#8217;s <em>core code.</em> No user should ever need to touch this file.<br />
<strong>EventHorizon.toc </strong>tells WoW which <em>.lua</em> files to load and run. Again, no user should ever need to touch it.<br />
<strong>config.lua </strong>contains EH&#8217;s default settings and comments with usage information.<br />
<strong>changelog.txt </strong>is a running tally of the changes made to EH over its lifespan. It makes for a good read, believe it or not.<br />
<strong>Smooth.tga</strong> is the texture used in EH by default.</p>
<p>There&#8217;s one extra file that EventHorizon will load, when it&#8217;s present: <strong>myconfig.lua</strong>.</p>
<p>Myconfig acts as a second config.lua. Anything put in here will overwrite settings in the original config. And, since it&#8217;s not included with EventHorizon&#8217;s releases, it&#8217;s safe to assume that it will never be overwritten by a new version. This is good for everyone &#8211; myconfig.lua can be shared as you please, will stick around every time you update EH to the latest version, and can have as many or as few options as you like.</p>
<p>So, let&#8217;s create a copy of <strong>config.lua</strong> within EH&#8217;s directory, rename the copy to <strong>myconfig.lua</strong>, and open it up in Notepad++.</p>
<p>The first line of any config file should be this:</p>
<blockquote><p>local config = EventHorizon.config</p></blockquote>
<p>This tells the file that any time you type &#8220;config&#8221; you&#8217;re actually changing EventHorizon&#8217;s internal configuration table.</p>
<p>Next you&#8217;ll notice a bunch of locals assigning plain-text names to class calls. We&#8217;ll cover usage of these soon.</p>
<p>Now, on to the settings that EH uses!</p>
<ul>
<li><strong>recalculate </strong><em>(Default = true)</em> tells EH to adjust DoT and HoT ticks as they fire. <em>This option will be removed with the WoW Patch 3.3 update.</em></li>
<li><strong>past </strong><em>(Default = -3)</em> is the number of seconds to track in the <em>past</em> section of the window. This needs to be a negative number for technical reasons.</li>
<li><strong>future</strong> <em>(Default = 12)</em> is the number of seconds to track in the <em>future</em> section of the window. This needs to be a positive number. EH&#8217;s time scale is judged from this &#8211; A larger number will result in shorter gaps between DoT ticks, slower-moving bars, etc. If you find that the default seems to cover too short or too long of a time span, try adjusting this. I used 30 seconds for quite a while myself.</li>
<li><strong>spacing</strong> <em>(Default = 0)</em> is the number of pixels between bars on the EH window. This is purely cosmetic. Adjust if you&#8217;d like more room between the bars or to match your UI layout.</li>
<li><strong>scale </strong><em>(Default = 1)</em> is the actual UI scale of the EH window. A value of 1.5 will enlarge the window by 50%, a value of 0.75 will shrink it by 25%.</li>
<li><strong>height </strong><em>(Default = 18)</em> is the height in pixels of a single bar. EH has no limit to its size, so there is no way at present to directly set the height of the window &#8211; The actual window height is (<em>(height + spacing) * the number of bars)*scale.</em></li>
<li><strong>width </strong><em>(Default = 150)</em> is the width in pixels of the EH spell bars. The spell <em>icons</em> add the bar&#8217;s height to its width. The actual width of the frame is <em>(width + height)*scale.</em></li>
<li><strong>anchor </strong><em>(Default = {&#8220;TOPRIGHT&#8221;, &#8220;EventHorizonHandle&#8221;, &#8220;BOTTOMRIGHT&#8221;})</em> is a somewhat complex field that needs a little extra explanation. WoW&#8217;s frame system is based completely on anchors, and this sets EH&#8217;s anchor accordingly.<br />
Valid points are <em>LEFT, RIGHT, TOP, BOTTOM, CENTER, TOPLEFT, TOPRIGHT, BOTTOMLEFT, BOTTOMRIGHT</em>. These points are the edges (or absolute center) of the respective frames. TOPLEFT is the absolute top left corner of the frame, for example.<br />
Knowing this, the syntax is {&#8220;Frame&#8217;s Point to Anchor&#8221;, &#8220;Frame to Anchor to&#8221;, &#8220;Anchor Frame&#8217;s Point&#8221;, offsetX, offsetY}. In the default, we&#8217;re anchoring the TOPRIGHT corner of EventHorizon&#8217;s frame to the BOTTOMRIGHT corner of EventHorizon&#8217;s handle with no offset.<br />
To keep EventHorizon movable ingame, it needs to be anchored to &#8220;EventHorizonHandle&#8221;, a little draggable button that&#8217;s created only when it&#8217;s needed.<br />
If you don&#8217;t feel the need to move EH, say if you&#8217;ve got a very specific UI layout, you can anchor the frame to just about anything else. Wimpface anchors his to his character&#8217;s unitframe. I anchor mine to my target&#8217;s. In these cases, the drag-handle isn&#8217;t even created and the frame is completely immobile.<br />
To place the frame directly at a point of the screen, use &#8220;UIParent&#8221; as the anchor. A few examples are in config.lua to give a better idea of how to do all this.</li>
<li><strong>texturedbars </strong><em>(Default = true)</em> tells EH to use a given texture. If texturedbars isn&#8217;t present (or is set to <em>nil</em>) EH will use solid colors as its bars instead.</li>
<li><strong>texturealphamultiplier </strong><em>(Default = 2)</em> Textures don&#8217;t have the contrast that solid colors do in a transparent environment. This field multiplies the <em>opacity</em> of any bars that use a texture. If the bars seem too dim or too bright, raise and lower this number until it feels right.</li>
<li><strong>backdrop </strong><em>(Default = true)</em> tells EH to draw a background under its bars. If you don&#8217;t feel the need for a background or prefer to use something like kgPanels to set a backdrop yourself, remove the line or set it to <em>nil</em>.</li>
<li><strong>iconborder </strong><em>(Default = false/nil)</em> tells EH whether or not to draw WoW&#8217;s built-in border around the spell icons. If you&#8217;re using the default backdrop with a little spacing between the bars, this can be a nice effect.</li>
<li><strong>castLine</strong> <em>(Default = true) </em>adds a line to the end of any spellcast or channeled cast over 1.5 seconds, extending vertically across the frame. This line should be as accurate as the cast bar itself and seems to help quite a bit for any cast longer than the GCD. Uses the &#8217;sent&#8217; indicator coloring for technical reasons. Remove or set to anything other than &#8216;true&#8217; to disable if you dislike it.</li>
<li><strong>gcdstyle </strong><em>(Default = &#8216;line&#8217;)</em> Valid options are <strong>&#8216;line&#8217;, &#8216;bar&#8217;, </strong>or<strong> false/nil</strong>. This option sets the Global Cooldown indicator accordingly: &#8216;line&#8217; draws a thin line that looks like the Now Line for the GCD. &#8216;bar&#8217; draws a much more visible bar vertically across the window. Setting this to nil or false will completely disable GCD tracking, saving a little CPU.</li>
</ul>
<p>Short interlude: <strong>Coloring</strong>.</p>
<p>EventHorizon uses a table-based coloring system. Each color table has four values: <strong>{Red, Green, Blue, Alpha}</strong>. These entries have a <em>minimum of 0</em>, and a <em>maximum of 1.</em> These <em>do not</em> need to be whole numbers, you can use as many decimal places as you like. The <strong>Alpha </strong>is simply the opacity of a color, how transparent it is. A short list of common colors with alpha values omitted:</p>
<blockquote><p>white: {1, 1, 1}<br />
red: {1, 0, 0}<br />
green: {0, 1, 0}<br />
blue: {0, 0, 1}<br />
yellow: {1, 1, 0}<br />
orange: {1, 0.5, 0}<br />
purple: {1, 0, 1}<br />
pink: {1, 0, 0.5}</p></blockquote>
<p>Math and fractions may be used as well within the table, as such:</p>
<blockquote><p>red by 255: {255/255, 0/255, 0/255}<br />
teal with some extra blue: {0, 199/255, 1}</p></blockquote>
<p>Continuing on&#8230;</p>
<ul>
<li><strong>gcdcolor </strong><em>(Default = {1,1,1,0.5}) </em>sets the color of the GCD bar or line. Use the information just above to see how this works.</li>
<li><strong>bartexture </strong><em>(Default = &#8220;InterfaceAddonsEventHorizonSmooth&#8221;) </em>sets the texture used for all of EH&#8217;s graphics. Note that SharedMedia is loaded as an <em>optional dependency</em> of EH, meaning that its textures will be available to use as long as you know their paths. Better SharedMedia support is planned sometime for a future release, which would allow you to simply provide the texture&#8217;s name.</li>
<li><strong>barbgcolor </strong><em>(Default = {1,1,1,0})</em> Note: The default has a color, but it&#8217;s completely transparent. EH creates a background for each bar (using the same texture as the bar) using this color. If you decide not to use a backdrop for EH at all, it may be a good idea to adjust this as well.</li>
<li><strong>bg </strong><em>(Default = &#8220;InterfaceChatFrameChatFrameBackground&#8221;) </em>sets the texture used for EH&#8217;s backdrop frame.</li>
<li><strong>border </strong><em>(Default = &#8220;InterfaceTooltipsUI-Tooltip-Border&#8221;)</em> sets the texture used for the backdrop frame&#8217;s border. SharedMedia includes a couple on its own, I also have a few that I can send at request. Note that this does not affect the spell icon borders.</li>
<li><strong>bgcolor </strong><em>(Default = {0,0,0,0.6})</em> sets the color of the backdrop.</li>
<li><strong>bordercolor </strong><em>(Default = {1,1,1,1})</em> sets the color of the border.</li>
<li><strong>inset </strong><em>(Default = {top = 2, bottom = 2, left = 2, right = 2}) </em>is an advanced setting that adjusts how many pixels the backdrop&#8217;s texture is adjusted by to account for its border. Tweak as needed if you change your backdrop.</li>
<li><strong>padding</strong><em><strong> </strong>(Default = 3) </em>allows the backdrop to grow beyond EH&#8217;s actual frame size in pixels. The default extends 3 pixels past EH&#8217;s edges, for example. Adjust as you see fit if you change your backdrop and border.</li>
<li><strong>edgesize </strong><em>(Default = <img src='http://www.castersrus.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> </em>sets the thickness of the backdrop&#8217;s border. The optimal value for this depends on the border you choose and your UI in general.</li>
</ul>
<p>That covers the standard settings. Notice that I&#8217;ve been pretty much following the layout of config.lua. If you scroll down a bit in the file you&#8217;ll see the color settings.</p>
<p>EH handles coloring for bars and bar segments on an individual basis, allowing you to set different colors for each type of information shown. Aside from setting the coloring manually via RGB values, you may also class-color any or all of these.</p>
<p>To do this, EventHorizon uses two extra config values not normally listed in config.lua (You <em>knew </em>I was gonna leave something out in the config, right?):</p>
<ul>
<li><strong>classburn </strong><em>(Default = 0.7) </em>is the degree of which a class&#8217;s color is automatically darkened. Within the defaults, this setting is not used at all and is basically a failsafe (you&#8217;ll see why in a moment). It may still be manually set, and can be a value over 1 if desired.</li>
<li><strong>classalpha </strong><em>(Default = 0.3) </em>is the default opacity of a class-colored bar. Again, this isn&#8217;t used within the default config and is there mainly as a failsafe.</li>
</ul>
<p>EH assigns each shown graphic a type. The types are:</p>
<ul>
<li><strong>sent</strong> is the marker lines drawn when a skill usage has been attempted and sent to the server. This does not mark the actual start of a cast or skill usage. This value is also used for the vertical casting line, marking the finish of casts over 1.5 seconds. (Default is class colored)</li>
<li><strong>tick</strong> is the color of the little lines drawn indicating when a DoT or HoT spell will heal or do damage. (Default is class colored)</li>
<li><strong>casting </strong>is the color of the cast and channel bars. (Default is green)</li>
<li><strong>cooldown</strong> is the color of any cooldown lines. (Default is white)</li>
<li><strong>debuffmine </strong>is the color of the debuffs that <em>you</em> have personally cast. (Default is class colored)</li>
<li><strong>playerbuff </strong>is the color of the buffs that <em>you</em> have personally cast. (Default is class colored)</li>
<li><strong>debuff </strong>is the color of anything that is tracked but <em>not cast by you</em>. For example, if playing as a Feral Druid with an Arms Warrior in the group, your Mangle bar may display the Warrior&#8217;s Trauma debuff as well. (Default is your class color, darkened by 50%)</li>
<li><strong>default </strong>is unlisted in config.lua but may still be modified. This color is a fallback that is used in any case where EH can&#8217;t decide what&#8217;s going on. It isn&#8217;t seen in normal gameplay and its usage rests in debugging. (Default is pure white at 100% alpha)</li>
</ul>
<p>Now that we know what can be colored, how do we do it?</p>
<p>The color table is stored outside of EventHorizon&#8217;s standard config: <strong>EventHorizon.colors</strong><em>.</em> This table can be changed as a whole or piece by piece. Config.lua prefers piece by piece, and the defaults may be found at the bottom of the file.</p>
<p>Coloring may be done manually via <em>{Red, Green, Blue, Alpha}</em> or automatically via <em>class coloring</em>. The method of class coloring a bar is simple enough: Tell EH the bar is colored, and optionally add in <strong>burn </strong>and <strong>alpha</strong>.</p>
<blockquote><p>local c = EventHorizon.colors<br />
c.casting = {0,1,0,0.3}<br />
c.debuff = {true,0.5,0.3}</p></blockquote>
<p>The <em>casting </em>color is manually set to green, 30% opacity (since the opacity is multiplied if using textured bars, this is usually 60% opacity).</p>
<p>The <em>debuff</em> line reads exactly like this: <strong>Class colored</strong> (true instead of a number), 50% <strong>burn</strong> (the class&#8217;s color values are multiplied by 0.5), 0.3 <strong>alpha</strong> (30% opacity, again modified for textured bars).</p>
<p>If <em>c.debuff</em> is set simply to {true}, it will be class colored and use <em>config.classburn</em> and <em>config.classalpha </em>to fill in the blanks.</p>
<p>But wait. The default values for the other fields are a <strong>lot </strong>more complicated!</p>
<blockquote><p>c.debuffmine = {true, Priest and 0.7 or 1, 0.3}</p></blockquote>
<p>Remember those locals that were declared at the top of config.lua? This is where they really shine. The <em>debuffmine</em> entry reads literally as: &#8220;Class colored, burn to 0.7 if playing a Priest or 1 otherwise, 0.3 alpha&#8221;. This can be wrapped in parenthesis and even expanded if we like, as such:</p>
<blockquote><p>c.debuffmine = {true, (Priest and 0.7) or 1, 0.3}<br />
c.debuffmine = {true, (UnitClass(&#8216;player&#8217;) == Priest and 0.7) or 1, 0.3}</p>
<p>c.debuffmine = {true, 1, 0.3}<br />
if UnitClass(&#8216;player&#8217;) == &#8220;PRIEST&#8221; then<br />
c.debuffmine[2] = 0.7<br />
end</p></blockquote>
<p>There&#8217;s a lot of ways to do it. Since the Priest color is pure white, it&#8217;s darkened a bit to give cooldowns some contrast from buffs and debuffs. If you want to make Priests not use class coloring at all, you can do that in a few ways as well:</p>
<blockquote><p><em>&#8211; Using inline conditions as before:<br />
</em>c.debuffmine = {(Priest and 0) or true, (Priest and 0.3) or 1, (Priest and 1) or 0.3, Priest and 0.3} <em>&#8211; Reads {true, 1, 0.3} for everyone else, but Priests read it as {0, 0.3, 1, 0.3}. </em></p>
<p><em>&#8211; Or we can overwrite it using an if/then statement.</em><br />
c.debuffmine = {true, 1, 0.3}</p>
<p>if Priest then <em>&#8211; We&#8217;ll use our locals this time, this reads as &#8220;if UnitClass(&#8216;player&#8217;) ==</em><em> &#8216;PRIEST&#8217; then&#8221;<br />
</em>c.debuffmine = {0, 0.3, 1, 0.3}<br />
end</p></blockquote>
<h2>In Closing</h2>
<p>EventHorizon has many ways that you can customize it. This course has only scratched the surface &#8211; Using the config/myconfig system, you can turn EH into everything from a combat monitor to a buff watcher to a pure cooldown tracker. In the next course we&#8217;ll be covering everything related to <em>spell configuration</em>. Stay tuned.</p>
<p>Previous &#8211; <a href="http://www.castersrus.com/?p=26">EventHorizon Course 2: What EH Is Not</a><br />
Next &#8211; EventHorizon Course 4: Mucking With the Class Config</p>
<p><em>You can download EventHorizon <a href="http://www.wowinterface.com/downloads/info14878-EventHorizonContinued.html">here</a>.<br />
If you enjoy the addon, remember that donations are what keeps it alive and evolving. I no longer play the game any more than necessary for testing purposes, and cannot spare the money to keep my WoW account running for that purpose alone.</em></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 2301px; width: 1px; height: 1px;">local FooThree = Indexed[foo] <em>&#8211; Those square brackets really come in handy.</em></div>
]]></content:encoded>
			<wfw:commentRss>http://www.castersrus.com/?feed=rss2&amp;p=49</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>EventHorizon Course 2: What EH Is Not</title>
		<link>http://www.castersrus.com/?p=26</link>
		<comments>http://www.castersrus.com/?p=26#comments</comments>
		<pubDate>Fri, 06 Nov 2009 09:25:27 +0000</pubDate>
		<dc:creator>Taroven</dc:creator>
				<category><![CDATA[Interface]]></category>

		<guid isPermaLink="false">http://www.castersrus.com/?p=26</guid>
		<description><![CDATA[Now that we&#8217;ve learned what EventHorizon does, let&#8217;s take it a couple steps further. In this article we&#8217;ll discuss what EventHorizon does not do. We&#8217;ll take a look at configuring EH and getting those changes to stick between releases next post.
Scoping: What Programs Do and Don&#8217;t Do
While I love to ...]]></description>
			<content:encoded><![CDATA[<p>Now that we&#8217;ve <a href="http://www.castersrus.com/?p=19">learned</a> what <a href="http://www.wowinterface.com/downloads/info14878-EventHorizonContinued.html">EventHorizon</a> does, let&#8217;s take it a couple steps further. In this article we&#8217;ll discuss what EventHorizon <em>does</em> <em>not</em> do. We&#8217;ll take a look at configuring EH and getting those changes to stick between releases next post.</p>
<h2>Scoping: What Programs Do and Don&#8217;t Do</h2>
<p>While I love to add new features and strive to make EH the best possible solution for combat awareness, I&#8217;ve had to learn over the last year to say no quite a lot. Before getting started on what EH doesn&#8217;t do (or doesn&#8217;t do <em>well</em>), let&#8217;s cover that touchy subject: <strong>Scoping, feature creep, and bloat</strong>.</p>
<p>The <em>scope</em> of any program is, in a nutshell, what it does. The phrase <em>out of scope</em> generally refers to a feature that the program does not and may never cover.</p>
<p>A good example is <a href="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a>. I swear by it. When I&#8217;m using Linux instead of Windows, I find myself missing it dearly. However, I would <em>never</em> expect NPP to be a full-featured rich text editor and the thought of it handling presentations and blogging is simply laughable. Those features are simply out of NPP&#8217;s scope and I wouldn&#8217;t want them there in the first place.</p>
<p><em>Feature creep</em> is a situation that programmers everywhere deal with on a continual basis. Users regularly request changes to a program. Some changes are simple tweaks, some are brand new features. While it&#8217;s all well and good to see a program evolve into something truly great, a line needs to be drawn at some point to keep the program easy to use and configure. EventHorizon is quite guilty of feature creep and proud to admit it, but on the same token I make every attempt to keep it from becoming bloated.</p>
<p><em>B</em><em>loat</em>. It&#8217;s a dirty word in the programming world, referring to the point at which too many features are present in a single program. A bloated program is too big for its own good &#8211; It&#8217;s reached a level of complexity that can, at times, render it completely useless. You&#8217;ve run into this before, and its name is Windows. In WoW, it&#8217;s known as Carbonite or Pitbull.</p>
<p>Bloat isn&#8217;t necessarily a bad thing. A program with too <em>few </em>features can be just as large a liability as the insanely bloated program beside it. Sometimes that bloated program is the only available means of doing something, or is the only holder of a key feature that enables a personal godmode in everything you do with it.</p>
<p>Carbonite is an excellent addon in many regards, but most people download it simply for its questing features. It&#8217;s bloated beyond belief though, extending its features far beyond that of a quest helper. It modifies your social and guild windows, it tracks everything you do in combat whether you like it or not &#8211; It&#8217;s <em>bloated.</em></p>
<p>Pitbull is bloated in a completely different manner. While it restrains itself to only changing your unitframes, it has far too many options for its own good. This is excellent for a user that can never seem to find the perfect unitframe layout, but all those options take a heavy toll on its performance. Last I checked, Pitbull used more CPU and memory than all of my other addons combined. And this was with every feature I didn&#8217;t use completely deactivated or deleted.</p>
<p>I certainly hope this section has helped someone, because next we turn to how it all affects EventHorizon.</p>
<h2>EventHorizon: What It Doesn&#8217;t Do</h2>
<p>EH is a unique addon however you look at it. Even the name is unique, as you don&#8217;t see very many addons make a reference to <a href="http://en.wikipedia.org/wiki/Event_horizon">general relativity</a>. As I&#8217;ve shown in my <a href="http://www.castersrus.com/?p=19">previous article</a>, EH is a combat monitor that tracks time itself, giving an entirely different view on your abilities.</p>
<p>Large strides have been made in turning EH into what it is today. New features turn up with almost every release, making it easier to see what&#8217;s going on and providing even more information about your spells.</p>
<p>Lines must be drawn for everyone&#8217;s sake though. EventHorizon does not and likely will never&#8230;</p>
<p><strong>Tell you what to cast</strong>. For one, this is self-evident with many specs when you&#8217;re looking at EH&#8217;s little window. The goal is to have as many full bars as possible with as few gaps in between as possible. Aside from that, there are other addons that have been written for this exact purpose. Hi, <a href="http://www.wowinterface.com/downloads/info14924-Faceroller.html">Faceroller</a>. Adding this functionality to EH would involve <em>hundreds</em> of lines of code that would only be useful for a specific minority.</p>
<p><strong>Have clickable buttons</strong>. To an addon author, this may be obvious. Secure templates are a <em>bitch</em> to deal with, and EventHorizon&#8217;s fluid nature clashes with them badly. I&#8217;ll leave it at that &#8211; It&#8217;s much more pain than it will ever be worth, trust me. Many action bar addons have the ability to create a bar that matches EH&#8217;s window nearly perfectly, and they do the job much, much better.</p>
<p><strong>Track long cooldowns</strong>. EH has one goal: Watch everything that affects your standard rotation. Hi, Shamans. Elemental Mastery does not affect your rotation, you continue with the same spells whether or not it&#8217;s used.<br />
<em>However</em>, events are in motion that will eventually allow for a second EH window containing those long situational cooldowns.</p>
<p><strong>Show your mana, rage, energy, runes, etc</strong>. <a href="http://www.wowinterface.com/downloads/info14883.html">EventHorizon_Vitals</a> does this quite well and was made exactly for this purpose. EH will never track your power levels on its own, you have unitframes and Vitals for that.</p>
<p><strong>Have ingame configuration options</strong>. Ingame configs are nice, I won&#8217;t deny it. However, once you have it to your liking, EH is an extremely low maintenance addon. A config window would not only multiply EH&#8217;s CPU and memory usage, but would also make sharing configurations much more complex.<br />
Wimpface is working on a minimal in-game config window to adjust EH&#8217;s appearance in a roundabout way. I have no timeline for its release, but it&#8217;s likely to be released as an optional module when it&#8217;s ready.</p>
<p><strong>Have nifty flash and pulse effects</strong>. This has been attempted and has been found to be extremely distracting. The effects may be added in the future as an optional module, but at present I have no plans to write it.</p>
<p><strong>Show Totems</strong>. Sorry to pick on all the Shammies around, but EH will never track totems. Yes, it&#8217;s possible. No, it&#8217;s definitely not easy. You&#8217;re much better off using a dedicated totem management addon or Blizzard&#8217;s provided utilities.</p>
<p><strong>Track pet cooldowns</strong>. Apologies to Hunters and Warlocks, but there are no plans to support tracking abilities used by pets. Abilities <em>affecting</em> pets are another matter of course. EH can track literally any buff or debuff as long as you have the spellID for it. I&#8217;ll cover some tricks on this in Course 4: Customizing EH&#8217;s Bars.</p>
<p>I&#8217;ve received all of these as requests over the past year, and more. It&#8217;s never easy to say no to a user, and to tell the truth some of these would be very easy for me to implement. However, I always have to keep a watch out for bloat &#8211; If I&#8217;m adding something to EventHorizon&#8217;s core, I need to make sure it&#8217;s something <em>everyone can use equally</em>. And then, I need to make sure that there isn&#8217;t another addon or solution that negates the purpose.</p>
<p><em>Staying in <strong>scope</strong></em>: EH watches everything that affects your rotation on a constant basis, no more, no less.</p>
<p><em>Keeping <strong>feature creep</strong> to a minimum</em>: EH uses less CPU and far less memory than many other (far less useful) DPS addons. It could very easily use more, but what&#8217;s the point of an addon if it forces your computer to a grinding halt? What&#8217;s the point of a simple Lua-based config if there are too many options to possibly keep track of? How many bars do you <em>really</em> need to effectively kill something?</p>
<p><em>Steering clear of <strong>bloat</strong></em>: EH does its singular job very, very well. It will never choose your abilities for you, it will never openly suggest what to cast, it will never do things to any other frame but its own. It will always be accurate, it will always show the information you need &#8211; What more could anyone want?</p>
<p>Happy hunting!</p>
<p>Previous &#8211; <a href="http://www.castersrus.com/?p=19">EventHorizon Course 1: A Brief Introduction</a><br />
Next &#8211; <a href="http://www.castersrus.com/?p=49">EventHorizon Course 3: Pimping EH</a></p>
<p><em>You can download EventHorizon <a href="http://www.wowinterface.com/downloads/info14878-EventHorizonContinued.html">here</a>.<br />
If you enjoy the addon, remember that donations are what keeps it alive and evolving. I no longer play the game any more than necessary for testing purposes, and cannot spare the money to keep my WoW account running for that purpose alone.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.castersrus.com/?feed=rss2&amp;p=26</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>EventHorizon Course 1: A Brief Introduction</title>
		<link>http://www.castersrus.com/?p=19</link>
		<comments>http://www.castersrus.com/?p=19#comments</comments>
		<pubDate>Thu, 05 Nov 2009 07:30:48 +0000</pubDate>
		<dc:creator>Taroven</dc:creator>
				<category><![CDATA[Interface]]></category>

		<guid isPermaLink="false">http://www.castersrus.com/?p=19</guid>
		<description><![CDATA[Hello there. I&#8217;m Taroven, the author of the continued versions of EventHorizon (hereafter known as EH).
In this blog, I&#8217;ll be going over everything EH &#8211; How to use it for maximum effect, customize it beyond your wildest dreams, and even use it for things that you had no idea it ...]]></description>
			<content:encoded><![CDATA[<p>Hello there. I&#8217;m Taroven, the author of the continued versions of <a title="EventHorizon" href="http://www.wowinterface.com/downloads/info14878-EventHorizonContinued.html" target="_blank">EventHorizon</a> (hereafter known as EH).</p>
<p>In this blog, I&#8217;ll be going over everything EH &#8211; How to use it for maximum effect, customize it beyond your wildest dreams, and even use it for things that you had <strong>no idea</strong> it could ever do.</p>
<p>But first&#8230;</p>
<h2>What the heck is EventHorizon?</h2>
<p>EH is, in short, a combat monitor. It shows <em>casts, cooldowns, buffs, and debuffs</em>. Rather than needing to look at 3 things at once (cast bar, cooldown monitor, and buff/debuff indicators), EH allows you to see every bit of relevant information about a spell in a <em>single, simple bar</em>.</p>
<p>Most addons use percentages to show what&#8217;s going on. This means that the following happens:</p>
<p><strong>Spell #1</strong> has a 30 second duration. When it&#8217;s first cast, its bar reads full. When it has 15 seconds remaining, the bar reads half. Easy enough.<br />
<strong>Spell #2</strong> has a 6 second duration. When it&#8217;s first cast, its bar reads full. When it has 3 seconds remaining, the bar reads half. <em>Wait a second&#8230; This means that the <strong>only</strong> way to tell which will expire first if we freeze with both spells at 50% is by looking at the number of seconds remaining (if they&#8217;re even displayed) or by resuming and watching which one moves faster.</em></p>
<p>Enter EventHorizon, stage left. EH tracks <em>time itself</em>. All the information it shows is overlaid on a <em>common time scale</em>, meaning you see <em>everything in relation to everything else.</em> The difference is incredible:</p>
<p><strong>Spell #1</strong> has a 30 second duration. When it&#8217;s first cast, its bar ends at 30 seconds. When it has 15 seconds remaining, the bar ends at 15 seconds.<br />
<strong>Spell #2</strong> has a 6 second duration. When it&#8217;s first cast, its bar ends at 6 seconds. When it has 3 seconds remaining, the bar ends at, you guessed it, 3 seconds.</p>
<p>This needs a picture or two to really show what I mean. Here&#8217;s an example showing the essentials on a Resto Druid.</p>
<p><img class="aligncenter size-full wp-image-18" title="EH on a Resto Druid" src="http://www.castersrus.com/wp-content/uploads/2009/11/EH_Example.png" alt="EH on a Resto Druid" width="400" height="200" /></p>
<p>As I mentioned previously, every bit of information about a spell is relayed on a single bar. Notice that everything is neatly aligned &#8211; I have one second remaining on Lifebloom. A little under 12 seconds remain on my Swiftmend&#8217;s cooldown. Rejuvenation still has about 6 seconds (two ticks) remaining. I just finished casting Nourish.</p>
<p><em>Wow</em>. That was easy.</p>
<p>Let&#8217;s take it by the numbers.</p>
<p>1.<strong> Past</strong>: EH shows casts, expired spells and cooldowns, and ticks that have already happened here. The default is 3 seconds, plenty of time for most anyone. I use one second, personally.</p>
<p>2.<strong> Present</strong>: Otherwise known as the &#8220;Now Line&#8221;, the current point in time. An EH newbie will stare here &#8211; Anyone who is used to EH, though, looks at&#8230;</p>
<p>3.<strong> Future</strong>: What <em>will</em> happen. Contained here is the core of EventHorizon &#8211; Everything in relation to everything. Predicted spell ticks, cooldowns, buff and debuff durations, you name it. If you&#8217;ve ever had trouble deciding what to cast and when, read on. The default is 12 seconds from now.</p>
<p>4. <strong>Skill Icons</strong>: A simple show of what the bar is tracking.</p>
<p>5. <strong>Stack Count</strong>: Overlaid on the icon is a traditional stack counter. It shows &#8211; surprise &#8211; how many stacks of the spell are currently active.</p>
<p>6. <strong>Duration</strong>: The time left on a buff or debuff. EH directly watches your spells, so this will <em>always</em> be accurate to the millisecond. If a spell is dispelled or the target dies, the bar goes poof. If a spell is extended or refreshed (even via another spell) the bar will do likewise.</p>
<p>7. <strong>Tick Markers</strong>: Any DoT or HoT spell may have its ticks predicted in an easily readable fashion. EH tries its best to keep these predicted ticks accurate, catching when a tick happens and doing a little math to make sure the others line up. When Patch 3.3 hits, it will even track the effects of haste to make sure you have the most accurate possible information.</p>
<p>8. <strong>Cast Timers</strong>: EH keeps track of <em>everything</em> related to a spell, including its cast time. Again, this uses actual game information &#8211; Casting times use the game&#8217;s API to make sure they&#8217;re accurate.</p>
<p>9. <strong>The Recast Line</strong>: Another unique feature of EH is that it lets you know the best time to refresh an aura that has a casting time. The last known cast time of the spell is remembered and subtracted from the bulk of the bar, letting you keep a spell&#8217;s uptime near 100%.</p>
<p>10. <strong>Cooldowns</strong>: A good combat monitor isn&#8217;t complete without good cooldown tracking. Again, the game&#8217;s API is used to provide the most accurate information. In addition, if an effect&#8217;s cooldown isn&#8217;t provided by the game (How&#8217;s that Grim Toll looking?) EH will do a pretty good job of tracking it anyway.</p>
<p>Not shown in the shot:<strong><br />
Supports <em>every</em> class and spec out of the .zip</strong>: EH has been custom-tailored over the past year to let you use it on both your Survival Hunter and Disc Priest without skipping a beat. It does this by watching your class, spec, and glyphs &#8211; No setup required.<br />
<strong>Global Cooldown</strong>: A line, not unlike the Now Line, that moves with your GCD. Unobtrusive and natural are the names of the game.<br />
<strong>Channeled Spells</strong>: EH tracks channeled spells quite accurately &#8211; Including tick markers. Warlocks, Drain Soul was <em>never</em> this easy to use.<br />
<strong>Internal Cooldowns: </strong>Yep, EH tracks those too. The hidden cooldowns on trinkets and certain talents/spells can be tracked accurately.<br />
<strong>Glyph Refreshes</strong>: A very unique example of how EH helps in every possible way. If you&#8217;re using certain glyphs (Backstab [Rogue/Rupture], Shred [Druid/Rake], Starfire [Druid/Moonfire], etc) EH will show the remaining number of glyph-based extensions a spell has remaining via the stack counter. This information is always accurate, even when you&#8217;re switching targets constantly.<br />
<strong>Unique Buffs and Debuffs</strong>: If a spell is unique per target and you happen to use it as part of your rotation (Feral Druids, I&#8217;m looking at you and your designated Mangle/Trauma bots), EH will show a faded bar letting you know when someone else has supplied it already.<br />
<strong>Related Spells and Secondary Effects</strong>: Not every spell has its own buff or debuff. For example, Nourish in the example above also tracks Nature&#8217;s Grace. A Holy Priest&#8217;s Lesser Heal tracks Inspiration (and Ancestral Fortitude), while Disc gets Grace tracked via Penance.<br />
<strong>EventHorizon_Vitals</strong>: <a href="http://www.wowinterface.com/downloads/info14883.html">Vitals</a> is a little plugin for EventHorizon that tracks some other useful information next to EH&#8217;s frame. It shows your current power (mana, rage, energy, vehicle power, what have ye), weapon enchant durations, combo points, runes, and a few other niceties. Vitals isn&#8217;t bundled with EH itself because it is not universally useful, but is definitely worth checking out.<br />
<strong>Endless Customization</strong>: EH has no in-game configuration, and for very good reason &#8211; If it were offered, it wouldn&#8217;t be anywhere <em>near</em> as flexible as it is now. It would also be nearly impossible to set up&#8230; and if you&#8217;ve never lost your settings because of a nasty crash or game-breaking bug, you&#8217;ll thank me later. Settings can be handled via a simple configuration file contained in the EventHorizon directory, and trust me when I say there are quite a few to tweak at your leisure. The defaults are quite satisfactory for most anyone if you dislike dealing with text.</p>
<p>Update 11/06/09: Here&#8217;s another shot, from Wimpface.</p>
<div id="attachment_38" class="wp-caption aligncenter" style="width: 622px"><img class="size-full wp-image-38" title="EH on a Shadow Priest" src="http://www.castersrus.com/wp-content/uploads/2009/11/EH_Explain-copy1.png" alt="EH_Explain copy" width="612" height="393" /><p class="wp-caption-text">Wimpface&#39;s EH setup. Shows off all the major elements, and a lovely color scheme and layout to go along with it.</p></div>
<p>That&#8217;s all for now. Stay tuned for the next episode of Taroven&#8217;s EventHorizon insights.</p>
<p>Next &#8211; <a href="http://www.castersrus.com/?p=26">EventHorizon Course 2: What EH Is Not</a></p>
<p><em>You can download EventHorizon <a href="http://www.wowinterface.com/downloads/info14878-EventHorizonContinued.html">here</a>.<br />
If you enjoy the addon, remember that donations are what keeps it alive and evolving. I no longer play the game any more than necessary for testing purposes, and cannot spare the money to keep my WoW account running for that purpose alone.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.castersrus.com/?feed=rss2&amp;p=19</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Welcome!</title>
		<link>http://www.castersrus.com/?p=1</link>
		<comments>http://www.castersrus.com/?p=1#comments</comments>
		<pubDate>Wed, 21 Oct 2009 00:33:27 +0000</pubDate>
		<dc:creator>Basta</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.castersrus.com/?p=1</guid>
		<description><![CDATA[Hello, and thanks for visiting Casters R Us!
As you can probably tell, the site is still under construction, so bear with us while we get everything set up and situated.
Also, if you&#8217;re interested in contributing to the site, find me on Twitter or shoot me an E-mail!
Obviously, I&#8217;m looking for ...]]></description>
			<content:encoded><![CDATA[<p>Hello, and thanks for visiting <em>Casters R Us</em>!</p>
<p>As you can probably tell, the site is still under construction, so bear with us while we get everything set up and situated.</p>
<p>Also, if you&#8217;re interested in contributing to the site, find me on <a title="InfiniZ's Twitter" href="http://www.twitter.com/InfiniZ" target="_blank">Twitter</a> or shoot me an <a title="InfiniZ's E-Mail" href="mailto:InfiniZ@CastersRUs.com" target="_blank">E-mail!</a></p>
<p>Obviously, I&#8217;m looking for any and all types of spellcasters.  That includes the following:</p>
<ul>
<li>Warlocks (All specs)</li>
<li>Mages (All Specs)</li>
<li>Elemental Shamans</li>
<li>Balance Druids</li>
<li>Shadow Priests </li>
</ul>
<p>No previous blogging experience is required!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.castersrus.com/?feed=rss2&amp;p=1</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
