<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>The Book of Ryan &#187; D&amp;D</title>
	<atom:link href="http://ryancannon.com/category/games/dnd/feed" rel="self" type="application/rss+xml" />
	<link>http://ryancannon.com</link>
	<description>Wordslinger, dissident, webwright</description>
	<lastBuildDate>Mon, 06 Jul 2009 17:19:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- podcast_generator="podPress/8.8" -->
		<copyright>&#xA9; </copyright>
		<managingEditor>ryan@ryancannon.com ()</managingEditor>
		<webMaster>ryan@ryancannon.com()</webMaster>
		<category></category>
		<ttl>1440</ttl>
		<itunes:keywords></itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary>Wordslinger, dissident, webwright</itunes:summary>
		<itunes:author></itunes:author>
		<itunes:category text="Society &amp; Culture"/>
		<itunes:owner>
			<itunes:name></itunes:name>
			<itunes:email>ryan@ryancannon.com</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://ryancannon.com/wp-content/attic/images/album_art-144x144.png" />
		<image>
			<url>http://ryancannon.com/wp-content/attic/images/album_art-144x144.png</url>
			<title>The Book of Ryan</title>
			<link>http://ryancannon.com</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>Parsing Your Character&#8217;s Loot</title>
		<link>http://ryancannon.com/2009/07/01/parsing-your-characters-loot</link>
		<comments>http://ryancannon.com/2009/07/01/parsing-your-characters-loot#comments</comments>
		<pubDate>Wed, 01 Jul 2009 16:05:41 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[D&D]]></category>
		<category><![CDATA[Web Design/Programming]]></category>
		<category><![CDATA[D&DI]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://ryancannon.com/?p=290</guid>
		<description><![CDATA[Here&#8217;s a quick teaser for a new project I&#8217;m working on, almost ready for public beta.

def loot(character_sheet_file)
  @xml &#124;&#124;= Hpricot::XML(character_sheet_file.read)
  @loot &#124;&#124;= @xml.search("//LootTally/loot[@count!='0']").map do &#124;item&#124;
    res = item.search("//RulesElement")
    case res.size
      when 0: nil
      when 1: coder.decode(res.first.attributes["name"])
  [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a quick teaser for a new project I&#8217;m working on, almost ready for public beta.</p>

<pre style="font-size:80%"><code>def loot(character_sheet_file)
  @xml ||= Hpricot::XML(character_sheet_file.read)
  @loot ||= @xml.search("//LootTally/loot[@count!='0']").map do |item|
    res = item.search("//RulesElement")
    case res.size
      when 0: nil
      when 1: coder.decode(res.first.attributes["name"])
      when 2: coder.decode(res.last.attributes["name"].sub(res.first.attributes["type"], res.first.attributes["name"]))
      else    res.map { |re| coder.decode(re.attributes["name"]) }.join(" ")
    end
  end.compact
end</code></pre>

<p>Character files from <a href="http://wizards.com/default.asp?x=dnd/insider/characterbuilder" title="D&amp;D Character Builder">D&amp;DI Character Builder</a> store loot as a list, but the names of magic items are concatenated with names of their connected mundane items, so you have to mix them based on the magic item&#8217;s <code>@type</code>.</p>

<p>Also, the Character Builder stores <em>every item you&#8217;ve ever added,</em> even if you deleted it immediately, so you have to filter out items with a count of zero. You have no way to tell if this was an intentional item purchase, an item accidentally clicked on or a found item from a module, so items with <code>@count=0</code> are useless.</p>

<p>What could I possibly be building‽‽‽</p>
]]></content:encoded>
			<wfw:commentRss>http://ryancannon.com/2009/07/01/parsing-your-characters-loot/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Epic</title>
		<link>http://ryancannon.com/2009/05/31/epic</link>
		<comments>http://ryancannon.com/2009/05/31/epic#comments</comments>
		<pubDate>Sun, 31 May 2009 07:46:15 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[D&D]]></category>
		<category><![CDATA[LFR]]></category>

		<guid isPermaLink="false">http://ryancannon.com/?p=286</guid>
		<description><![CDATA[Last weekend, at Gamex, I spent a grueling three days grinding through Living Forgotten Realms modules in order to level up in time for the convention&#8217;s finale: SPEC1-2: Zhent&#8217;s Ancient Shadows.



&#8220;Grind&#8221; is, perhaps, an inappropriate term—I was playing a game, after all—and I met a lot of cool people and excellent DM&#8217;s along the way. [...]]]></description>
			<content:encoded><![CDATA[<p>Last weekend, at <a href="http://www.strategicon.net/" title="One of the three yearly Strategicon Conventions">Gamex</a>, I spent a grueling three days grinding through <a href="http://wizards.com/default.asp?x=dnd/lfrx/welcome">Living Forgotten Realms</a> modules in order to level up in time for the convention&#8217;s finale: <em>SPEC1-2: Zhent&#8217;s Ancient Shadows.</em></p>

<p><span id="more-286"></span></p>

<p>&#8220;Grind&#8221; is, perhaps, an inappropriate term—I was playing a game, after all—and I met a lot of cool people and excellent DM&#8217;s along the way. Our tables included the prototypical nerds and die-hard gamers, but also parents and their kids; women are also fairly well-represented in Southern Californian D&amp;D.</p>

<p>Mizrae&#8217;li, my character for the event, is a gladiator-trained Drow and tough as a coffin nail. She&#8217;s an unconventional fighter that zig-zags across the battlefield harrying enemies with her whip and throwing axe, keeping their attention while her allies finish them off. Laconic on the best days, she holds a lifelong grudge against the dark cult that sold away her childhood, and her hunt for them led her to Zhentil Keep.</p>

<p>At the last convention in February, <em>SPEC 1-1: Shades of the Zhentarim,</em> offered some missing history between 3rd edition Forgotten Realms and the 4th edition set 100 years in the future. This time, for <em>SPEC1-2: Zhent&#8217;s Ancient Shadows,</em> I teamed up with three of the five players from the first half. It was supposed to be a meatgrinder—one of our friends had his character die in the <em>first fight</em> and had to turn back. We were no little bit nervous.</p>

<p>We were returning to Zhentil Keep to clear out the undead menace we had uncovered before. Gathered with us was an army of clerics and paladins whose vocation was destroying undead. For six hours we carved our way through wights, vampiric trolls, and a huge, bone-shard-spitting <span style="background:#000;color:#FFF;">[REDACTED]</span>. It was a miracle we even survived, yet we were only halfway finished.</p>

<p>After an extended rest, we climbed a mile-long chain into a floating cathedral, and confronted a horrific <span style="background:#000;color:#FFF;">[REDACTED]</span>. The thing was so tough we had to take another rest after one fight. What we learned lead us on a chase through the city to some familiar ruins, an army of undead on our heels. Our allies and us pitch an epic last stand, as we complete the ritual that banished the undead, we were cheered by a victorious army.</p>

<p>Module box text has never left me as speechless or elated as it did that night. SPEC1-2 was by far the best written and most challenging adventure I&#8217;ve played in Living Forgotten Realms. The game would not be fun if every Friday was this stressful, but as the pinnacle of a long <abbr>con.</abbr> it was perfect.</p>

<p>But the best part was playing the module with my group of friends—most that played SPEC1-1 with me as well—an my fiancée by my side for the last half. And against the perfect DM: he scoffed at my character concept at a lowly first-level, but has since been brought around. But he was perfects hardcore. Almost all of the minis he used were exactly as described, and when he slapped down that <span style="background:#000;color:#FFF;">[REDACTED]</span>, everyone at the table shrieked in fear.</p>

<p>I generally don&#8217;t tout this hobby because of the bad stereotypes given to its players, but it&#8217;s just too rare today to have a group of people of all ages sit at a table and play a game—good clean fun. And this past weekend, the only way to describe the experience is epic.</p>
]]></content:encoded>
			<wfw:commentRss>http://ryancannon.com/2009/05/31/epic/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
