inconsistent standard fantasy spell CL headers


The fantasy standard sheet shows an inexplicable header labeling of caster levels

I have a lvl 9 sorcerer with varisian tattoo Ragario that grants evocation spells a +1 CL. Lvl 0 has light (CL10) and some CL9 spells but the lvl0 header shows CL 9. Lvl 3 has ball lightning (CL10), shout (CL10), and lightning bolt (CL10) and some CL9 spells but the lvl3 header shows CL9. Lvls 1, 2, and 4 headers show CL10 and they contain CL 9 and CL10 spells.




Derek Mart
September 9, 2015, 6:54 PM

Oh, failed to mention the character uses let me know if you would like a version without the custom template.

Andrew Maitland
September 10, 2015, 7:53 AM

This appears to be a code export issue.

Is the same call iterated across the various objects. Loading the character and exporting to PDF, the pattern appears to be the FIRST spell in the list dictates whether the Display for that level header is correctly 9 or incorrectly 10.

Level 0 - Detect Magic (Not evocation) - displays correct header
Level 1 - Ear-Piercing Scream (evocation +1) shows the entire level at Level 10
Level 2 - Aggressive Thundercloud (evocation +1) shows the entire level at Level 10
Level 3 - Haste (not evocation) - displays correct header
Level 4 - Aggressive Thundercloud (Greater) (evocation +1) shows the entire level at Level 10

Thus my working hypothesis is the export is confused by the casterlevel +1 from evocation and outputting that value of 10, instead of the correct value of 9. The fact the rest of the spells don't show 9, indicates they are correctly factoring in the level at 9, and thus do not display their level.

At this time, I do not believe this is addressable by an OS patch, and should be re-classified as a code bug in the export system.


James Dempsey
December 15, 2015, 10:29 AM

The code is correctly exporting the level of each spell and including the bonus applied to the evocation spells. The fragment you have included comes from the spell block (in base.xml.ftl) and will correctly report the spell's caster level.

The sheet then uses the syntax

to grab the caster level of the first spell under the level and report that as the caster level for the class, which is giving the wrong result in this case. This comes from block_spells_list.xslt at line 334. Looking at the docs, I think a solution may be to use the SPELLLISTCLASS.y.CASTERLEVEL token in base.xml.ftl (suitably converted) to grab the level from the class. Then this can be included in each level header in block_spells_list.xslt.

Andrew Maitland
December 15, 2015, 6:54 PM

Presents the same issue. Just tried and my header is doing the mix of 9's and 10's

Andrew Maitland
December 15, 2015, 6:59 PM

Ah ha, disregard. Solved it. Wrong block. It was block_spells_condensed.xslt I needed to adjust for my test. Works perfectly.

Thanks James!


Andrew Maitland


Derek Mart





Pending User Input


Fix versions

Affects versions