Revision: 336
Author: todd.chambery
Date: Fri Sep 25 10:40:09 2009
Log: some cleanup
http://code.google.com/p/charactermanager/source/detail?r=336
Added:
/trunk/charmgrjs/resources/3.5 Classic.xsl
/trunk/charmgrjs/resources/config
/trunk/charmgrjs/resources/config/config.xsl
/trunk/charmgrjs/resources/config/rage.xsl
/trunk/charmgrjs/resources/config/turning.xsl
Modified:
/trunk/charmgrjs/classes.js
/trunk/charmgrjs/main.js
/trunk/charmgrjs/spells.js
=======================================
--- /dev/null
+++ /trunk/charmgrjs/resources/3.5 Classic.xsl Fri Sep 25 10:40:09 2009
@@ -0,0 +1,4471 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!-- Character sheet based on the eTools character sheet created by Art
Turban -->
+<!-- Created with consent from Art Turban -->
+<!-- Created by Nebular,
neb...@shaw.ca -->
+<!-- Turn and Rage templates based on designs provided by Ambush -->
+<!-- Version 1.9.5 (October 4, 2008) -->
+<!-- For use with RPGXplorer 1.9.5
http://www.rpgxplorer.com/" -->
+<xsl:stylesheet version="1.0"
xmlns:xsl="
http://www.w3.org/1999/XSL/Transform">
+ <xsl:include href="config/config.xsl"/>
+ <xsl:include href="config/rage.xsl"/>
+ <xsl:include href="config/turning.xsl"/>
+ <xsl:output method="html" indent="no" encoding="UTF-8"/>
+ <xsl:variable name="lcletters">abcdefghijklmnopqrstuvwxyz</xsl:variable>
+ <xsl:variable name="ucletters">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
+ <xsl:variable name="removeplus">+</xsl:variable>
+ <xsl:variable name="replaceplus"> </xsl:variable>
+ <xsl:variable name="removepercent">%</xsl:variable>
+ <xsl:variable name="replacepercent"></xsl:variable>
+ <xsl:variable name="removeft">ft.</xsl:variable>
+ <xsl:variable name="replaceft"></xsl:variable>
+ <xsl:variable name="removebab">+/</xsl:variable>
+ <xsl:variable name="replacebab"></xsl:variable>
+
+ <xsl:variable name="removeNewline">#10;</xsl:variable>
+ <xsl:variable name="replaceNewline"><br /></xsl:variable>
+ <xsl:template name="format-literal-content-helper">
+ <xsl:param name="text"/>
+ <xsl:variable name="linebreak" select="' '"/>
+ <xsl:choose>
+ <xsl:when test="contains($text,$linebreak)">
+ <xsl:value-of select="substring-before($text,$linebreak)"
disable-output-escaping="yes"/>
+ <br/>
+ <xsl:call-template name="format-literal-content-helper">
+ <xsl:with-param name="text"
select="substring-after($text,$linebreak)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise><xsl:value-of select="$text"
disable-output-escaping="yes"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="/CharacterXMLDataset/Character">
+
+ <xsl:variable name="portrait-image" select="Portrait"/>
+ <xsl:variable name="heavy"
select="substring-before(substring-after(HeavyLoadInfo, 'to '), ' lb.')"/>
+
+ <xsl:variable name="natbab" select="translate(substring(BAB1, 1, 3),
$removebab, $replacebab)"/>
+
+ <html>
+ <head>
+ <title><xsl:value-of select="CharacterName"/></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <style>
+ DIV.description {
+ FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman, Times Roman, serif
+ }
+ DIV.description P {
+ MARGIN: 6pt 8pt; TEXT-INDENT: 12pt
+ }
+ DIV.description TABLE {
+ MARGIN: 6pt 14pt; TEXT-INDENT: 0pt
+ }
+ DIV.description TD {
+ PADDING-RIGHT: 6pt; PADDING-LEFT: 6pt; FONT-SIZE: 9pt;
PADDING-BOTTOM: 0pt; TEXT-INDENT: 0pt; PADDING-TOP: 0pt; FONT-FAMILY: Times
New Roman, Times Roman, serif
+ }
+ DIV.description UL {
+ MARGIN-TOP: 0pt; LEFT: -10pt; POSITION: relative; TOP: 0pt
+ }
+ .symbol8 {
+ FONT-SIZE: 8pt; FONT-FAMILY: Wingdings
+ }
+ .v1 {
+ FONT-SIZE: 1pt; FONT-FAMILY: Verdana
+ }
+ .v2 {
+ FONT-SIZE: 2pt; FONT-FAMILY: Verdana
+ }
+ .v3 {
+ FONT-SIZE: 3pt; FONT-FAMILY: Verdana
+ }
+ .v4 {
+ FONT-SIZE: 4pt; FONT-FAMILY: Verdana
+ }
+ .v5 {
+ FONT-SIZE: 5pt; FONT-FAMILY: Verdana
+ }
+ .v6 {
+ FONT-SIZE: 6pt; FONT-FAMILY: Verdana
+ }
+ .v7 {
+ FONT-SIZE: 7pt; FONT-FAMILY: Verdana
+ }
+ .v8 {
+ FONT-SIZE: 8pt; FONT-FAMILY: Verdana
+ }
+ .v9 {
+ FONT-SIZE: 9pt; FONT-FAMILY: Verdana
+ }
+ .v10 {
+ FONT-SIZE: 10pt; FONT-FAMILY: Verdana
+ }
+ .v5w {
+ FONT-SIZE: 5pt; COLOR: white; FONT-FAMILY: Verdana
+ }
+ .v6w {
+ FONT-SIZE: 6pt; COLOR: white; FONT-FAMILY: Verdana
+ }
+ .v7w {
+ FONT-SIZE: 7pt; COLOR: white; FONT-FAMILY: Verdana
+ }
+ .v8w {
+ FONT-SIZE: 8pt; COLOR: white; FONT-FAMILY: Verdana
+ }
+ .v9w {
+ FONT-SIZE: 9pt; COLOR: white; FONT-FAMILY: Verdana
+ }
+ .v10w {
+ FONT-SIZE: 10pt; COLOR: white; FONT-FAMILY: Verdana
+ }
+ .versionInfo {
+ MARGIN-TOP: 0ex; FONT-SIZE: 5pt; MARGIN-BOTTOM: 0ex;
FONT-FAMILY: Verdana; TEXT-ALIGN: center
+ }
+ .itemName {
+ MARGIN-TOP: 0ex; FONT-WEIGHT: bold; FONT-SIZE: 7pt;
MARGIN-BOTTOM: 0ex; MARGIN-LEFT: 1ex; FONT-FAMILY: Verdana; TEXT-ALIGN: left
+ }
+ .itemNameDetail {
+ MARGIN-TOP: 0ex; FONT-WEIGHT: normal; FONT-SIZE: 6pt;
MARGIN-BOTTOM: 0ex; MARGIN-LEFT: 0ex; FONT-FAMILY: Verdana; TEXT-ALIGN: left
+ }
+ .itemDetail {
+ MARGIN-TOP: 0ex; FONT-SIZE: 7pt; MARGIN-BOTTOM: 0ex;
MARGIN-LEFT: 0ex; FONT-FAMILY: Verdana; TEXT-ALIGN: center
+ }
+ .containerHead {
+ background-color: #DDDDDD; MARGIN-TOP: 0ex; FONT-WEIGHT: bold;
FONT-SIZE: 8pt; MARGIN-BOTTOM: 0ex; MARGIN-LEFT: 1ex; TEXT-TRANSFORM:
uppercase; COLOR: #000000; FONT-FAMILY: Verdana; TEXT-ALIGN: left;
border-bottom:1px solid #000000;
+ }
+ .weaponHand {
+ FONT-SIZE: 9pt; VERTICAL-ALIGN: top; FONT-FAMILY: Wingdings;
TEXT-ALIGN: left
+ }
+ .weaponTwoHanded {
+ FONT-SIZE: 6pt; VERTICAL-ALIGN: bottom; FONT-FAMILY: Verdana
+ }
+ .weaponThrown {
+ FONT-SIZE: 9pt; VERTICAL-ALIGN: top; FONT-FAMILY: Wingdings3;
TEXT-ALIGN: left
+ }
+ .loadText {
+ MARGIN-TOP: 0ex; FONT-SIZE: 6pt; MARGIN-BOTTOM: 0ex;
TEXT-TRANSFORM: uppercase; FONT-FAMILY: Verdana; TEXT-ALIGN: center
+ }
+ .loadTotalCarried {
+ MARGIN-TOP: 0ex; FONT-WEIGHT: bold; FONT-SIZE: 8pt;
MARGIN-BOTTOM: 0ex; FONT-FAMILY: Verdana; TEXT-ALIGN: center
+ }
+ .classFeatureHead {
+ MARGIN-TOP: 0ex; FONT-WEIGHT: bold; FONT-SIZE: 7pt;
MARGIN-BOTTOM: 0ex; MARGIN-LEFT: 1ex; TEXT-TRANSFORM: uppercase; COLOR:
#666666; FONT-FAMILY: Verdana; TEXT-ALIGN: left
+ }
+ .classFeatureText {
+ MARGIN-TOP: 0ex; FONT-SIZE: 8pt; MARGIN-BOTTOM: 0ex;
MARGIN-LEFT: 1ex; FONT-FAMILY: Verdana; TEXT-ALIGN: left
+ }
+ .tableHeadingText {
+ MARGIN-TOP: 0ex; FONT-WEIGHT: bold; FONT-SIZE: 9pt;
MARGIN-BOTTOM: 0ex; MARGIN-LEFT: 1ex; TEXT-TRANSFORM: uppercase; COLOR:
#ffffff; FONT-FAMILY: Verdana
+ }
+ .tableBodyText {
+ MARGIN-TOP: 0ex; FONT-SIZE: 7pt; MARGIN-BOTTOM: 0ex;
FONT-FAMILY: Verdana
+ }
+ .tableColumnText {
+ MARGIN-TOP: 0ex; FONT-WEIGHT: bold; FONT-SIZE: 6pt;
MARGIN-BOTTOM: 0ex; TEXT-TRANSFORM: uppercase; COLOR: #ffffff; FONT-FAMILY:
Verdana; TEXT-ALIGN: center
+ }
+ .featText {
+ MARGIN-TOP: 0ex; FONT-SIZE: 7pt; MARGIN-BOTTOM: 0ex;
MARGIN-LEFT: 1ex; FONT-FAMILY: Verdana; TEXT-ALIGN: left
+ }
+ .italic {
+ FONT-STYLE: italic
+ }
+ .bold {
+ FONT-WEIGHT: bold
+ }
+ .upCase {
+ TEXT-TRANSFORM: uppercase
+ }
+ .cellUnderline {
+ BORDER-BOTTOM: black 1px solid
+ }
+ .tableHeading {
+ BORDER-TOP: black 1px solid; BORDER-BOTTOM: black 1px solid;
BACKGROUND-COLOR: #000000
+ }
+ .tableSubHeading {
+ BORDER-TOP: #dddddd 1px solid; BORDER-BOTTOM: #dddddd 1px solid;
BACKGROUND-COLOR: #dddddd
+ }
+ A {
+ color: #000000;
+ text-decoration: none;
+ }
+ .tableSubHeadingTopRuled {
+ background-color:#DDDDDD;
+ border-top:1px solid #000000;
+ border-bottom:1px solid #DDDDDD;
+ }
+ .tableSubColumnText {
+ font-family:Verdana;
+ font-size:6pt;
+ font-weight:bold;
+ color:#000000;
+ text-align:center;
+ text-transform:uppercase;
+ margin-bottom:0ex;
+ margin-top:0ex;
+ }
+ .cellRangeIncHeading {
+ background-color:#666666;
+ xborder-right:1px solid white;
+ }
+ .cellRangeIncHeadingText {
+ font-family: Verdana;
+ font-size:6pt;
+ font-weight:bold;
+ color:#FFFFFF;
+ text-align:center;
+ text-transform:uppercase;
+ }
+ .cellRangeIncTop {
+ background-color:#DDDDDD;
+ border-right:1px solid white;
+ }
+ .cellRangeIncBottom {
+ background-color:#DDDDDD;
+ border-right:1px solid white;
+ border-top:1px solid white;
+ }
+ .cellRangeIncText {
+ font-family: Verdana;
+ font-size:6pt;
+ text-align:center;
+ }
+ .cellRangeIncTextHvy {
+ font-family: Verdana;
+ font-size:6pt;
+ font-weight:bold;
+ text-align:center;
+ }
+ </style>
+ </head>
+ <body bgColor="white">
+ <table cellSpacing="0" cellPadding="0" width="100%" border="0">
+ <tbody>
+ <tr>
+ <td vAlign="top" align="left" width="83%">
+ <table cellSpacing="0" cellPadding="0" width="100%" border="0">
+ <tbody>
+ <tr vAlign="bottom">
+ <td style="BORDER-BOTTOM: black 1pt solid"><b><font
style="FONT-SIZE: 12pt" face="ForgottenUncial, timesnewroman,
Verdana"><xsl:value-of select="CharacterName"/></font></b></td>
+ <td style="BORDER-BOTTOM: black 1pt solid" align="right"><font
style="FONT-SIZE: 10pt" face="ForgottenUncial, timesnewroman,
Verdana"><xsl:value-of select="PlayerName"/></font></td>
+ </tr>
+ </tbody></table>
+ <table cellSpacing="0" cellPadding="0" width="100%" border="0">
+ <tbody>
+ <tr>
+ <td class="v6w" align="middle" bgColor="black"><b>CHARACTER
BIO</b></td>
+ </tr>
+ <tr>
+ <td class="v8"><b><xsl:value-of select="CharacterName"/></b> is
a <b><xsl:value-of select="Age"/></b> year old, <b><xsl:value-of
select="Size"/></b> sized,
+ <b><xsl:value-of select="Gender"/></b><xsl:text>
</xsl:text><b><xsl:value-of select="Race"/></b>
+ <xsl:choose>
+ <xsl:when test="FullType">
+ (<b><xsl:value-of select="FullType"/></b>).
+ </xsl:when>
+ <xsl:otherwise>
+ (<b>Humanoid</b>).
+ </xsl:otherwise>
+ </xsl:choose>
+ Stands <b><xsl:value-of select="Height"/></b> tall and weighs
<b><xsl:value-of select="Weight"/></b> World view
+ is <b><xsl:value-of select="Alignment"/></b> in nature.
+ <xsl:if test="Deity != ''">
+ Currently a worshiper of <b><xsl:value-of
select="Deity"/></b><i>
+ <xsl:if test="Domains/Domain">
+ (<xsl:for-each select="Domains/Domain">
+ <a target="domain"><xsl:attribute name="href"><xsl:value-of
select="HelpPage"/></xsl:attribute><xsl:value-of
select="DomainName"/></a><xsl:if test="position() != last()">, </xsl:if>
+ </xsl:for-each>)</xsl:if>.</i>
+ </xsl:if>
+ </td>
+ </tr>
+ <tr>
+ <td class="v1" style="BORDER-BOTTOM: black 1px solid"><br/>
+ </td>
+ </tr>
+ </tbody></table>
+ <table cellSpacing="0" cellPadding="0" width="100%" border="0">
+ <tbody>
+ <tr bgColor="#dddddd">
+ <td class="v6" align="middle" width="20%"><b>CHARACTER
LEVEL</b></td>
+ <td class="v6" align="left" width="80%"><b>CLASSES and
LEVELS</b></td>
+ </tr>
+ <tr>
+ <td class="v8" align="middle"><xsl:value-of
select="Level"/></td>
+ <td class="v8" align="left">
+ <xsl:for-each select="Classes/Class">
+ <a target="class"><xsl:attribute name="href"><xsl:value-of
select="HelpPage"/></xsl:attribute><xsl:value-of
select="ClassName"/></a><xsl:text> </xsl:text><xsl:value-of
select="ClassLevel"/>
+ <xsl:if test="position() != last()"> / </xsl:if>
+ </xsl:for-each>
+ </td>
+ </tr>
+ <tr>
+ <td class="v1" style="BORDER-BOTTOM: black 1px solid"
colSpan="2"><br/>
+ </td>
+ </tr>
+ </tbody></table>
+ <table cellSpacing="0" cellPadding="0" width="100%" border="0">
+ <tbody>
+ <tr bgColor="#dddddd">
+ <td class="v6" align="middle" width="15%"><b>CURRENT
EXPERIENCE</b></td>
+ <td class="v6" align="middle" width="15%"><b>NEXT LEVEL
AT</b></td>
+ <td class="v6" align="middle" width="15%"><b>NEEDED TO MAKE
LEVEL</b></td>
+ <td class="v6" align="middle" width="35%"><b>EXPERIENCE GAINED
IN PLAY</b></td>
+ </tr>
+ <tr vAlign="bottom">
+ <xsl:variable name="totallevel" select="Level"/>
+ <xsl:variable name="nextlevel" select="NextLevel"/>
+ <xsl:variable name="xp" select="XP"/>
+ <xsl:variable name="xp2go" select="($nextlevel - $xp)"/>
+ <td class="v8" align="middle"><xsl:value-of
select="format-number($xp, '###,###,##0')"/></td>
+ <td class="v8" align="middle"><xsl:value-of
select="format-number($nextlevel, '###,###,##0')"/></td>
+ <td class="v8" align="middle"><xsl:value-of
select="format-number($xp2go, '###,###,##0')"/></td>
+ <td class="v8" align="middle"><br/>
+ </td>
+ </tr>
+ <tr>
+ <td class="v1" colSpan="4"><br/>
+ </td>
+ </tr>
+ </tbody></table>
+ </td>
+ <td width="1%"><br/>
+ </td>
+ <td vAlign="top" align="right" width="17%">
+ <p class="versionInfo">Character Sheet (RPGX) - v. 1.3.1</p>
+ <xsl:if test="$portrait-image != ''">
+ <img src="{$portrait-image}" height="154"/>
+ </xsl:if>
+ </td>
+ </tr>
+ </tbody></table>
+ <table cellSpacing="0" cellPadding="0" width="100%" border="0">
+ <tbody>
+ <tr>
+ <td class="v6w" style="BORDER-TOP: black 1px solid" align="middle"
width="5%" bgColor="black">
+ <b>HP<br/>TRACK</b>
+ </td>
+ <td class="v6" style="BORDER-TOP: black 1px solid" width="45%">
+ <br/>
+ </td>
+ <td class="v6" style="BORDER-TOP: black 1px solid" align="middle"
width="5%" bgColor="#dddddd">
+ <b>NON<br/>LETHAL</b>
+ </td>
+ <td class="v6" style="BORDER-TOP: black 1px solid" width="20%">
+ <br/>
+ </td>
+ <td class="v6w" style="BORDER-TOP: black 1px solid" align="middle"
width="5%" bgColor="black">
+ <b>AC<br/>TRACK</b>
+ </td>
+ <td class="v6" style="BORDER-TOP: black 1px solid" width="10%">
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td class="v1" style="BORDER-BOTTOM: black 2px solid" colSpan="6">
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td class="v3" colSpan="6">
+ <br/>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table cellSpacing="0" cellPadding="0" width="100%" bgColor="white"
border="0">
+ <tbody>
+ <tr>
+ <td width="15%"></td>
+ <td width="10%"></td>
+ <td width="20%"></td>
+ <td width="13%"></td>
+ <td width="12%"></td>
+ <td width="14%"></td>
+ <td width="16%"></td>
+ </tr>
+ <tr>
+ <td vAlign="top" colSpan="2" rowSpan="2">
+ <table width="100%">
+ <tbody>
+ <tr>
+ <td class="v4" align="middle" width="24%">
+ ABILITY<br/>NAME
+ </td>
+ <td class="v4" align="middle" width="19%">
+ ABILITY<br/>SCORE
+ </td>
+ <td class="v4" align="middle" width="19%">
+ ABILITY<br/>MODIFIER
+ </td>
+ <td class="v4" align="middle" width="19%">
+ TEMPORARY<br/>SCORE
+ </td>
+ <td class="v4" align="middle" width="19%">
+ TEMPORARY<br/>MODIFIER
+ </td>
+ </tr>
+ <tr>
+ <td class="v10w" align="middle" bgColor="black">
+ <b>STR</b><br/>
+ </td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="STR"/></b><br/>
+ </td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="STRMod"/></b><br/>
+ </td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+ <br/>
+ </td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td class="v10w" align="middle" bgColor="black">
+ <b>DEX</b><br/>
+ </td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="DEX"/></b><br/>
+ </td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="DEXMod"/></b><br/>
+ </td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+ <br/>
+ </td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td class="v10w" align="middle" bgColor="black">
+ <b>CON</b><br/>
+ </td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="CON"/></b><br/>
+ </td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="CONMod"/></b><br/>
+ </td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+ <br/>
+ </td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td class="v10w" align="middle" bgColor="black">
+ <b>INT</b><br/>
+ </td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="INT"/></b><br/>
+ </td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="INTMod"/></b><br/>
+ </td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+ <br/>
+ </td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td class="v10w" align="middle" bgColor="black">
+ <b>WIS</b><br/>
+ </td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="WIS"/></b><br/>
+ </td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="WISMod"/></b><br/>
+ </td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+ <br/>
+ </td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td class="v10w" align="middle" bgColor="black">
+ <b>CHA</b><br/>
+ </td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="CHA"/></b><br/>
+ </td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="CHAMod"/></b><br/>
+ </td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+ <br/>
+ </td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+ <br/>
+ </td>
+ </tr>
+ </tbody></table>
+ </td>
+ <td vAlign="top" colSpan="5">
+ <table width="100%" border="0">
+ <tbody>
+ <tr vAlign="bottom">
+ <td></td>
+ <td class="v4" vAlign="bottom" align="middle">
+ TOTAL
+ </td>
+ <td class="v4" align="middle" colSpan="9">
+ HIT DIE TYPE
+ </td>
+ <td class="v4" align="middle" colSpan="6">
+ DAMAGE<br/>REDUCTION
+ </td>
+ <td></td>
+ <td colSpan="2"></td>
+ <td class="v4" align="middle" colSpan="6">
+ MOVEMENT TYPES and RATES
+ </td>
+ </tr>
+ <tr>
+ <td class="v9w" align="middle" bgColor="black">
+ <b>HP</b><br/><span class="v5w">POINTS</span>
+ </td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="HP"/></b>
+ </td>
+ <td class="v7" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle" colSpan="9">
+ <b>
+ <xsl:for-each select="Classes/Class">
+ <xsl:value-of select="ClassLevel"/><xsl:value-of
select="HitDice"/>
+ <xsl:if test="position() != last()"> + </xsl:if>
+ </xsl:for-each>
+ <xsl:if test="translate(CONMod, $removeplus, $replaceplus) !=
0">
+ <xsl:if test="(sum(Classes/Class/ClassLevel) *
translate(CONMod, $removeplus, $replaceplus)) > -1"><xsl:text>
</xsl:text>+<xsl:text> </xsl:text></xsl:if>
+ <xsl:value-of select="sum(Classes/Class/ClassLevel) *
translate(CONMod, $removeplus, $replaceplus)"/>
+ </xsl:if>
+ </b>
+ </td>
+ <td class="v7" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle" colSpan="6">
+ <b><xsl:value-of select="DR"/><br/></b>
+ </td>
+ <td></td>
+ <td class="v9w" align="middle" bgColor="black" colSpan="2">
+ <b>SPEED</b><br/><span class="v5w">MOVE</span>
+ </td>
+ <td class="v8" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle" colSpan="6">
+ <b>
+ <xsl:if test="Speed">
+ <xsl:value-of select="Speed"/>
+ <xsl:if test="Fly or Climb or Swim or Burrow">,</xsl:if>
+ </xsl:if>
+ <xsl:if test="Fly">
+ fly <xsl:value-of select="Fly"/>
+ <xsl:if test="Climb or Swim or Burrow">,</xsl:if>
+ </xsl:if>
+ <xsl:if test="Climb">
+ climb <xsl:value-of select="Climb"/>
+ <xsl:if test="Swim or Burrow">,</xsl:if>
+ </xsl:if>
+ <xsl:if test="Swim">
+ swim <xsl:value-of select="Swim"/>
+ <xsl:if test="Burrow">,</xsl:if>
+ </xsl:if>
+ <xsl:if test="Burrow">
+ burrow <xsl:value-of select="Burrow"/>
+ </xsl:if>
+ </b>
+ </td>
+ </tr>
+ <tr>
+ <td width="7%"></td>
+ <td width="5%"></td>
+ <td width="5%"></td>
+ <td width="5%"></td>
+ <td width="5%"></td>
+ <td width="1%"></td>
+ <td width="5%"></td>
+ <td width="1%"></td>
+ <td width="5%"></td>
+ <td width="1%"></td>
+ <td width="5%"></td>
+ <td width="1%"></td>
+ <td width="5%"></td>
+ <td width="1%"></td>
+ <td width="5%"></td>
+ <td width="1%"></td>
+ <td width="5%"></td>
+ <td width="1%"></td>
+ <td width="5%"></td>
+ <td width="1%"></td>
+ <td width="5%"></td>
+ <td width="1%"></td>
+ <td width="6%"></td>
+ <td width="6%"></td>
+ <td width="6%"></td>
+ <td width="6%"></td>
+ </tr>
+ <tr>
+ <td class="v9w" align="middle" bgColor="black">
+ <b>AC</b><br/><span class="v5w">ARMOR</span>
+ </td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="AC"/></b>
+ </td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="ACFlatfooted"/></b>
+ </td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="ACTouch"/></b>
+ </td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="ACHelpless"/></b>
+ </td>
+ <td class="v7" align="middle"><b>=</b></td>
+ <td class="v9" align="middle"><b>10</b></td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="ArmorClass/ArmorBonus"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="ArmorClass/ShieldBonus"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="ArmorClass/DexBonus"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="ArmorClass/SizeBonus"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="ArmorClass/NaturalArmorBonus"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="AC - 10 - ArmorClass/ArmorBonus -
ArmorClass/ShieldBonus - ArmorClass/DexBonus - ArmorClass/SizeBonus -
ArmorClass/NaturalArmorBonus"/></b>
+ </td>
+ <td rowSpan="2"></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><br/></b>
+ </td>
+ <td rowSpan="2"></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="translate(SpellFailureArmor,
$removepercent, $replacepercent) + translate(SpellFailureShield,
$removepercent, $replacepercent)"/>%<br/></b>
+ </td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b>
+ <xsl:choose>
+ <xsl:when test="EncumbranceCheckPenalty"><xsl:value-of
select="EncumbranceCheckPenalty"/></xsl:when>
+ <xsl:when test="ArmorCheckPenalty != '' and
ShieldCheckPenalty != ''"><xsl:value-of select="ArmorCheckPenalty +
ShieldCheckPenalty"/></xsl:when>
+ <xsl:when test="ArmorCheckPenalty != ''"><xsl:value-of
select="ArmorCheckPenalty"/></xsl:when>
+ <xsl:when test="ShieldCheckPenalty != ''"><xsl:value-of
select="ShieldCheckPenalty"/></xsl:when>
+ </xsl:choose>
+ <br/></b>
+ </td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="ArmorMaxDex"/><br/></b>
+ </td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><br/></b>
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="v4" vAlign="top" align="middle">
+ NORMAL
+ </td>
+ <td class="v4" align="middle">
+ FLAT<br/>FOOTED
+ </td>
+ <td class="v4" align="middle">
+ TOUCH<br/>AC
+ </td>
+ <td class="v4" align="middle">
+ HELPLESS<br/>AC
+ </td>
+ <td></td>
+ <td class="v4" vAlign="top" align="middle">
+ BASE
+ </td>
+ <td></td>
+ <td class="v4" align="middle">
+ ARMOR<br/>BONUS
+ </td>
+ <td></td>
+ <td class="v4" align="middle">
+ SHIELD<br/>BONUS
+ </td>
+ <td></td>
+ <td class="v4" align="middle">
+ DEX<br/>BONUS
+ </td>
+ <td></td>
+ <td class="v4" align="middle">
+ SIZE<br/>BONUS
+ </td>
+ <td></td>
+ <td class="v4" align="middle">
+ NATURAL<br/>ARMOR
+ </td>
+ <td></td>
+ <td class="v4" align="middle">
+ MISC<br/>BONUS
+ </td>
+ <td class="v4" align="middle">
+ MISS<br/>CHANCE
+ </td>
+ <td class="v4" align="middle">
+ % SPELL<br/>FAILURE
+ </td>
+ <td class="v4" align="middle">
+ ARMOR<br/>CHECK
+ </td>
+ <td class="v4" align="middle">
+ MAX<br/>DEX
+ </td>
+ <td class="v4" align="middle">
+ SPELL<br/>RESIST
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td vAlign="top" colSpan="4">
+ <table cellPadding="0" width="100%" border="0">
+ <tbody>
+ <tr vAlign="bottom">
+ <td class="v4" align="middle" width="20%"></td>
+ <td class="v4" vAlign="bottom" align="middle" width="10%">
+ TOTAL
+ </td>
+ <td></td>
+ <td class="v4" align="middle" width="9%">
+ BASE<br/>SAVE
+ </td>
+ <td></td>
+ <td class="v4" align="middle" width="9%">
+ ABILITY<br/>MODIFIER
+ </td>
+ <td></td>
+ <td class="v4" align="middle" width="9%">
+ MAGIC<br/>MODIFIER
+ </td>
+ <td></td>
+ <td class="v4" align="middle" width="9%">
+ MISC<br/>MODIFIER
+ </td>
+ <td></td>
+ <td class="v4" align="middle" width="9%">
+ TEMPORARY<br/>MODIFIER
+ </td>
+ <td></td>
+ <td class="v4" align="middle" width="25%">
+ CONDITIONAL<br/>MODIFIERS
+ </td>
+ </tr>
+ <tr>
+ <td class="v9w" align="middle" bgColor="black">
+ <b>FORTITUDE</b><br/>
+ <span class="v5w">CON</span>
+ </td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="Fortitude"/></b>
+ </td>
+ <td class="v7" align="middle"><b>=</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="SavingThrows/SavingThrow[Name
= 'Fortitude']/BaseSave"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="SavingThrows/SavingThrow[Name
= 'Fortitude']/AbilityModifier"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="SavingThrows/SavingThrow[Name
= 'Fortitude']/MagicSave"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="SavingThrows/SavingThrow[Name
= 'Fortitude']/MiscSave"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+  
+ </td>
+ <td class="v7" vAlign="center" align="middle"
rowSpan="3"><b>+</b></td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="left" valign="top" rowSpan="3" class="v7">
+ <xsl:for-each select="CoreModifiers/CoreModifier[Valid
= 'True' and Enabled = 'True' and SystemElement = 'Saving Throw' and
Condition != '']">
+ <xsl:sort select="Condition"/>
+ <xsl:if test="ModifierValue > 0">+</xsl:if><xsl:value-of
select="ModifierValue"/><xsl:text> </xsl:text><xsl:value-of
select="Condition"/><br/>
+ </xsl:for-each>
+ <xsl:if test="$hasrage = 1">
+ +<xsl:value-of select="($baseragestr div 2)"/> to Will saves
while in a rage
+ </xsl:if>
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td class="v9w" align="middle" bgColor="black">
+ <b>REFLEX</b><br/>
+ <span class="v5w">DEX</span>
+ </td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="Reflex"/></b>
+ </td>
+ <td class="v7" align="middle"><b>=</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="SavingThrows/SavingThrow[Name
= 'Reflex']/BaseSave"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="SavingThrows/SavingThrow[Name
= 'Reflex']/AbilityModifier"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="SavingThrows/SavingThrow[Name
= 'Reflex']/MagicSave"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="SavingThrows/SavingThrow[Name
= 'Reflex']/MiscSave"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+  
+ </td>
+ </tr>
+ <tr>
+ <td class="v9w" align="middle" bgColor="black">
+ <b>WILL</b><br/>
+ <span class="v5w">WIS</span>
+ </td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="Will"/></b>
+ </td>
+ <td class="v7" align="middle"><b>=</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="SavingThrows/SavingThrow[Name
= 'Will']/BaseSave"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="SavingThrows/SavingThrow[Name
= 'Will']/AbilityModifier"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="SavingThrows/SavingThrow[Name
= 'Will']/MagicSave"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="SavingThrows/SavingThrow[Name
= 'Will']/MiscSave"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+  
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ <td vAlign="top" align="right">
+ <table width="95%" border="0">
+ <tbody>
+ <tr>
+ <td class="v9w" align="middle" width="40%" bgColor="black">
+ <b>BASE ATTACK</b>
+ </td>
+ </tr>
+ <tr>
+ <td class="v9" align="middle" width="60%" bgColor="#dddddd">
+ <b><xsl:value-of select="BAB1"/></b>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table cellPadding="0" width="95%" border="0">
+ <tbody>
+ <tr>
+ <td width="29%"></td>
+ <td width="2%"></td>
+ <td width="29%"></td>
+ <td width="2%"></td>
+ <td width="28%"></td>
+ </tr>
+ <tr>
+ <td class="v9w" align="middle" bgColor="black" colSpan="5">
+ <b>INITIATIVE</b><br/><span class="v5w">MODIFIER</span>
+ </td>
+ </tr>
+ <tr>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="Initiative"/></b>
+ </td>
+ <td class="v7" align="middle">
+ <b>=</b>
+ </td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="translate(DEXMod, $removeplus,
$replaceplus)"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="translate(Initiative, $removeplus,
$replaceplus) - translate(DEXMod, $removeplus, $replaceplus)"/></b>
+ </td>
+ </tr>
+ <tr>
+ <td class="v4" vAlign="top" align="middle">
+ TOTAL
+ </td>
+ <td></td>
+ <td class="v4" vAlign="top" align="middle">
+ DEX MOD
+ </td>
+ <td></td>
+ <td class="v4" align="middle">
+ MISC
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ <td colSpan="2"></td>
+ </tr>
+ <tr>
+ <td vAlign="top" colSpan="4">
+ <table cellPadding="0" width="99%">
+ <tbody>
+ <tr>
+ <td class="v10w" align="middle" bgColor="black">
+ <b>GRAPPLE</b><br/>
+ <span class="v5w">ATTACK BONUS</span>
+ </td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="Grapple"/></b>
+ </td>
+ <td class="v7" align="middle"><b>=</b></td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="translate(BAB1, $removeplus,
$replaceplus)"/></b>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="translate(STRMod, $removeplus,
$replaceplus)"/></b><br/>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b>
+ <xsl:choose>
+ <xsl:when test="Size = 'Fine'">-16</xsl:when>
+ <xsl:when test="Size = 'Diminutive'">-12</xsl:when>
+ <xsl:when test="Size = 'Tiny'">-8</xsl:when>
+ <xsl:when test="Size = 'Small'">-4</xsl:when>
+ <xsl:when test="Size = 'Medium'">0</xsl:when>
+ <xsl:when test="Size = 'Large'">4</xsl:when>
+ <xsl:when test="Size = 'Huge'">8</xsl:when>
+ <xsl:when test="Size = 'Gargantuan'">12</xsl:when>
+ <xsl:when test="Size = 'Colossal'">16</xsl:when>
+ </xsl:choose>
+ </b><br/>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b>
+ <xsl:choose>
+ <xsl:when test="Size = 'Fine'"><xsl:value-of
select="translate(Grapple, $removeplus, $replaceplus) - translate(BAB1,
$removeplus, $replaceplus) - translate(STRMod, $removeplus, $replaceplus)-
-16"/></xsl:when>
+ <xsl:when test="Size = 'Diminutive'"><xsl:value-of
select="translate(Grapple, $removeplus, $replaceplus) - translate(BAB1,
$removeplus, $replaceplus) - translate(STRMod, $removeplus, $replaceplus) -
-12"/></xsl:when>
+ <xsl:when test="Size = 'Tiny'"><xsl:value-of
select="translate(Grapple, $removeplus, $replaceplus) - translate(BAB1,
$removeplus, $replaceplus) - translate(STRMod, $removeplus, $replaceplus) -
-8"/></xsl:when>
+ <xsl:when test="Size = 'Small'"><xsl:value-of
select="translate(Grapple, $removeplus, $replaceplus) - translate(BAB1,
$removeplus, $replaceplus) - translate(STRMod, $removeplus, $replaceplus) -
-4"/></xsl:when>
+ <xsl:when test="Size = 'Medium'"><xsl:value-of
select="translate(Grapple, $removeplus, $replaceplus) - translate(BAB1,
$removeplus, $replaceplus) - translate(STRMod, $removeplus, $replaceplus) -
0"/></xsl:when>
+ <xsl:when test="Size = 'Large'"><xsl:value-of
select="translate(Grapple, $removeplus, $replaceplus) - translate(BAB1,
$removeplus, $replaceplus) - translate(STRMod, $removeplus, $replaceplus) -
4"/></xsl:when>
+ <xsl:when test="Size = 'Huge'"><xsl:value-of
select="translate(Grapple, $removeplus, $replaceplus) - translate(BAB1,
$removeplus, $replaceplus) - translate(STRMod, $removeplus, $replaceplus) -
8"/></xsl:when>
+ <xsl:when test="Size = 'Gargantuan'"><xsl:value-of
select="translate(Grapple, $removeplus, $replaceplus) - translate(BAB1,
$removeplus, $replaceplus) - translate(STRMod, $removeplus, $replaceplus) -
12"/></xsl:when>
+ <xsl:when test="Size = 'Colossal'"><xsl:value-of
select="translate(Grapple, $removeplus, $replaceplus) - translate(BAB1,
$removeplus, $replaceplus) - translate(STRMod, $removeplus, $replaceplus) -
16"/></xsl:when>
+ </xsl:choose>
+ </b><br/>
+ </td>
+ <td class="v7" align="middle"><b>+</b></td>
+ <td style="BORDER-RIGHT: #dddddd 3px solid; BORDER-TOP: #dddddd
3px solid; BORDER-LEFT: #dddddd 3px solid; BORDER-BOTTOM: #dddddd 3px
solid" align="middle">
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td class="v10w" align="middle" bgColor="black">
+ <b>MELEE</b><br/>
+ <span class="v5w">ATTACK BONUS</span>
+ </td>
+ <td class="v9" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
+ <b><xsl:value-of select="Melee"/></b>
+ </td>
+ <td class="v7" align="middle"><b>=</b></td>
+ <td class="v10" style="BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM:
black 1px solid" align="middle">
***The diff for this file has been truncated for email.***
=======================================
--- /dev/null
+++ /trunk/charmgrjs/resources/config/config.xsl Fri Sep 25 10:40:09 2009
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
xmlns:xsl="
http://www.w3.org/1999/XSL/Transform">
+ <xsl:output method="html" indent="no" encoding="UTF-8"/>
+
+ <!-- INSTALLATION DIRECTORY -->
+ <!-- Unless you have installed RPGXplorer to something other than the
default directory, you should not need to change this line. -->
+ <xsl:variable name="InstallPath" select="'file://C:/Program
Files/RPGXplorer/Characters and Rules'"/>
+
+ <!-- SPELL POINTS -->
+ <!-- Change the word No to Yes to use spell points. Keep the ''. This IS
case-sensitive. -->
+ <xsl:variable name="UseSpellPoints" select="'No'"/>
+
+ <!-- INVENTORY LINES -->
+ <!-- This is the number of additional blank inventory lines you would
like to include on your character sheets. -->
+ <xsl:variable name="BlankInventoryLines" select="0"/>
+
+ <!-- ADDITIONAL SKILLS FOR CHARACTER CARD -->
+ <!-- These are the four additional skills that appear on the Character
Card sheets. You can change the skills displayed by changing the names
here. The names ARE case-sensitive. -->
+ <xsl:variable name="ExtraSkill1" select="'Climb'"/>
+ <xsl:variable name="ExtraSkill2" select="'Jump'"/>
+ <xsl:variable name="ExtraSkill3" select="'Sleight of Hand'"/>
+ <xsl:variable name="ExtraSkill4" select="'Tumble'"/>
+
+ <!-- SPELLS PREPARED -->
+ <!-- Use Spells Prepared for classes that prepare spells by default. A
value of Yes means that casters who prepare spells will print only the
spells they have prepared. A value of No will print all of the spells they
have access to (old behaviour). This does not affect spontaneous casting
classes.-->
+ <xsl:variable name="UseSpellsPrepared" select="'Yes'"/>
+
+</xsl:stylesheet>
=======================================
--- /dev/null
+++ /trunk/charmgrjs/resources/config/rage.xsl Fri Sep 25 10:40:09 2009
@@ -0,0 +1,131 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
xmlns:xsl="
http://www.w3.org/1999/XSL/Transform">
+ <xsl:output method="html" indent="no" encoding="UTF-8"/>
+
+ <!-- Barb Rage -->
+ <xsl:variable name="hasrage">
+ <xsl:choose>
+ <xsl:when
test="/CharacterXMLDataset/Character/Features/Feature/FeatureName/text()[contains(.,'Rage')]">
+ <xsl:value-of select="1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- Base Rage STR/CON Modifier -->
+ <xsl:variable name="baseragestr">
+ <xsl:choose>
+ <xsl:when
test="/CharacterXMLDataset/Character/Features/Feature/FeatureName/text()[contains(.,'Mighty
Rage')]">
+ <xsl:value-of select="8"/>
+ </xsl:when>
+ <xsl:when
test="/CharacterXMLDataset/Character/Features/Feature/FeatureName/text()[contains(.,'Greater
Rage') or contains(.,'Tireless Rage')]">
+ <xsl:value-of select="6"/>
+ </xsl:when>
+ <xsl:when
test="/CharacterXMLDataset/Character/Features/Feature/FeatureName/text()[contains(.,'Rage')]">
+ <xsl:value-of select="4"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- End Base Rage STR/CON Modifier -->
+ <!-- Base Rage AC Modifier -->
+ <xsl:variable name="baserageac">
+ <xsl:choose>
+ <xsl:when
test="/CharacterXMLDataset/Character/Features/Feature/FeatureName/text()[contains(.,'Rage')]">
+ <xsl:value-of select="-2"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- End Base Rage AC Modifier -->
+ <!-- Base Rage/day -->
+ <xsl:variable name="baserageday">
+ <xsl:choose>
+ <xsl:when
test="/CharacterXMLDataset/Character/Features/Feature/FeatureName/text()[contains(.,'Rage')]">
+ <xsl:value-of
select="substring-before(substring-after(/CharacterXMLDataset/Character/Features/Feature/FeatureName/text()[contains(.,'Rage')], 'Rage '), '/Day')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- End Base Rage/day -->
+ <!-- Base Rage Length -->
+ <xsl:variable name="baseragelength"
select="translate(/CharacterXMLDataset/Character/CONMod, $removeplus,
$replaceplus) + 3"></xsl:variable>
+ <!-- End Base RageLength -->
+
+ <!-- Bonus Rage STR/CON Modifier -->
+ <xsl:variable name="modragestr">
+ <xsl:choose>
+ <xsl:when
test="/CharacterXMLDataset/Character/Feats/Feat/FeatName/text() = 'Reckless
Rage'">
+ <xsl:value-of select="2"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- End Bonus Rage STR/CON Modifier -->
+ <!-- Bonus Rage AC Modifier -->
+ <xsl:variable name="modrageac">
+ <xsl:choose>
+ <xsl:when
test="/CharacterXMLDataset/Character/Feats/Feat/FeatName/text() = 'Reckless
Rage'">
+ <xsl:value-of select="-2"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- End Bonus Rage AC Modifier -->
+ <!-- Bonus Rage AC Modifier -->
+ <xsl:variable name="modrageday">
+ <xsl:choose>
+ <xsl:when
test="/CharacterXMLDataset/Character/Feats/Feat/FeatName/text() = 'Extra
Rage'">
+ <xsl:value-of select="2 *
count(/CharacterXMLDataset/Character/Feats/Feat/FeatName[text() = 'Extra
Rage'])"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- End Bonus Rage AC Modifier -->
+
+ <!-- Bonus Rage Length (Extend Rage) -->
+ <xsl:variable name="modragelength">
+ <xsl:choose>
+ <xsl:when
test="/CharacterXMLDataset/Character/Feats/Feat/FeatName/text() = 'Extend
Rage'">
+ <xsl:value-of select="5 *
count(/CharacterXMLDataset/Character/Feats/Feat/FeatName[text() = 'Extend
Rage'])"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- End Bonus Rage Length (Extend Rage) -->
+ <!-- Bonus Rage Length (Reckless Rage) -->
+ <xsl:variable name="modragelength2">
+ <xsl:choose>
+ <xsl:when
test="/CharacterXMLDataset/Character/Feats/Feat/FeatName/text() = 'Reckless
Rage'">
+ <xsl:value-of select="1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- End Bonus Rage Length (Reckless Rage) -->
+
+ <!-- Final Values -->
+ <xsl:variable name="ragestr" select="$baseragestr + $modragestr"/>
+ <xsl:variable name="rageac" select="$baserageac + $modrageac"/>
+ <xsl:variable name="rageday" select="$baserageday + $modrageday"/>
+ <xsl:variable name="ragelength" select="$baseragelength + ($baseragestr
div 2) + $modragelength + $modragelength2"/>
+
+ <!-- End Rage -->
+</xsl:stylesheet>
=======================================
--- /dev/null
+++ /trunk/charmgrjs/resources/config/turning.xsl Fri Sep 25 10:40:09 2009
@@ -0,0 +1,79 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
xmlns:xsl="
http://www.w3.org/1999/XSL/Transform">
+ <xsl:output method="html" indent="no" encoding="UTF-8"/>
+ <xsl:variable name="removebracket">()</xsl:variable>
+ <xsl:variable name="replacebracket"></xsl:variable>
+
+ <!-- Turning -->
+ <!-- Determine the base effective cleric level: Class level for all
classes with Turn Undead Tag + (Class level - 3) for all classes with Turn
Undead -3 Tag -->
+ <xsl:variable name="baseclericlevel">
+ <xsl:value-of
select="sum(/CharacterXMLDataset/Character/Classes/Class[contains(Tags,'Turn
Undead') and not(contains(Tags, 'Turn Undead -'))]/ClassLevel) +
(sum(/CharacterXMLDataset/Character/Classes/Class[contains(Tags,'Turn
Undead -3')]/ClassLevel) +
(count(/CharacterXMLDataset/Character/Classes/Class[contains(Tags,'Turn
Undead -3')]) * -3)) +
(sum(/CharacterXMLDataset/Character/Classes/Class[contains(Tags,'Turn
Undead -2')]/ClassLevel) +
(count(/CharacterXMLDataset/Character/Classes/Class[contains(Tags,'Turn
Undead -2')]) * -2)) +
(sum(/CharacterXMLDataset/Character/Classes/Class[contains(Tags,'Turn
Undead -1')]/ClassLevel) +
(count(/CharacterXMLDataset/Character/Classes/Class[contains(Tags,'Turn
Undead -1')]) * -1))"/>
+ </xsl:variable>
+
+ <!-- Glory domain bonuses: +2 to effective cleric level, +1d6 of turning
damage -->
+ <xsl:variable name="glorybonus">
+ <xsl:choose>
+ <xsl:when
test="/CharacterXMLDataset/Character/Domains/Domain[DomainName = 'Glory']">
+ <xsl:value-of select="2"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="glorydamage">
+ <xsl:choose>
+ <xsl:when
test="/CharacterXMLDataset/Character/Domains/Domain[DomainName = 'Glory']">
+ <xsl:value-of select="1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Determine the number of turning dice: base 2d6 + bonus granted from
Glory domain if applicable -->
+ <xsl:variable name="turningdice" select="2 + $glorydamage"/>
+
+ <!-- Determine number of additional turning attempts: +4 for each time
Extra Turning feat was taken -->
+ <xsl:variable name="cextraturns">
+ <xsl:value-of select="4 *
count(/CharacterXMLDataset/Character/CoreModifiers/CoreModifier[Source
= 'Extra Turning']/ModifierValue)"/>
+ </xsl:variable>
+ <!-- Determine bonus to effective cleric level: +1 for each time Improved
Turning feat was taken -->
+ <xsl:variable name="turnlvladder">
+ <xsl:value-of
select="count(/CharacterXMLDataset/Character/Feats/Feat[FeatName
= 'Improved Turning'])"/>
+ </xsl:variable>
+ <!-- +2 bonus from Knowledge (religion) -->
+ <xsl:variable name="religion">
+ <xsl:choose>
+ <xsl:when test="/CharacterXMLDataset/Character/Skills/Skill[SkillName
= 'Knowledge (Religion)']/SkillRanks > 4">
+ <xsl:value-of select="2"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- Necromantic Prowess -->
+ <xsl:variable name="prowess">
+ <xsl:choose>
+ <xsl:when
test="/CharacterXMLDataset/Character/Features/Feature/FeatureName/text()[contains(.,'Necromantic
Prowess')]">
+ <xsl:value-of
select="translate(substring-after(/CharacterXMLDataset/Character/Features/Feature/FeatureName/text()[contains(.,'Necromantic
Prowess')], '+ '), $removebracket, $replacebracket)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- Determine final values -->
+ <xsl:variable name="effclericlevel" select ="$baseclericlevel +
$turnlvladder + $prowess" />
+ <xsl:variable name="turn-bonus"
select="translate(/CharacterXMLDataset/Character/CHAMod, '+', '')"/>
+ <xsl:variable name="one-half" select="'½'"/>
+ <xsl:variable name="turnperday"
select="translate(/CharacterXMLDataset/Character/CHAMod, $removeplus,
$replaceplus) + 3" />
+ <!-- End Turning -->
+
+ <xsl:variable name="TotalTurnUndeadPerDay" select="$turnperday +
$cextraturns"/>
+ <xsl:variable name="TotalTurningCheck" select="$turn-bonus + $religion +
$glorybonus"/>
+
+</xsl:stylesheet>
=======================================
--- /trunk/charmgrjs/classes.js Wed Sep 23 19:56:46 2009
+++ /trunk/charmgrjs/classes.js Fri Sep 25 10:40:09 2009
@@ -44,7 +44,7 @@
classes = new TAFFY([{
id: 0,
name: "Barbarian",
- shortname: "Brbn",
+ shortname: "Brb",
base_attack_bonus: [1, 2, 3, 4,
5, '6/1', '7/2', '8/3', '9/4', '10/5', '11/6/1', '12/7/2', '13/8/3', '14/9/4', '15/10/5', '16/11/6/1', '17/12/7/2', '18/13/8/3', '19/14/9/4', '20/15/10/5'],
fort_save: [2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,
11, 12],
ref_save: [0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6],
@@ -61,7 +61,7 @@
}, {
id: 1,
name: "Bard",
- shortname: "Bard",
+ shortname: "Brd",
base_attack_bonus:
['0', '1', '2', '3', '3', '4', '5', '6/1', '6/1', '7/2', '8/3', '9/4', '9/4', '10/5', '11/6/1', '12/7/2', '12/7/2', '13/8/3', '14/9/4', '15/10/5'],
fort_save: [0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6,
6],
ref_save: [2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,
11, 12],
@@ -78,7 +78,7 @@
}, {
id: 2,
name: "Cleric",
- shortname: "Clrc",
+ shortname: "Clr",
base_attack_bonus: [0, 1, 2, 3, 3, 4,
5, '6/1', '6/1', '7/2', '8/3', '9/4', '9/4', '10/5', '11/6/1', '12/7/2', '12/7/2', '13/8/3', '14/9/4', '15/10/5'],
fort_save: [2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,
11, 12],
ref_save: [0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6],
@@ -130,7 +130,7 @@
}, {
id: 5,
name: "Monk",
- shortname: "Monk",
+ shortname: "Mnk",
base_attack_bonus: [0, 1, 2, 3, 3, 4,
5, '6/1', '6/1', '7/2', '8/3', '9/4', '9/4', '10/5', '11/6/1', '12/7/2', '12/7/2', '13/8/3', '14/9/4', '15/10/5'],
fort_save: [2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,
11, 12],
ref_save: [2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,
11, 12],
@@ -146,7 +146,7 @@
// TODO - Impl turn undead (55)
id: 6,
name: "Paladin",
- shortname: "Pldn",
+ shortname: "Pal",
base_attack_bonus: [1, 2, 3, 4,
5, '6/1', '7/2', '8/3', '9/4', '10/5', '11/6/1', '12/7/2', '13/8/3', '14/9/4', '15/10/5', '16/11/6/1', '17/12/7/2', '18/13/8/3', '19/14/9/4', '20/15/10/5'],
fort_save: [2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,
11, 12],
ref_save: [0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6],
@@ -163,7 +163,7 @@
}, {
id: 7,
name: "Ranger",
- shortname: "Rngr",
+ shortname: "Rng",
base_attack_bonus: [1, 2, 3, 4,
5, '6/1', '7/2', '8/3', '9/4', '10/5', '11/6/1', '12/7/2', '13/8/3', '14/9/4', '15/10/5', '16/11/6/1', '17/12/7/2', '18/13/8/3', '19/14/9/4', '20/15/10/5'],
fort_save: [2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,
11, 12],
ref_save: [2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,
11, 12],
@@ -200,7 +200,7 @@
}, {
id: 9,
name: "Sorceror",
- shortname: "Srcr",
+ shortname: "Sor",
base_attack_bonus: [0, 1, 1, 2, 2, 3, 3, 4, 4, 5,
5, '6/1', '6/1', '7/2', '7/2', '8/3', '8/3', '9/4', '9/4', '10/5'],
fort_save: [0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6,
6],
ref_save: [0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6],
@@ -215,7 +215,7 @@
}, {
id: 10,
name: "Wizard",
- shortname: "Wzrd",
+ shortname: "Wiz",
base_attack_bonus: [0, 1, 1, 2, 2, 3, 3, 4, 4, 5,
5, '6/1', '6/1', '7/2', '7/2', '8/3', '8/3', '9/4', '9/4', '10/5'],
fort_save: [0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6,
6],
ref_save: [0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6],
=======================================
--- /trunk/charmgrjs/main.js Thu Sep 24 14:01:09 2009
+++ /trunk/charmgrjs/main.js Fri Sep 25 10:40:09 2009
@@ -154,18 +154,20 @@
// class special abilities
var class_specials = get_special_abilities(chardata);
var special_html = "";
- special_html += "<table style='border: 1px solid #D0D0D0' width='100%'
border='0' margin='0'><tbody><tr><td colspan='2' bgcolor='#8DC3E9'
onclick='show_specials()'><a class='fake_link'
onclick='show_specials()'>Special Abilities</a><span
id='specials_expand_flag' class='box'>+</span></td></tr></tbody><tbody
id='specials'>";
- for (var i in class_specials) {
- if(class_specials[i] != null) {
- var checkbox = (class_specials[i].op != null ?
- "<input id='special_" + class_specials[i].id + "' type='checkbox'
onclick=\"" + class_specials[i].op + "\"/>" :
- "") ;
- special_html += "<tr id='special_" + class_specials[i].id + "'><td>" +
checkbox + "</td><td valign='top'><a class='fake_link'
onclick='show_item_detail(special_abilities, " + class_specials[i].id
+ ")'>";
- special_html += class_specials[i].name + (class_specials[i].mod ==
null ? "" : " " + class_specials[i].mod);
- special_html += "</a></td></tr>";
- }
- }
- special_html += "</tbody></table>";
+ if (class_specials.length > 0) {
+ special_html += "<table style='border: 1px solid #D0D0D0' width='100%'
border='0' margin='0'><tbody><tr><td colspan='2' bgcolor='#8DC3E9'
onclick='show_specials()'><a class='fake_link'
onclick='show_specials()'>Special Abilities</a><span
id='specials_expand_flag' class='box'>+</span></td></tr></tbody><tbody
id='specials'>";
+ for (var i in class_specials) {
+ if(class_specials[i] != null) {
+ var checkbox = (class_specials[i].op != null ?
+ "<input id='special_" + class_specials[i].id + "' type='checkbox'
onclick=\"" + class_specials[i].op + "\"/>" :
+ "") ;
+ special_html += "<tr id='special_" + class_specials[i].id + "'><td>" +
checkbox + "</td><td valign='top'><a class='fake_link'
onclick='show_item_detail(special_abilities, " + class_specials[i].id
+ ")'>";
+ special_html += class_specials[i].name + (class_specials[i].mod ==
null ? "" : " " + class_specials[i].mod);
+ special_html += "</a></td></tr>";
+ }
+ }
+ special_html += "</tbody></table>";
+ }
$('#specialpart').html(special_html);
$("tr[id^='special']:odd").css("background-color", "#EFF1F1");
$('#specials').hide();
=======================================
--- /trunk/charmgrjs/spells.js Thu Sep 24 13:53:33 2009
+++ /trunk/charmgrjs/spells.js Fri Sep 25 10:40:09 2009
@@ -2507,7 +2507,7 @@
save: "Will negs",
sr: "Yes",
phb: 224,
- detail: ""
+ detail: "This spell functions like <i>dominate person</i>, except that
the spell is not restricted by creature type."
}, {
id: 165,
name: "Dominate Person",
@@ -2522,7 +2522,7 @@
save: "Will negs",
sr: "Yes",
phb: 224,
- detail: ""
+ detail: "You can control the actions of any humanoid creature through
a telepathic link that you establish with the subject’s mind. If you and
the subject have a common language, you can generally force the subject to
perform as you desire, within the limits of its abilities. If no common
language exists, you can communicate only basic commands, such as “Come
here,” “Go there,” “Fight,” and “Stand still.” You know what the subject is
experiencing, but you do not receive direct sensory input from it, nor can
it communicate with you telepathically. <p class=sub>Once you have given a
<i>dominated</i> crea-ture a command, it continues to attempt to carry out
that command to the exclusion of all other activities except those
necessary for day-to-day survival (such as sleeping, eating, and so forth).
Because of this limited range of activity, a Sense Motive check against DC
15 (rather than DC 25) can determine that the subject’s behavior is being
influenced by an enchantment effect (see the Sense Motive skill
description, page 81). <p class=sub>Changing your instructions or giving a
dominated creature a new command is the equivalent of redirecting a spell,
so it is a move action. <p class=sub>By concentrating fully on the spell (a
standard action), you can receive full sensory input as interpreted by the
mind of the subject, though it still can’t communicate with you. You can’t
actually see through the subject’s eyes, so it’s not as good as being there
yourself, but you still get a good idea of what’s going on (the subject is
walking through a smelly courtyard, the subject is talking to a guard, the
guard looks suspicious, and so forth). <p class=sub>Subjects resist this
control, and any subject forced to take actions against its nature receives
a new saving throw with a +2 bonus. Obviously self-destructive orders are
not carried out. Once control is established, the range at which it can be
exercised is unlimited, as long as you and the subject are on the same
plane. You need not see the subject to control it.<p class=sub>If you don’t
spend at least 1 round con-centrating on the spell each day, the subject
receives a new saving throw to throw off the domination. <p
class=sub><i>Protection from evil</i> or a similar spell can prevent you
from exercising control or using the telepathic link while the subject is
so warded, but such an effect neither prevents the establishment of
dominationnor dispels it."
}, {
id: 166,
name: "Doom",
@@ -2537,7 +2537,7 @@
save: "Will negs",
sr: "Yes",
phb: 225,
- detail: ""
+ detail: "This spell fills a single subject with a feeling of horrible
dread that causes it to become shaken."
}, {
id: 167,
name: "Drawmij's Instant Summons",
@@ -2552,7 +2552,7 @@
save: "-",
sr: "-",
phb: 225,
- detail: ""
+ detail: "You call some nonliving item from virtually any location
directly to your hand. <p class=sub>First, you must place your arcane mark
(page 201) on the item. Then you cast this spell, which magically and
invisibly inscribes the name of the item on a sapphire worth at least 1,000
gp. Thereafter, you can summon the item by speaking a special word (set by
you when the spell is cast) and crushing the gem. The item appears
instantly in your hand. Only you can use the gem in this way. <p
class=sub>If the item is in the possession of another creature, the spell
does not work, but you know who the possessor is and roughly where that
creature is located when the summons occurs. <p class=sub>The inscription
on the gem is invisible. It is also unreadable, except by means of a read
magic spell, to anyone but you. <p class=sub>The item can be summoned from
another plane, but only if no other creature has claimed ownership of it.
<p class=sub><i>Material Component</i>: A sapphire worth at least 1,000 gp."
}, {
id: 168,
name: "Dream",
@@ -2567,7 +2567,7 @@
save: "-",
sr: "Yes",
phb: 225,
- detail: ""
+ detail: "You, or a messenger touched by you, sends a phantasmal
message to others in the form of a dream. At the beginning of the spell,
you must name the recipient or identify him or her by some title that
leaves no doubt as to identity. The messenger then enters a trance, appears
in the intended recipient’s dream, and delivers the message. The message
can be of any length, and the recipient remembers it perfectly upon waking.
The communi-cation is one-way. The recipient cannot ask questions or offer
information, nor can the messenger gain any information by observing the
dreams of the recipient. Once the message is delivered, the mes-senger’s
mind returns instantly to its body. The duration of the spell is the time
required for the messenger to enter the recipient’s dream and deliver the
message. <p class=sub>If the recipient is awake when the spell begins, the
messenger can choose to wake up (ending the spell) or remain in the trance.
The messenger can remain in the trance until the recipient goes to sleep,
then enter the recipient’s dream and de-liver the message as normal. A
messenger that is disturbed during the trance comes awake, ending the
spell. <p class=sub>Creatures who don’t sleep (such as elves, but not
half-elves) or don’t dream cannot be contacted by this spell. <p
class=sub>The messenger is unaware of its own surroundings or of the
activities around it while in the trance. It is defenseless both physically
and mentally (always fails any saving throw) while in the trance."
}, {
id: 169,
name: "Eagle's Splendor",
@@ -2582,7 +2582,7 @@
save: "Will negs",
sr: "Yes",
phb: 225,
- detail: ""
+ detail: "The transmuted creature becomes more poised, articulate, and
personally forceful. The spell grants a +4 enhancement bonus to Charisma,
adding the usual benefits to Charisma-based skill checks and other uses of
the Charisma modifier. Sorcerers and bards (and other spellcasters who rely
on Charisma) affected by this spell do not gain any additional bonus spells
for the increased Charisma, but the save DCs for spells they cast while
under this spell’s effect do increase. <p class=sub><i>Arcane Material
Component</i>: A few feathers or a pinch of droppings from an eagle."
}, {
id: 170,
name: "Eagle's Splendor, Mass",
@@ -2597,7 +2597,7 @@
save: "Will negs",
sr: "Yes",
phb: 225,
- detail: ""
+ detail: "This spell functions like <i>eagle's splendor</i>, except
that it affects multiple creatures."
}, {
id: 171,
name: "Earthquake",
@@ -2612,7 +2612,7 @@
save: "Special",
sr: "-",
phb: 225,
- detail: ""
+ detail: "When you cast <i>earthquake</i>, an intense but highly
localized tremor rips the ground. The shock knocks creatures down,
collapses structures, opens cracks in the ground, and more. The effect
lasts for 1 round, during which time creatures on the ground can't move
or attack. A spellcaster on the ground must make a Concentration check (DC
20 + spell level) or lose any spell he or she tries to cast. The earthquake
affects all terrain, vegetation, structures, and creatures in the area. The
specific effect of an <i>earthquake</i> spell depends on the nature of the
terrain where it is cast. <p class=sub><i>Cave, Cavern, or Tunnel</i>: The
spell collapses the roof, dealing 8d6 points of bludgeoning damage to any
creature caught under the cave-in (Reflex DC 15 half ) and pinning that
creature beneath the rubble (see below). An earthquake cast on the roof of
a very large cavern could also endanger those outside the actual area but
below the falling debris. <p class=sub><i>Cliffs</i>: <i>Earthquake</i>
causes a cliff to crumble, creating a landslide that travels horizontally
as far as it fell vertically. An earthquake cast at the top of a 100-foot
cliff would sweep debris 100 feet outward from the base of the cliff. Any
creature in the path takes 8d6 points of bludgeoning damage (Reflex DC 15
half ) and is pinned beneath the rubble (see below). <p class=sub><i>Open
Ground</i>: Each creature standing in the area must make a DC 15 Reflex
save or fall down. Fissures open in the earth, and every creature on the
ground has a 25% chance to fall into one (Reflex DC 20 to avoid a fissure).
At the end of the spell, all fissures grind shut, killing any creatures
still trapped within. <p class=sub><i>Structure</i>: Any structure standing
on open ground takes 100 points of damage, enough to collapse a typical
wooden or masonry building, but not a structure built of stone or
reinforced masonry. Hardness does not reduce this damage, nor is it halved
as damage dealt to objects normally is (See the <i>Dungeon Master's
Guide</i> for information on hit points for walls and the like.) Any
creature caught inside a collapsing structure takes 8d6 points of
bludgeoning damage (Reflex DC 15 half ) and is pinned beneath the rubble
(see below). <p class=sub><i>River, Lake, or Marsh</i>: Fissures open
underneath the water, draining away the water from that area and forming
muddy ground. Soggy marsh or swampland becomes quicksand for the duration
of the spell, sucking down creatures and structures. Each creature in the
area must make a DC 15 Reflex save or sink down in the mud and quicksand.
At the end of the spell, the rest of the body of water rushes in to replace
the drained water, possibly drowning those caught in the mud. <p
class=sub><i>Pinned beneath Rubble</i>: Any creature pinned beneath rubble
takes 1d6 points of nonlethal damage per minute while pinned. If a pinned
character falls unconscious, he or she must make a DC 15 Constitution check
or take 1d6 points of lethal damage each minute thereafter until freed or
dead."
}, {
id: 172,
name: "Elemental Swarm",
@@ -2627,7 +2627,7 @@
save: "-",
sr: "-",
phb: 226,
- detail: ""
+ detail: "This spell opens a portal to an Elemental Plane and summons
elementals from it. A druid can choose the plane (Air, Earth, Fire, or
Water); a cleric opens a portal to the plane matching his domain. <p
class=sub>When the spell is complete, 2d4 Large elementals appear. Ten
minutes later, 1d4 Huge elementals appear. Ten minutes after that, one
greater elemental appears. Each elemental has maximum hit points per HD.
Once these creatures appear, they serve you for the duration of the spell.
<p class=sub>The elementals obey you explicitly and never attack you, even
if someone else manages to gain control over them. You do not need to
concentrate to maintain control over the elementals. You can dis-miss them
singly or in groups at any time. <p class=sub>When you use a summoning
spell to summon an air, earth, fire, or water crea-ture, it is a spell of
that type. For example, <i>elemental swarm</i> is a fire spell when you
cast it to summon fire elementals and a water spell when you use it to
summon water elementals."
}, {
id: 173,
name: "Endure Elements",
@@ -2642,7 +2642,7 @@
save: "Will negs",
sr: "Yes",
phb: 226,
- detail: ""
+ detail: "A creature protected by <i>endure elements</i> suffers no
harm from being in a hot or cold environment. It can exist comfortably in
conditions between –50 and 140 degrees Fahrenheit without having to make
Fortitude saves (as described in the <i>Dungeon Master's Guide</i>).
The creature's equipment is likewise protected. <p class=sub><i>Endure
elements</i> doesn't provide any protection from fire or cold damage,
nor does it protect against other environmental hazards such as smoke, lack
of air, and so forth."
}, {
id: 174,
name: "Energy Drain",
@@ -2657,7 +2657,7 @@
save: "Fort part",
sr: "Yes",
phb: 226,
- detail: ""
+ detail: "This spell functions like <i>enervation</i>, except that the
creature struck gains 2d4 negative levels, and the negative levels last
longer. <p class=sub>There is no saving throw to avoid gaining the negative
levels, but 24 hours after gaining them, the subject must make a Fortitude
saving throw (DC = <i>energy drain</i> spell's save DC) for each
negative level. If the save succeeds, that negative level is removed. If it
fails, the negative level also goes away, but one of the subject's
charac-ter levels is permanently drained. <p class=sub>An undead creature
struck by the ray gains 2d4×5 temporary hit points for 1 hour."
}, {
id: 175,
name: "Enervation",
@@ -2672,7 +2672,7 @@
save: "-",
sr: "Yes",
phb: 226,
- detail: ""
+ detail: "You point your finger and utter the incantation, releasing a
black ray of crackling negative energy that suppresses the life force of
any living creature it strikes. You must make a ranged touch attack to hit.
If the attack succeeds, the subject gains 1d4 negative levels. <p
class=sub>If the subject has at least as many negative levels as HD, it
dies. Each negative level gives a creature a –1 penalty on attack rolls,
saving throws, skill checks, ability checks, and effective level (for
determining the power, duration, DC, and other details of spells or special
abilities). Additionally, a spellcaster loses one spell or spell slot from
his or her highest available level. Negative levels stack. <p
class=sub>Assuming the subject survives, it regains lost levels after a
number of hours equal to your caster level (maximum 15 hours). Usually,
negative levels have a chance of permanently draining the victim's
levels, but the negative levels from <i>enervation</i> don't last long
enough to do so. <p class=sub>An undead creature struck by the ray gains
1d4×5 temporary hit points for 1 hour."
}, {
id: 176,
name: "Enlarge Person",
@@ -2687,7 +2687,7 @@
save: "Fort negs",
sr: "Yes",
phb: 226,
- detail: ""
+ detail: "This spell causes instant growth of a humanoid creature,
doubling its height and multiplying its weight by 8. This increase changes
the creature's size category to the next larger one. The target gains a
+2 size bonus to Strength, a –2 size penalty to Dexterity (to a minimum of
1), and a –1 penalty on attack rolls and AC due to its increased size. <p
class=sub>A humanoid creature whose size increases to Large has a space of
10 feet and a natural reach of 10 feet. This spell does not change the
target's speed. <p class=sub>If insufficient room is available for the
desired growth, the creature attains the maximum possible size and may make
a Strength check (using its increased Strength) to burst any enclosures in
the process. If it fails, it is constrained without harm by the materials
enclosing it—the spell cannot be used to crush a creature by increasing its
size. <p class=sub>All equipment worn or carried by a creature is similarly
enlarged by the spell. Melee and projectile weapons affected by this spell
deal more damage (see Table 2–2 in the <i>Dungeon Master's Guide</i>).
Other magical properties are not affected by this spell. Any
<i>enlarged</i> item that leaves an <i>enlarged</i> creature's
possession (including a projectile or thrown weapon) instantly returns to
its normal size. This means that thrown weapons deal their normal damage,
and projectiles deal damage based on the size of the weapon that fired
them. Magical properties of <i>enlarged</i> items are not increased by this
spell—an <i>enlarged</i> +1 sword still has only a +1 enhancement bonus, a
staff-sized wand is still only capable of its normal functions, a
giant-sized potion merely requires a greater fluid intake to make its
magical effects operate, and so on. <p class=sub>Multiple magical effects
that increase size do not stack, which means (among other things) that you
can't use a second casting of this spell to further increase the size
of a humanoid that's still under the effect of the first casting. <p
class=sub><i>Enlarge person</i> counters and dispels <i>reduce person</i>.
<p class=sub><i>Enlarge person</i> can be made permanent with a
<i>permanency</i> spell. <p class=sub><i>Material Component</i>: A pinch of
powdered iron."
}, {
id: 177,
name: "Enlarge Person, Mass",
@@ -2702,7 +2702,7 @@
save: "Fort negs",
sr: "Yes",
phb: 227,
- detail: ""
+ detail: "This spell functions like <i>enlarge person</i>, except that
it affects multiple creatures."
}, {
id: 178,
name: "Entangle",
@@ -2717,7 +2717,7 @@
save: "Ref part",
sr: "-",
phb: 227,
- detail: ""
+ detail: "Grasses, weeds, bushes, and even trees wrap, twist, and
entwine about creatures in the area or those that enter the area, holding
them fast and causing them to become entangled. The creature can break free
and move half its normal speed by using a full-round action to make a DC 20
Strength check or a DC 20 Escape Artist check. A creature that succeeds on
a Reflex save is not entangled but can still move at only half speed
through the area. Each round on your turn, the plants once again attempt to
entangle all creatures that have avoided or escaped entanglement. <p
class=sub><i>Note</i>: The DM may alter the effects of the spell somewhat,
based on the nature of the entangling plants."
}, {
id: 179,
name: "Enthrall",
@@ -2732,7 +2732,7 @@
save: "Will negs",
sr: "Yes",
phb: 227,
- detail: ""
+ detail: "If you have the attention of a group of creatures, you can
use this spell to hold them spellbound. To cast the spell, you must speak
or sing without interruption for 1 full round. Thereafter, those affected
give you their undivided attention, ignoring their surroundings. They are
consid-ered to have an attitude of friendly while under the effect of the
spell (see the <i>Dungeon Master's Guide</i> for information about NPC
attitudes). Any potentially affected creature of a race or religion
unfriendly to yours gets a +4 bonus on the saving throw. <p class=sub>A
creature with 4 or more HD or with a Wisdom score of 16 or higher remains
aware of its surroundings and has an attitude of indifferent. It gains a
new saving throw if it witnesses actions that it opposes. <p class=sub>The
effect lasts as long as you speak or sing, to a maximum of 1 hour. Those
enthralled by your words take no action while you speak or sing and for 1d3
rounds thereafter while they discuss the topic or performance. Those
entering the area during the performance must also successfully save or
become enthralled. The speech ends (but the 1d3-round delay still applies)
if you lose concentration or do anything other than speak or sing. <p
class=sub>If those not <i>enthralled</i> have unfriendly or hostile
attitudes toward you, they can collectively make a Charisma check to try to
end the spell by jeering and heckling. For this check, use the Charisma
bonus of the creature with the highest Charisma in the group; others may
make Charisma checks to assist (as described in Aid Another, page 65). The
heckling ends the spell if this check result beats your Charisma check
result. Only one such challenge is allowed per use of the spell. <p
class=sub>If any member of the audience is attacked or subjected to some
other overtly hostile act, the spell ends and the previously
<i>enthralled</i> members become immediately unfriendly toward you. Each
creature with 4 or more HD or with a Wisdom score of 16 or higher becomes
hostile."
}, {
id: 180,
name: "Entropic Shield",
@@ -2747,7 +2747,7 @@
save: "-",
sr: "-",
phb: 227,
- detail: ""
+ detail: "A magical field appears around you, glowing with a chaotic
blast of multicolored hues. This field deflects incoming arrows, rays, and
other ranged attacks. Each ranged attack directed at you for which the
attacker must make an attack roll (including arrows, magic arrows,
<i>Melf's acid arrow</i>, <i>ray of enfeeblement</i>, and so forth) has
a 20% miss chance (similar to the effects of concealment). Other attacks
that simply work at a distance, such as a dragon's breath weapon, are
not affected."
}, {
id: 181,
name: "Erase",
@@ -2762,7 +2762,7 @@
save: "Special",
sr: "-",
phb: 227,
- detail: ""
+ detail: "Erase removes writings of either magical or mundane nature
from a scroll or from one or two pages of paper, parchment, or similar
surfaces. With this spell, you can remove <i>explosive runes</i>, a
<i>glyph of warding</i>, a <i>sepia snake sigil</i>, or an <i>arcane
mark</i>, but not <i>illusory script</i> or a <i>symbol</i> spell.
Nonmagical writing is automatically erased if you touch it and no one else
is holding it. Otherwise, the chance of erasing nonmagical writing is 90%.
<p class=sub>Magic writing must be touched to be erased, and you also must
succeed on a caster level check (1d20 + caster level) against DC 15. (A
natural 1 or 2 is always a failure on this check.) If you fail to erase
<i>explosive runes</i>, a <i>glyph of warding</i>, or a <i>sepia snake
sigil</i>, you accidentally activate that writing instead."
}, {
id: 182,
name: "Ethereal Jaunt",
@@ -2777,7 +2777,7 @@
save: "-",
sr: "-",
phb: 227,
- detail: ""
+ detail: "You become ethereal, along with your equipment. For the
duration of the spell, you are in a place called the Ethereal Plane, which
overlaps the normal, physical, Material Plane. When the spell expires, you
return to material existence. <p class=sub>An ethereal creature is
invisible, insub-stantial, and capable of moving in any direction, even up
or down, albeit at half normal speed. As an insubstantial creature, you can
move through solid objects, including living creatures. An ethereal
creature can see and hear on the Material Plane, but everything looks gray
and ephemeral. Sight and hearing onto the Material Plane are limited to 60
feet. Force effects (such as <i>magic missile</i> and <i>wall of force</i>)
and abjurations affect an ethereal creature normally. Their effects extend
onto the Ethereal Plane from the Material Plane, but not vice versa. An
ethereal creature can't attack material creatures, and spells you cast
while ethereal affect only other ethereal things. Certain material
creatures or objects have attacks or effects that work on the Ethereal
Plane (such as a basilisk's gaze attack). Treat other ethereal
creatures and ethereal objects as if they were material. <p class=sub>If
you end the spell and become material while inside a material object (such
as a solid wall), you are shunted off to the nearest open space and take
1d6 points of damage per 5 feet that you so travel."
}, {
id: 183,
name: "Etherealness",
@@ -2792,7 +2792,7 @@
save: "-",
sr: "Yes",
phb: 228,
- detail: ""
+ detail: "This spell functions like <i>ethereal jaunt</i>, except that
you and other willing creatures joined by linked hands (along with their
equipment) become ethereal. Besides yourself, you can bring one creature
per three caster levels to the Ethereal Plane. Once ethereal, the subjects
need not stay together. <p class=sub>When the spell expires, all affected
creatures on the Ethereal Plane return to material existence."
}, {
id: 184,
name: "Evard's Black Tentacles",