diff --git a/code/src/resources/pcgen/system/prop/PCGenProp.properties b/code/src/resources/pcgen/system/prop/PCGenProp.properties index 6be0dea6996..93eaa3db627 100644 --- a/code/src/resources/pcgen/system/prop/PCGenProp.properties +++ b/code/src/resources/pcgen/system/prop/PCGenProp.properties @@ -6,7 +6,7 @@ HeadCodeMonkey=Bryan McRoberts (Benevolent Dictator) # Version number should be x.y.z (e.g. 2.0.0) - RC is x.xx.xx RCx VersionNumber=6.09.05 -ReleaseDate=2020-10-18 +ReleaseDate=2020-11-15 CodeMonkeys=B. K. Oxley (binkley), Jonas Karlsson, Matthew Woodard, Peter Kahle, Tim Dugger, Tom Epperly, Brian Forester, Mario Bonassin, Jason Buchanan, Mark Hulsmanand, Jerry Hill, Eric Statz, Kurt Wimmer, David Fallon, Tyler Bannister, Thomas Clegg, Greg Bingleman, Emily Smirle, Arcady, Thomas Behr, Ryan Koppenhaver, Jayme Cox, Scott Ellsworth, Chris Ryan, James Dempsey, Walter Duncan, Devon Jones, Felipe Diniz, Frugal, Richard Askham, David Hibbs, John Watson, Stefan Radermacher, Ross Lodge, Benjamin Pew, Brian Kuehn, Aaron Divinsky, Andrew Wilson, Brian Hoff, Tom Parker, Andriy Sen, Koen Van Daele, Tobias Wichtrey, Per Christian Henden, Connor Petty, Dan Parks, Jasper Spaans, Steven West (redwolf3), Michael Isaacson, Vincent Lhote, Javier A. Ortiz Bultron, Gabriel Sorrel, John Carimando (UI), Andrew Maitland (LegacyKing), Eitan Adler, Jacob Raihle TestMonkeys=Dave Cortijo, Martin Brabander, John Sussenberger, Stephen Gryphon, Richard O'Doherty-Gregg, Brad Stiles, Chris Andersen, Joseff, and many more. Andrew Maitland, David R. Bender, Patryk Adamski, Paul Grosse, ratbird32, Stefan Radermacher, Vincent Lhote and Henk Slaaf (UI Beta testers) ListMonkeys=Robert Hilson, KahnB, \u00c9ric Beaudoin (Space Monkey), Tir Gwaith (Andrew McDougall), Mynex (Rob Reed), Thomas Behr, Tom Deprez, Luc Hermitte, Matt Haffner, Hugo Perez, Michael Telford, Sean Kelly, Ashley McKay, Duane Moore, Tom Cowan, Clint Howarth, Gordon Vincent, Gary Silvers, Rob Bowell, Dan Young, Magus Knightcrawler, Lee Calabrese, Barak (Chris Chandler), Kevin W. Patterson (kwp), Jessica 'Artist Wench' Whiting, Wayne Crawford, oddballmage, Ian Dale, Joshua Nelson (DJ_Chair), Y2Krankor (Greg G), Paul W. King, Jeremy (Duo) Banks, dlm1065 (Doug McMillan), Paul Miller, Eric Beeckmans, Michael Gray (Taluonr Iscandar), Kenneth Walters (GldDragon35), Mike Sledge (zodar6), Patryk Adamski (Ruemere), Larry Davis (Sir George Anonymous), Thomas Jannes (chipoulou), Samuel Hendricks (NotMousse), Sigurdur H. Olafsson, Andargor the Wise, Beaver (Michael Beaver), Martin Fagerstr\u00f6m, Anders Lindgren (Blithwyn), Eddy Anthony (MoSaT), Darkon Turas, Emily Smirle, Aaron Divinsky, Frank Kliewe, Sean Silvamiramon, Stefan Radermacher, Andrew Maitland, Joe Frazier, Michael W. Fender (Fluxxdog), Arjan van Ginneken, Gwen T., Gary Davies, Regan Anderson, Xenus, and many more. diff --git a/installers/release-notes/pcgen-release-notes-60905.html b/installers/release-notes/pcgen-release-notes-60905.html new file mode 100644 index 00000000000..ded53a43de2 --- /dev/null +++ b/installers/release-notes/pcgen-release-notes-60905.html @@ -0,0 +1,238 @@ + + + + + + + Release Notes for PCGen v6.09.05 + + + + + +

Release Notes for PCGen v6.09.05

+ +

Table of Content

+ + + +

What's new for v6.09.05

+ +

PCGen v6.09.05 is released as an ALPHA from our development branch. This is the culmination release that we believe will be the next production release. This is technically an unstable release due to new features being introduced. +Please give it a shot and let us know how it works for you. Some notable changes in the 6.09.05 release are listed below. + +

Notable Changes

+ + + + + + +

+For full details of the new changes in this release, see the Change Log . +

+

Andrew Maitland aka LegacyKing for the PCGEN Team -- 2020-11-15.

+ +

Installation

+ +

Prerequisites

+ +

Java 11 aka Java 55 aka 18.09 or 18.10. + +PCGEN 6.09.05 is not compatible with Java 10 (or earlier) and it is NOT SUPPORTED. PCGen is tested with OpenJDK, but any Java 11 from any source will be fine. + +Windows users: The WINDOWS INSTALLER version of PCGe comes with embedded Java JREs for both x86 and x64 Windows OS's. + +LINKS: +

+ +

Instructions

+ + +

Read the doc!

+ +

Please make sure you read the docs to + familiarize yourself with the changes. You can access it from + docs/index.html located in the PCGen directory.

+ +

Download PCGen

+ +

+ +

Custom Data Sets

+ +

If you have custom data created be aware that you may need to update your data to be compatible with the changes.

+ +

Thanks

+ +

Thanks to the volunteers who contributed to the PCGen 6.09.05 release! Without volunteers, no releases would be possible. + +

+ Thanks also to the many people who gave us feedback, reported bugs, contributed to the lists and + helped other PCGen users out!

+ +

Want to Help?

+ +

PCGen is an open source project. Anyone who wants to contribute whether it is Java programming, data + set programming, documentation, helping new users, general cat herding, massage, walking the dogs, etc. + is very welcome.

+

If you want to help jump on our Discord or Groups.io and simply post a message "I Want To Help" in one of those groups.

+ +

+ +

Useful Links

+ + + +

Change Log for 6.09.05

+ + + Release notes - Request New Books for PCGen - Version 6.09.05 + +

New Data Source Development +

+ + + + + Release notes - Book Data - Version 6.09.05 + +

Bug +

+ + + + Release notes - Java Code - Version 6.09.05 + +

Bug +

+ + + + + + + + + diff --git a/outputsheets/d20/pathfinder_2/htmlxml/csheet-fantasygrounds.xml.ftl b/outputsheets/d20/pathfinder_2/htmlxml/csheet-fantasygrounds.xml.ftl deleted file mode 100644 index 8c4e9abf94c..00000000000 --- a/outputsheets/d20/pathfinder_2/htmlxml/csheet-fantasygrounds.xml.ftl +++ /dev/null @@ -1,592 +0,0 @@ -<#ftl encoding="UTF-8" strip_whitespace=true > - - - - - <@loop from=0 to=pcvar('COUNT[STATS]-1') ; stat , stat_has_next> - <${pcstring('STAT.${stat}.LONGNAME')?lower_case}> - ${pcstring('STAT.${stat}')} - ${pcstring('STAT.${stat}.MOD')} - - - - ${pcstring('NAME')} - ${pcstring('DEITY')} - ${pcstring('ALIGNMENT')} - - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - - ${pcstring('CLASS.${class}')} - ${pcstring('CLASS.${class}.LEVEL')} - - class - reference.class.${pcstring('CLASS.${class}')?lower_case}@* - - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 8 - <#elseif pcstring('CLASS.${class}')?contains("Mechanic")> - 4 - <#elseif pcstring('CLASS.${class}')?contains("Mystic")> - 6 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 8 - <#elseif pcstring('CLASS.${class}')?contains("Solarian")> - 4 - <#elseif pcstring('CLASS.${class}')?contains("Soldier")> - 4 - <#elseif pcstring('CLASS.${class}')?contains("Technomancer")> - 4 - - - - - ${pcstring('SIZELONG')} - ${pcstring('RACE')} - - race - reference.race.${pcstring('RACE')?lower_case}@* - - ${pcstring('ABILITYALL.Theme.VISIBLE.0.TYPE=Theme.ASPECT.Title')?lower_case?cap_first} - - theme - reference.theme.${pcstring('ABILITYALL.Theme.VISIBLE.0.TYPE=Theme.ASPECT.Title')?lower_case}@* - - - <@loop from=0 to=pcvar('COUNT[MOVE]-1') ; movement , movement_has_next> - ${pcstring('MOVE.${movement}.RATE')} - - - - <#assign xAcr = 0> - <#assign xAth = 0> - <#assign xBlu = 0> - <#assign xCom = 0> - <#assign xCul = 0> - <#assign xDip = 0> - <#assign xDis = 0> - <#assign xEng = 0> - <#assign xInt = 0> - <#assign xLif = 0> - <#assign xMed = 0> - <#assign xMys = 0> - <#assign xPer = 0> - <#assign xPhy = 0> - <#assign xPil = 0> - <#assign xSen = 0> - <#assign xSle = 0> - <#assign xSte = 0> - <#assign xSur = 0> - <#assign skillCount = 0> - <@loop from=0 to=pcvar('count("SKILLSIT", "VIEW=VISIBLE_EXPORT")')-1; skill , skill_has_next > - <#assign skillCount = skill + 1> - - - ${pcstring('SKILLSIT.${skill}.RANK')?replace("\\.0", "", "rf")} - ${pcstring('SKILLSIT.${skill}.TOTAL')} - ${pcstring('SKILLSIT.${skill}.ABMOD')} - <#if pcstring('SKILLSIT.${skill}')?contains("Acrobatics")> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Solarian")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Soldier")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Athletics")> - <#assign xAth = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mechanic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Solarian")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Soldier")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Computers")> - <#assign xCom = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mechanic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Technomancer")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Bluff")> - <#assign xBlu = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mystic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Culture")> - <#assign xCul = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mystic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Diplomacy")> - <#assign xDip = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mystic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Solarian")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Disguise")> - <#assign xDis = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mystic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Engineering")> - <#assign xEng = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mechanic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Ooperative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Soldier")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Technomancer")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Intimidate")> - <#assign xInt = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mystic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Solarian")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Soldier")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Life Science")> - <#assign xLif = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Mystic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Technomancer")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Medicine")> - <#assign xMed = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mechanic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mystic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Soldier")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Mysticism")> - <#assign xMys = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Mystic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Solarian")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Technomancer")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Perception")> - <#assign xPer = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mechanic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mystic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Solarian")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Physical Science")> - <#assign xPhy = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Mechanic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Solarian")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Technomancer")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Piloting")> - <#assign xPil = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mechanic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Soldier")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Technomancer")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Sense Motive")> - <#assign xSen = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mystic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Solarian")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Sleight of Hand")> - <#assign xSle = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Technomancer")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Stealth")> - <#assign xSte = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Solarian")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}')?contains("Survival")> - <#assign xSur = 1> - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Mystic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Soldier")> - 1 - <#else> - 0 - - - - <#if pcstring('SKILLSIT.${skill}.ABILITY')?contains("STR")> - strength - <#elseif pcstring('SKILLSIT.${skill}.ABILITY')?contains("DEX")> - dexterity - <#elseif pcstring('SKILLSIT.${skill}.ABILITY')?contains("CON")> - constitution - <#elseif pcstring('SKILLSIT.${skill}.ABILITY')?contains("INT")> - intelligence - <#elseif pcstring('SKILLSIT.${skill}.ABILITY')?contains("WIS")> - wisdom - <#elseif pcstring('SKILLSIT.${skill}.ABILITY')?contains("CHA")> - charisma - - - - <#if xMed == 0> - <#assign skillCount += 1> - - - 0 - 0 - 0 - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mechanic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mystic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Soldier")> - 1 - <#else> - 0 - - - - - <#if xCom == 0> - <#assign skillCount += 1> - - - 0 - 0 - 0 - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mechanic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Technomancer")> - 1 - <#else> - 0 - - - - - <#if xCul == 0> - <#assign skillCount += 1> - - - 0 - 0 - 0 - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mystic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#else> - 0 - - - - - <#if xEng == 0> - <#assign skillCount += 1> - - - 0 - 0 - 0 - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Mechanic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Ooperative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Soldier")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Technomancer")> - 1 - <#else> - 0 - - - - - <#if xLif == 0> - <#assign skillCount += 1> - - - 0 - 0 - 0 - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Mystic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Technomancer")> - 1 - <#else> - 0 - - - - - <#if xMys == 0> - <#assign skillCount += 1> - - - 0 - 0 - 0 - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Mystic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Solarian")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Technomancer")> - 1 - <#else> - 0 - - - - - <#if xPhy == 0> - <#assign skillCount += 1> - - - 0 - 0 - 0 - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Mechanic")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Solarian")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Technomancer")> - 1 - <#else> - 0 - - - - - <#if xSle == 0> - <#assign skillCount += 1> - - - 0 - 0 - 0 - <@loop from=0 to=pcvar('COUNT[CLASSES]-1') ; class , class_has_next> - <#if pcstring('CLASS.${class}')?contains("Envoy")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Operative")> - 1 - <#elseif pcstring('CLASS.${class}')?contains("Technomancer")> - 1 - <#else> - 0 - - - - - - - <@loop from=0 to=pcvar('COUNT[FEATSALL.ALL]-1') ; feat , feat_has_next> - - ${pcstring('FEATALL.${feat}')} - -

${pcstring('FEATALL.${feat}.DESC')}

-
- -

${pcstring('FEATALL.${feat}.BENEFIT')?keep_before("Normal")?replace("", "")?replace("", "")}

-
- -

${pcstring('FEATALL.${feat}.BENEFIT')?keep_after("Normal: ")?replace("", "")?replace("", "")}

-
- -

${pcstring('FEATALL.${feat}.BENEFIT')?keep_after("Special: ")?replace("", "")?replace("", "")}

-
- ${pcstring('FEATALL.${feat}.TYPE')?lower_case?cap_first} -
- -
- - ${pcstring('HP')} - - ${pcstring('ABILITYALL.Internal.VISIBLE.0.TYPE=Home Planet')} - - - -
-
diff --git a/outputsheets/d20/pathfinder_2/htmlxml/csheet_fantasy_std.htm.ftl b/outputsheets/d20/pathfinder_2/htmlxml/csheet_fantasy_std.htm.ftl deleted file mode 100644 index 11c44d7bcfa..00000000000 --- a/outputsheets/d20/pathfinder_2/htmlxml/csheet_fantasy_std.htm.ftl +++ /dev/null @@ -1,2244 +0,0 @@ -<#ftl encoding="UTF-8" strip_whitespace=true > - - - - - -${pcstring('NAME')} [${pcstring('POOL.COST')} Points] - - - - -
Created using PCGen ${pcstring('EXPORT.VERSION')} on ${pcstring('EXPORT.DATE')}
- - - - - - - - - - - - - - - - - - - - - - - - - - - <#if (pcstring("ABILITYALL.ANY.0.TYPE=RaceName.HASASPECT.RaceName") = "Y")> - - <#else> - - - - - - -<#if (pcvar("COUNT[VISION]") > 0) > - -<#else> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
${pcstring('NAME')} <#if (pcstring("FOLLOWEROF") != "") >- ${pcstring('FOLLOWEROF')} ${pcstring('PLAYERNAME')}${pcstring('ALIGNMENT')}${pcstring('DEITY')}${pcstring('POOL.COST')}Click for Bio
Character NamePLAYERALIGNMENTDEITYPOINTS
-${pcstring('ABILITYALL.Theme.VISIBLE.0.TYPE=Theme')?capitalize} ${pcstring('CLASSLIST')} - <#if (pcvar('count("ABILITIES","CATEGORY=Archetype","TYPE=Archetype","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - (${pcstring('ABILITYLIST.Archetype.TYPE=Archetype')}) - - ${pcstring('EXP.CURRENT')}${pcstring('ABILITYALL.ANY.0.ASPECT=RaceName.ASPECT.RaceName')}${pcstring('RACE')}${pcstring('SIZELONG')} / ${pcstring('FACE')}${pcstring('HEIGHT')}${pcstring('WEIGHT')}${pcstring('VISION')}Normal
CLASSEXPERIENCERACESIZE / FACEHEIGHTWEIGHTVISION
${pcstring('TOTALLEVELS')}${pcstring('EXP.NEXT')}${pcstring('AGE')}${pcstring('GENDER')}${pcstring('COLOR.EYE')}${pcstring('COLOR.HAIR')}, ${pcstring('LENGTH.HAIR')}
LEVELNEXT LEVELAGEGENDEREYESHAIR
- - - - - - - - - - - - - - - - - - - - - - - - - - - <#if (pcstring("WEAPON.${weap}.QUALITY.Critical") = "")> - - <#else>) - - - - -
- - - - - - - - - -<@loop from=0 to=pcvar('COUNT[STATS]-1') ; stat , stat_has_next><#-- TODO: Loop was of early exit type 1 --> - - - - - - - - -
ABILITY
NAME
ABILITY
SCORE
ABILITY
MODIFIER
TEMPORARY
SCORE
TEMPORARY
MODIFIER
${pcstring('STAT.${stat}.NAME')}
- ${pcstring('STAT.${stat}.LONGNAME')}
${pcstring('STAT.${stat}.NOTEMP.NOEQUIP')}${pcstring('STAT.${stat}.MOD.NOTEMP.NOEQUIP')}${pcstring('STAT.${stat}')}${pcstring('STAT.${stat}.MOD')}
- -
-<#if pchasvar('StarfinderSystem')> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

CURRENT HP

SUBDUAL DAMAGE

CURRENT STAMINA

DAMAGE
REDUCTION

SPEED
HP -
Hit Points
${pcstring('HP')}


SP -
Stamina Points
${pcstring('ALTHP')}

 ${pcstring('DR')} 
-<@loop from=0 to=pcvar('COUNT[MOVE]-1') ; movement , movement_has_next><#-- TODO: Loop was of early exit type 1 --> -${pcstring('MOVE.${movement}.NAME')} ${pcstring('MOVE.${movement}.RATE')} -<#if (pcstring("MOVE.${movement}.NAME") = "Fly")> -(${pcstring('ABILITYALL.Special Ability.HIDDEN.0.TYPE=Maneuverability.ASPECT.Maneuverability')}) - - -<#-- -<#list pc.dynamic.movement as movement> - ${movement.name} ${movement.val.speed} - ---> - -
- - <#elseif (pcvar("UseAlternateDamage") = 0 )> - - - - - - - - - - - - - - - - - - - - - - - - - - -

WOUNDS/CURRENT HP

SUBDUAL DAMAGE

DAMAGE
REDUCTION

SPEED
HP -
Hit Points
${pcstring('HP')}


 ${pcstring('DR')} 
-<@loop from=0 to=pcvar('COUNT[MOVE]-1') ; movement , movement_has_next><#-- TODO: Loop was of early exit type 1 --> -${pcstring('MOVE.${movement}.NAME')} ${pcstring('MOVE.${movement}.RATE')} -<#if (pcstring("MOVE.${movement}.NAME") = "Fly")> -(${pcstring('ABILITYALL.Special Ability.HIDDEN.0.TYPE=Maneuverability.ASPECT.Maneuverability')}) - - -
- -<#else> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

CURRENT VITALITY

SUBDUAL DAMAGE

CURRENT WP

DAMAGE
REDUCTION

SPEED
VP -
Vitality
${pcstring('HP')}


WP -
Wound Points
${pcstring('ALTHP')}

 ${pcstring('DR')} 
-<@loop from=0 to=pcvar('COUNT[MOVE]-1') ; movement , movement_has_next><#-- TODO: Loop was of early exit type 1 --> -${pcstring('MOVE.${movement}.NAME')} ${pcstring('MOVE.${movement}.RATE')} -<#if (pcstring("MOVE.${movement}.NAME") = "Fly")> -(${pcstring('ABILITYALL.Special Ability.HIDDEN.0.TYPE=Maneuverability.ASPECT.Maneuverability')}) - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AC -
Armor Class
${pcstring('AC.AC')}=${pcstring('AC.Base')}+${pcstring('AC.Ability')}+${pcstring('AC.Armor')}+${pcstring('AC.Misc')}TAC -
Touch Armor Class
${pcstring('AC.TAC')}=${pcstring('AC.Base')}+${pcstring('AC.Ability')}+${pcstring('AC.ArmorTAC')}+${pcstring('AC.Misc')}Resolve -
Points
${pcvar('VAR.Resolve')}
TOTALBASESTATARMORMISCTOTALBASESTATARMORMISCTOTAL
- -
- - - - - - - - - - - - - - - - - - - - - - - -
PERCEPTION
Modifier
${pcvar('VAR.PerceptionTotal')}=${pcvar('VAR.PerceptionAbility')}+${pcvar('VAR.PerceptionProf')}+${pcvar('VAR.PerceptionItem')}
TOTALWISPROFITEM
- -
- - - - - - - -
BASE ATTACK
Bonus
${pcstring('ATTACK.MELEE')}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

${pcstring('SPELLFAILURE')}${pcstring('ACCHECK')}${pcstring('MAXDEX')}${pcstring('SR')} 
MISS
CHANCE
ARCANE
FAILURE
ARMOR
CHECK
MAX
DEX
SPELL
RESIST.
TEMP
- -
- - - - - - - - - - - - - - - - - - -<@loop from=0 to=pcvar('COUNT[CHECKS]-1') ; checks , checks_has_next> - - - - - - - - - - - - - - - - - -
SAVING THROWSTOTALBASEABILITYMAGICEPICMISCTEMPORARY
${pcstring('CHECK.${checks}.NAME')}
-<#if (pcstring("CHECK.${checks}.NAME") = "Fortitude")> -Constitution -<#else> - -<#if (pcstring("CHECK.${checks}.NAME") = "Reflex")> -Dexterity -<#else> - -<#if (pcstring("CHECK.${checks}.NAME") = "Will")> -Wisdom -<#else> - -
${pcstring('CHECK.${checks}.TOTAL')}=${pcstring('CHECK.${checks}.BASE')}+${pcstring('CHECK.${checks}.STATMOD')}+${pcstring('CHECK.${checks}.MAGIC')}
+${pcstring('CHECK.${checks}.EPIC')}
+${pcstring('CHECK.${checks}.MISC.NOMAGIC.NOSTAT')}
+
- - - - -
CONDITIONAL MODIFIERS:
-<#assign condCount = 0> -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Racial Trait","TYPE=Racial Trait","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; RacialTrait , RacialTrait_has_next> -<#if (pcstring("ABILITYALL.Racial Trait.VISIBLE.${RacialTrait}.TYPE.ASPECT.BonusSave")!= "")> -<#if (condCount > 0)> -, - -${pcstring("ABILITYALL.Racial Trait.VISIBLE.${RacialTrait}.TYPE.ASPECT.BonusSave")?lower_case} -<#assign condCount++> -<#else> - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TOTALBASE ATTACKSTATSIZEEPICMISCTEMP
MELEE
ATTACK BONUS
${pcstring('ATTACK.MELEE.TOTAL')}=${pcstring('ATTACK.MELEE')}
+${pcstring('ATTACK.MELEE.STAT')}+${pcstring('ATTACK.MELEE.SIZE')}
+${pcstring('VAR.charbonusto("COMBAT","EPICAB").INTVAL')}
+${pcstring('ATTACK.MELEE.MISC')}
+
RANGED
ATTACK BONUS
${pcstring('ATTACK.RANGED.TOTAL')}=${pcstring('ATTACK.RANGED')}
+${pcstring('ATTACK.RANGED.STAT')}+${pcstring('ATTACK.RANGED.SIZE')}
+${pcstring('VAR.charbonusto("COMBAT","EPICAB").INTVAL')}
+${pcstring('ATTACK.RANGED.MISC')}
+
- - - - -
CONDITIONAL MODIFIERS:
-<@loop from=0 to=pcvar('countdistinct("ABILITIES","ASPECT=CombatBonus")-1') ; ability , ability_has_next> - ${pcstring('ABILITYALL.ANY.${ability}.ASPECT=CombatBonus.ASPECT.CombatBonus')}
- -
- - - -<#if (pcvar('count("ABILITIES","CATEGORY=Natural Attack","TYPE=NaturalAttack","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> -<@loop from=0 to=pcvar('countdistinct("ABILITIES","CATEGORY=Natural Attack","TYPE=NaturalAttack","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; ability , ability_has_next> - - - - - - - - - - - - - - - - <#if (pcstring("ABILITYALL.Natural Attack.VISIBLE.${ability}.TYPE=NaturalAttack.DESC:YES") = "Y")> - - - - - -
${pcstring('ABILITYALL.Natural Attack.VISIBLE.${ability}.TYPE=NaturalAttack')}TOTAL ATTACK BONUSDAMAGECRIT / MULTREACH
${pcstring('ABILITYALL.Natural Attack.VISIBLE.${ability}.TYPE=NaturalAttack.ASPECT.NaturalAttackToHit.SIGN')}
${pcstring('ABILITYALL.Natural Attack.VISIBLE.${ability}.TYPE=NaturalAttack.ASPECT.NaturalAttackDamage')}
${pcstring('ABILITYALL.Natural Attack.VISIBLE.${ability}.TYPE=NaturalAttack.ASPECT.NaturalAttackThreatRange')} / ${pcstring('ABILITYALL.Natural Attack.VISIBLE.${ability}.TYPE=NaturalAttack.ASPECT.NaturalAttackCritMult')}
${pcstring('ABILITYALL.Natural Attack.VISIBLE.${ability}.TYPE=NaturalAttack.ASPECT=NaturalAttackReach.ASPECT.NaturalAttackReach')}
Special Properties${pcstring('ABILITYALL.Natural Attack.${ability}.TYPE=NaturalAttack.ASPECT.NaturalAttackNotes')}${pcstring('ABILITYALL.Natural Attack.${ability}.TYPE=NaturalAttack.DESC')}
-
- - - - - -<#if (pcvar('VAR.DisplayUnarmedOff.INTVAL') > 0)> - -<#else> - - - - - - - - - - - - - <#if (pcstring("WEAPON.QUALITY.Critical") = "")> - - <#else>) - - - - - <@loop from=0 to=pcvar('countdistinct("ABILITIES","CATEGORY=Special Ability","TYPE=UnarmedDisplay","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; ability , ability_has_next> - - - - -
UNARMEDTOTAL ATTACK BONUSDAMAGECRITICALREACH
${pcstring('WEAPONH.TOTALHIT')}
${pcstring('WEAPONH.DAMAGE')}
-${pcstring('WEAPON.QUALITY.Critical')}${pcstring('REACH')}
SPROP: ${pcstring('ABILITYALL.Special Ability.VISIBLE.${ability}.TYPE=UnarmedDisplay.ASPECT.UnarmedNotes')}
-
- - - - - <#-- create variable x --> - <#assign fab = pcstring('WEAPONH.TOTALHIT')?keep_before("/")?number> - <#assign fab_1 = pcvar('VAR.FAB_1.INTVAL') + fab> - <#assign fab_2 = pcvar('VAR.FAB_2.INTVAL') + fab> - <#assign fab_3 = pcvar('VAR.FAB_3.INTVAL') + fab> - <#assign fab_4 = pcvar('VAR.FAB_4.INTVAL') + fab> - <#assign fab_5 = pcvar('VAR.FAB_5.INTVAL') + fab> - <#assign fab_6 = pcvar('VAR.FAB_6.INTVAL') + fab> - <#assign fab_7 = pcvar('VAR.FAB_7.INTVAL') + fab> - <#assign fab_8 = pcvar('VAR.FAB_8.INTVAL') + fab> - <#assign fab_9 = pcvar('VAR.FAB_9.INTVAL') + fab> - -<#if (pcvar("FlurryLvl") >= 1)> - - - - - - - - - -
Flurry of BlowsTOTAL ATTACK BONUS
- <#if (fab_1 >= 0)>+<#t>${fab_1}<#t> - <#if (pcvar("FlurryAttacks") >= 2)> - /<#if (fab_2 >= 0)>+<#t>${fab_2}<#t> - - <#if (pcvar("FlurryAttacks") >= 3)> - /<#if (fab_3 >= 0)>+<#t>${fab_3} - - <#if (pcvar("FlurryAttacks") >= 4)> - /<#if (fab_4 >= 0)>+<#t>${fab_4} - - <#if (pcvar("FlurryAttacks") >= 5)> - /<#if (fab_5 >= 0)>+<#t>${fab_5} - - <#if (pcvar("FlurryAttacks") >= 6)> - /<#if (fab_6 >= 0)>+<#t>${fab_6} - - <#if (pcvar("FlurryAttacks") >= 7)> - /<#if (fab_7 >= 0)>+<#t>${fab_7} - - <#if (pcvar("FlurryAttacks") >= 8)> - /<#if (fab_7 >= 0)>+<#t>${fab_8} - - <#if (pcvar("FlurryAttacks") >= 9)> - /<#if (fab_7 >= 0)>+<#t>${fab_9} - -
-
- - - - - - -<#macro weaponHandedToHitDmgTable weap> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <#if (pcstring('WEAPON.${weap}.SPROP') != "")> - - - - - -
1H-P1H-O2H2W-P-(OH)2W-P-(OL)2W-OH
 Bonus${pcstring('WEAPON.${weap}.BASEHIT')}
${pcstring('WEAPON.${weap}.OHHIT')}
${pcstring('WEAPON.${weap}.THHIT')}
${pcstring('WEAPON.${weap}.TWPHITH')}
${pcstring('WEAPON.${weap}.TWPHITL')}
${pcstring('WEAPON.${weap}.TWOHIT')}
 Dam${pcstring('WEAPON.${weap}.BASICDAMAGE')}
${pcstring('WEAPON.${weap}.OHDAMAGE')}
${pcstring('WEAPON.${weap}.THDAMAGE')}
${pcstring('WEAPON.${weap}.BASICDAMAGE')}
${pcstring('WEAPON.${weap}.BASICDAMAGE')}
${pcstring('WEAPON.${weap}.OHDAMAGE')}
 Special Properties ${pcstring('WEAPON.${weap}.SPROP')}
- - -<#macro weaponBlock weap> - - <#assign weaponCategory> - ${pcstring('WEAPON.${weap}.CATEGORY')?lower_case} - - <#-- Weapon ${weap} is ${pcstring("WEAPON.${weap}.NAME")} Cat: ${weaponCategory} --> -<#if (weaponCategory?contains('both'))> -<#if (weaponCategory?contains('ranged'))> - - -<@loop from=0 to=4 ; range , range_has_next> - - - - - -<@loop from=0 to=4 ; range1 , range1_has_next> - - - - - -<@loop from=0 to=4 ; range2 , range2_has_next> - - - - - - - - - - - -
  Range${pcstring('WEAPON.${weap}.RANGELIST.${range}')}
 Bonus${pcstring('WEAPON.${weap}.RANGELIST.${range1}.TOTALHIT')}
 Dam${pcstring('WEAPON.${weap}.RANGELIST.${range2}.DAMAGE')}
 Ammunition Used
☐☐☐☐☐ ☐☐☐☐☐ ☐☐☐☐☐ ☐☐☐☐☐
 Special Properties
 ${pcstring('WEAPON.${weap}.SPROP')}
-
-<#else> -
${pcstring('WEAPON.${weap}.NAME')}
HANDTYPESIZECRITICALREACH
${pcstring('WEAPON.${weap}.HAND')}
${pcstring('WEAPON.${weap}.TYPE')}
${pcstring('WEAPON.${weap}.SIZE')}
-${pcstring('WEAPON.${weap}.QUALITY.Critical')}${pcstring('WEAPON.${weap}.REACH')}${pcstring('WEAPON.${weap}.REACHUNIT')}
- <@weaponHandedToHitDmgTable weap=weap /> - -<#else> -<#if (weaponCategory?contains('ranged'))> - - ${pcstring('WEAPON.${weap}.NAME')}
- HAND - TYPE - SIZE - CRITICAL - - - ${pcstring('WEAPON.${weap}.HAND')}
- ${pcstring('WEAPON.${weap}.TYPE')}
- ${pcstring('WEAPON.${weap}.SIZE')}
- <#if (pcstring("WEAPON.${weap}.QUALITY.Critical") = "")> - - - <#else>) - ${pcstring('WEAPON.${weap}.QUALITY.Critical')} - - - - -<#if (pcstring("WEAPON.${weap}.CONTENTS") = "0")> - - -<@loop from=0 to=4 ; range , range_has_next> - - - - - -<@loop from=0 to=4 ; range1 , range1_has_next> - - - - - -<@loop from=0 to=4 ; range2 , range2_has_next> - - - - - - - - - - - -
  Range${pcstring('WEAPON.${weap}.RANGELIST.${range}')}
 Bonus${pcstring('WEAPON.${weap}.RANGELIST.${range1}.TOTALHIT')}
 Dam${pcstring('WEAPON.${weap}.RANGELIST.${range2}.DAMAGE')}
 Ammunition Used
☐☐☐☐☐ ☐☐☐☐☐ ☐☐☐☐☐ ☐☐☐☐☐
 Special Properties
 ${pcstring('WEAPON.${weap}.SPROP')}
-
-<#else> -<@loop from=0 to=pcvar('WEAPON.${weap}.CONTENTS-1') ; ammo , ammo_has_next> - -  AMMUNITION: ${pcstring('WEAPON.${weap}.CONTENTS.${ammo}')} -<#if (pcstring("WEAPON.${weap}.CONTENTS.${ammo}.SPROP") = " ")> -(${pcstring('WEAPON.${weap}.CONTENTS.${ammo}.SPROP')}) - - - - -  Range -<@loop from=0 to=4 ; range , range_has_next> - ${pcstring('WEAPON.${weap}.RANGELIST.${range}')}'
- - - -  Bonus -<@loop from=0 to=4 ; range1 , range1_has_next> - ${pcstring('WEAPON.${weap}.RANGELIST.${range1}.CONTENTS.${ammo}.TOTALHIT')}
- - - -  Dam -<@loop from=0 to=4 ; range2 , range2_has_next> - ${pcstring('WEAPON.${weap}.RANGELIST.${range2}.CONTENTS.${ammo}.DAMAGE')} - - - -  Ammunition Used
- ☐☐☐☐☐ ☐☐☐☐☐ ☐☐☐☐☐ ☐☐☐☐☐ - - - -  Special Properties
-  ${pcstring('WEAPON.${weap}.SPROP')}
- - -
- -<#else> - <#if (pcboolean("WEAPON.${weap}.ISTYPE.Double") || weaponCategory?contains('non-standard-melee') || weaponCategory?contains('natural'))> - - ${pcstring('WEAPON.${weap}.NAME')}
- TOTAL ATTACK BONUS - DAMAGE - CRITICAL - - - ${pcstring('WEAPON.${weap}.TOTALHIT')}
- ${pcstring('WEAPON.${weap}.DAMAGE')}
- <#if (pcstring("WEAPON.${weap}.QUALITY.Critical") = "")> - - - <#else>) - ${pcstring('WEAPON.${weap}.QUALITY.Critical')} - - - - - - - - - - - - - - - - - - -
HANDREACHTYPESIZESPECIAL PROPERTIES
${pcstring('WEAPON.${weap}.HAND')}
${pcstring('WEAPON.${weap}.REACH')}${pcstring('WEAPON.${weap}.REACHUNIT')}
${pcstring('WEAPON.${weap}.TYPE')}
${pcstring('WEAPON.${weap}.SIZE')}
 ${pcstring('WEAPON.${weap}.SPROP')}
-
- <#else> - - ${pcstring('WEAPON.${weap}.NAME')}
- HAND - TYPE - SIZE - CRITICAL - RANGE - - - ${pcstring('WEAPON.${weap}.HAND')}
- ${pcstring('WEAPON.${weap}.TYPE')}
- ${pcstring('WEAPON.${weap}.SIZE')}
- <#if (pcstring("WEAPON.${weap}.QUALITY.Critical") = "")> - - - <#else>) - ${pcstring('WEAPON.${weap}.QUALITY.Critical')} - - ${pcstring('WEAPON.${weap}.RANGE')}
- - - <@weaponHandedToHitDmgTable weap=weap /> -
- - - - - - - -<@loop from=0 to=2 ; weap , weap_has_next><#-- TODO: Loop was of early exit type 1 --> -<#if (pcstring("WEAPON.${weap}.NAME") != "") > - <@weaponBlock weap=weap /> - - -<#assign nextWeaponIdx = 3 /> -<#-- If the 3rd weapon was a 'both' weapon, tack its ranged block on this page --> -<#if (pcstring("WEAPON.3.NAME") != "") > - <#assign weaponCategory> - ${pcstring('WEAPON.3.CATEGORY')?lower_case} - - <#if (weaponCategory?contains('both') && weaponCategory?contains('ranged'))> - <@weaponBlock weap=3 /> - <#assign nextWeaponIdx = 4 /> - - - - - - - -
1H-P: One handed, primary hand. 1H-O: One handed, off hand. 2H: Two handed. 2W-P-(OH): 2 weapons, primary hand (off hand weapon is heavy). 2W-P-(OL): 2 weapons, primary hand (off hand weapon is light). 2W-OH:2 weapons, off hand.
- - -<@loop from=0 to=2 ; count , count_has_next> -<#if (pcstring("ARMOR.${count}.NAME") != "") > - - - -
${pcstring("ARMOR.EQUIPPED.${count}.NAME")}
TYPEARMOR BONUSMAX DEX BONUS
${pcstring("ARMOR.EQUIPPED.${count}.TYPE")}
See Below
${pcstring("ARMOR.EQUIPPED.${count}.MAXDEX")}
- - - -
CHECK PENALTYSPELL FAILURESPECIAL PROPERTIES
${pcstring("ARMOR.EQUIPPED.${count}.ACCHECK")}
${pcstring("ARMOR.EQUIPPED.${count}.SPELLFAIL")}
${pcstring("ARMOR.EQUIPPED.${count}.SPROP")}
- - - - - - -<#if (pcvar("VAR.TOTALPOWERPOINTS") >= 1) > - - - - - - - - - - - - - - - - -
PSI POWER POINTS
 Base PP${pcstring('VAR.BASEPOWERPOINTS.INTVAL')} Bonus PP${pcstring('VAR.BONUSPOWERPOINTS.INTVAL')} Total PP${pcstring('VAR.TOTALPOWERPOINTS.INTVAL')}
 
- - - - - - - - - - - - - - - - - - - - -<@loop from=0 to=pcvar('count("SKILLSIT", "VIEW=VISIBLE_EXPORT")')-1; skill , skill_has_next > -<#if (skill % 2 = 0)><#else> - - - - - - - - - - - - -
SKILLSMAX
RANKS
${pcstring('MAXSKILLLEVEL')}/${pcstring('MAXCCSKILLLEVEL')}
SKILL NAMEABILITYSKILL
MODIFIER
ABILITY
MODIFIER
RANKSMISC
MODIFIER
<#if pcboolean("SKILLSIT.${skill}.UNTRAINED")>◆  ${pcstring('SKILLSIT.${skill}')}${pcstring('SKILLSIT.${skill}.ABILITY')}${pcstring('SKILLSIT.${skill}.TOTAL')}=${pcstring('SKILLSIT.${skill}.ABMOD')}
+${pcstring("SKILLSIT.${skill}.RANK")?replace("\\.0", "", "rf")}
+${pcstring('SKILLSIT.${skill}.MISC')}
-
◆ = Useable Untrained
-
- - - - -
CONDITIONAL MODIFIERS:
-<@loop from=0 to=pcvar('countdistinct("ABILITIES","ASPECT=SkillBonus")-1') ; ability , ability_has_next> - ${pcstring('ABILITYALL.ANY.${ability}.ASPECT=SkillBonus.ASPECT.SkillBonus')}
- -
- - - - - -
PCGen Character Template by ROG, mods/maint by Arcady, Barak & Dimrill. For suggestions please post to pcgen@yahoogroups.com with "OS Suggestion" in the subject line.
- -
- -
Created using PCGen ${pcstring('EXPORT.VERSION')} on ${pcstring('EXPORT.DATE')}
Player: ${pcstring('PLAYERNAME')}; Character Name: ${pcstring('NAME')}
- - - - <#else> - - - - - - - -
- -<#macro equipmentRow equip1> - <#if (equip1 % 2 = 0)>
 ${pcstring("EQ.Not.Coin.NOT.Gem.${equip1}.NAME.MAGIC~~")}
- <#if (pcstring("EQ.Not.Coin.NOT.Gem.${equip1}.SPROP") != "")> - (${pcstring('EQ.Not.Coin.NOT.Gem.${equip1}.SPROP')}) - - <#if (pcstring("EQ.Not.Coin.NOT.Gem.${equip1}.NOTE") != "")> - (${pcstring('EQ.Not.Coin.NOT.Gem.${equip1}.NOTE')})
- - <@loop from=1 to=pcvar('EQ.Not.Coin.NOT.Gem.${equip1}.CHARGES') ; charges , charges_has_next> - - - - <#assign eqType = pcstring("EQ.Not.Coin.NOT.Gem.${equip1}.TYPE")?lower_case /> - <#if (eqType?contains("consumable") || eqType?contains("potion") || eqType?contains("ammunition")) > - <@loop from=1 to=pcvar('EQ.Not.Coin.NOT.Gem.${equip1}.CHECKBOXES') ; consumable , consumable_has_next> - - - -
${pcstring('EQ.Not.Coin.NOT.Gem.${equip1}.LOCATION')}
${pcstring('EQ.Not.Coin.NOT.Gem.${equip1}.QTY')}
${pcstring('EQ.Not.Coin.NOT.Gem.${equip1}.WT')}
${pcstring('EQ.Not.Coin.NOT.Gem.${equip1}.COST')}
- - - - - - - -
EQUIPMENT
- - - - - - - - -<@loop from=0 to=(pcvar("COUNT[EQUIPMENT.Not.Coin.NOT.Gem]")-1)/2 ; equip1, equip1_has_next > - <@equipmentRow equip1=equip1 /> - -
ITEMLOCATIONQTYBULKCOST
-
- - - - - - - - -<@loop from=((pcvar("COUNT[EQUIPMENT.Not.Coin.NOT.Gem]")-1)/2)+1 to=pcvar("COUNT[EQUIPMENT.Not.Coin.NOT.Gem]")-1 ; equip2, equip2_has_next > - <@equipmentRow equip1=equip2 /> - - - - - - -
ITEMLOCATIONQTYBULKCOST
TOTAL BULK CARRIED/VALUE  ${pcstring('TOTAL.WEIGHT.INTVAL')}${pcstring('TOTAL.VALUE')}
-
- - - - - - - - - - - - <#assign overburdened = pcstring('WEIGHT.Overburdened')?number> - - - - - - - -
BULK ALLOWANCE
Light${pcstring('WEIGHT.LIGHT')}Encumbered${pcstring('WEIGHT.Encumbered')}Overburdened${overburdened+1}
- - -<#if (pcvar("COUNT[EQTYPE.LightSource]") > 0)> -
- - - - - - - - - - -<@loop from=0 to=pcvar('COUNT[EQTYPE.LightSource]-1') ; light , light_has_next> -<#if (light % 2 = 0)><#else> - - - - - - -
ILLUMINATION
Light SourceBrightShadowyDuration
${pcstring('EQTYPE.LightSource.${light}.NAME')}${pcstring('EQTYPE.LightSource.${light}.QUALITY.Bright Illumination')}${pcstring('EQTYPE.LightSource.${light}.QUALITY.Shadowy Illumination')}${pcstring('EQTYPE.LightSource.${light}.QUALITY.Duration')}
- - - -
- - - - - - - -
MONEY
-<@loop from=0 to=pcvar('COUNT[EQTYPE.Coin]')-1 ; count , count_has_next> - ${pcstring('EQTYPE.Coin.${count}.NAME')}: ${pcstring('EQTYPE.Coin.${count}.QTY')}
- -<@loop from=0 to=pcvar('COUNT[EQTYPE.Gem]')-1 ; count , count_has_next> - ${pcstring('EQTYPE.Gem.%.QTY')}x${pcstring('EQTYPE.Gem.${count}.NAME')} (${pcstring('EQTYPE.Gem.${count}.COST')})
- -${pcstring('MISC.FUNDS')} Unspent Funds = ${pcstring('GOLD.TRUNC')}
- -
- -<#if (pcvar("FOLLOWERTYPE.Familiar") > 0) > - - - - - - - - - - - - - - - - - - -<@loop from=0 to=pcvar('COUNT[FOLLOWERTYPE.FAMILIAR.0.EQTYPE.WEAPON]-1') ; wep , wep_has_next><#-- TODO: Loop was of early exit type 1 --> - - - - - - - <#if (pcstring("FOLLOWERTYPE.FAMILIAR.0.WEAPON.${wep}.QUALITY.Critical") = "")> - - <#else>) - - - - - - - - - - -
Familiar: ${pcstring('FOLLOWERTYPE.FAMILIAR.0.NAME')} (${pcstring('FOLLOWERTYPE.FAMILIAR.0.RACE')})
FORT:${pcstring('FOLLOWERTYPE.FAMILIAR.0.CHECK.FORTITUDE.TOTAL')}REF:${pcstring('FOLLOWERTYPE.FAMILIAR.0.CHECK.REFLEX.TOTAL')}WILL:${pcstring('FOLLOWERTYPE.FAMILIAR.0.CHECK.2.TOTAL')}HP:${pcstring('FOLLOWERTYPE.FAMILIAR.0.HP')}AC:${pcstring('FOLLOWERTYPE.FAMILIAR.0.AC.Total')}INIT:${pcstring('FOLLOWERTYPE.FAMILIAR.0.INITIATIVEMOD')}
${pcstring('FOLLOWERTYPE.FAMILIAR.0.WEAPON.${wep}.NAME')}${pcstring('FOLLOWERTYPE.FAMILIAR.0.WEAPON.${wep}.TOTALHIT')}DAMAGE:${pcstring('FOLLOWERTYPE.FAMILIAR.0.WEAPON.${wep}.DAMAGE')}CRITICAL:-${pcstring('FOLLOWERTYPE.FAMILIAR.0.WEAPON.${wep}.QUALITY.Critical')}
Special:  ${pcstring('FOLLOWERTYPE.FAMILIAR.0.SPECIALLIST')}
-
- -<#if (pcvar("FOLLOWERTYPE.SPECIAL MOUNT") > 0) > - - - - - - - - - - - - - - - - - - -<@loop from=0 to=pcvar('COUNT[FOLLOWERTYPE.SPECIAL MOUNT.0.EQTYPE.WEAPON]-1') ; wep , wep_has_next><#-- TODO: Loop was of early exit type 1 --> - - - - - - - <#if (pcstring("FOLLOWERTYPE.SPECIAL MOUNT.0.WEAPON.${wep}.QUALITY.Critical") = "")> - - <#else>) - - - - - - - - - - -
Special Mount: ${pcstring('FOLLOWERTYPE.SPECIAL MOUNT.0.NAME')} (${pcstring('FOLLOWERTYPE.SPECIAL MOUNT.0.RACE')})
FORT:${pcstring('FOLLOWERTYPE.SPECIAL MOUNT.0.CHECK.FORTITUDE.TOTAL')}REF:${pcstring('FOLLOWERTYPE.SPECIAL MOUNT.0.CHECK.REFLEX.TOTAL')}WILL:${pcstring('FOLLOWERTYPE.SPECIAL MOUNT.0.CHECK.2.TOTAL')}HP:${pcstring('FOLLOWERTYPE.SPECIAL MOUNT.0.HP')}AC:${pcstring('FOLLOWERTYPE.SPECIAL MOUNT.0.AC.Total')}INIT:${pcstring('FOLLOWERTYPE.SPECIAL MOUNT.0.INITIATIVEMOD')}
${pcstring('FOLLOWERTYPE.SPECIAL MOUNT.0.WEAPON.${wep}.NAME')}${pcstring('FOLLOWERTYPE.SPECIAL MOUNT.0.WEAPON.${wep}.TOTALHIT')}DAMAGE:${pcstring('FOLLOWERTYPE.SPECIAL MOUNT.0.WEAPON.${wep}.DAMAGE')}CRITICAL:-${pcstring('FOLLOWERTYPE.SPECIAL MOUNT.0.WEAPON.${wep}.QUALITY.Critical')}
Special:  ${pcstring('FOLLOWERTYPE.SPECIAL MOUNT.0.SPECIALLIST')}
-
- -<#if (pcvar("FOLLOWERTYPE.ANIMAL COMPANION") > 0) > -<@loop from=0 to=pcvar('COUNT[FOLLOWERTYPE.ANIMAL COMPANION]-1') ; anm , anm_has_next> - - - - - - - - - - - - - - - - - - -<@loop from=0 to=pcvar('COUNT[FOLLOWERTYPE.ANIMAL COMPANION.${anm}.EQTYPE.WEAPON]-1') ; wep , wep_has_next><#-- TODO: Loop was of early exit type 1 --> - - - - - - - <#if (pcstring("FOLLOWERTYPE.ANIMAL COMPANION.${anm}.WEAPON.${wep}.QUALITY.Critical") = "")> - - <#else>) - - - - - - - - - -
Animal Companion: ${pcstring('FOLLOWERTYPE.ANIMAL COMPANION.${anm}.NAME')} (${pcstring('FOLLOWERTYPE.ANIMAL COMPANION.${anm}.RACE')})
FORT:${pcstring('FOLLOWERTYPE.ANIMAL COMPANION.${anm}.CHECK.FORTITUDE.TOTAL')}REF:${pcstring('FOLLOWERTYPE.ANIMAL COMPANION.${anm}.CHECK.REFLEX.TOTAL')}WILL:${pcstring('FOLLOWERTYPE.ANIMAL COMPANION.${anm}.CHECK.2.TOTAL')}HP:${pcstring('FOLLOWERTYPE.ANIMAL COMPANION.${anm}.HP')}AC:${pcstring('FOLLOWERTYPE.ANIMAL COMPANION.${anm}.AC.Total')}INIT:${pcstring('FOLLOWERTYPE.ANIMAL COMPANION.${anm}.INITIATIVEMOD')}
${pcstring('FOLLOWERTYPE.ANIMAL COMPANION.${anm}.WEAPON.${wep}.NAME')}${pcstring('FOLLOWERTYPE.ANIMAL COMPANION.${anm}.WEAPON.${wep}.TOTALHIT')}DAMAGE:${pcstring('FOLLOWERTYPE.ANIMAL COMPANION.${anm}.WEAPON.${wep}.DAMAGE')}CRITICAL:-${pcstring('FOLLOWERTYPE.ANIMAL COMPANION.${anm}.WEAPON.${wep}.QUALITY.Critical')}
Special:  ${pcstring('FOLLOWERTYPE.ANIMAL COMPANION.${anm}.SPECIALLIST')}
-
- - - -<#if (pcvar("FOLLOWERTYPE.FOLLOWERS") > 0) > - - - - - - - -
HENCHMEN
-<@loop from=0 to=pcvar('COUNT[FOLLOWERTYPE.FOLLOWERS]-1') ; follower , follower_has_next><#-- TODO: Loop was of early exit type 1 --> -${pcstring('FOLLOWERTYPE.FOLLOWERS.${follower}.NAME')},  - -
- - -<#if (pcvar("MISC.COMPANIONS") > 0) > - - - - - - - - -
OTHER COMPANIONS
${pcstring('MISC.COMPANIONS')}
-
- - - -<#if (pcstring("TEMPLATELIST") != '') > - - - - - - - -
TEMPLATES
${pcstring('TEMPLATELIST')}
-
- - - -<#if (pchasvar("DivineRank"))> - - - - - - - -
SALIENT DIVINE ABILITIES
${pcstring('ABILITYLIST.Salient Divine Ability')}
-
-<#else> - - -<#if (pcvar("MISC.MAGIC") > 0) > - - - - - - - - -
MAGIC
${pcstring('MISC.MAGIC')}
-
- - -<#if (pcvar("PROHIBITEDLIST") > 0) > - - - - - - - - -
PROHIBITED
${pcstring('PROHIBITEDLIST')}
-
- - -<#if (pcstring("DOMAIN.1") != "") > - - - - - - - - - -<@loop from=1 to=pcvar('COUNT[DOMAINS]') ; count , count_has_next> - - -
Cleric of ${pcstring('DEITY')}
Domain
Granted Power
${pcstring('DOMAIN.${count}')}
${pcstring('DOMAIN.${count}.POWER')}
-
- - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Special Ability","ASPECT=TurnType")-1') ; turncount , turncount_has_next> - <#assign turnLevel = pcvar('((ABILITYALL.Special Ability.${turncount}.ASPECT=TurnType.ASPECT.TurnLevel)+0)')> <#-- create variable x --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
${pcstring('ABILITYALL.Special Ability.${turncount}.ASPECT=TurnType.ASPECT.TurnType')} ${pcstring('ABILITYALL.Special Ability.${turncount}.ASPECT=TurnType.ASPECT.TurnKind')}
TURNING CHECK
RESULT
AFFECTED
(MAX HIT DICE)
TURN LEVEL${turnLevel}
TURN DAMAGE${pcstring('ABILITYALL.Special Ability.${turncount}.ASPECT=TurnType.ASPECT.TurnDamage')}
Up to 0${turnLevel-4}TURNING CHECK1d20${pcstring('ABILITYALL.Special Ability.${turncount}.ASPECT=TurnType.ASPECT.TurnCheck.INTVAL.SIGN.NOZERO')}
1 - 3${turnLevel-3}TURNS/DAY${pcstring('ABILITYALL.Special Ability.${turncount}.ASPECT=TurnType.ASPECT.TurnTimes.INTVAL')}
4 - 6${turnLevel-2} - <@loop from=0 to=pcstring('ABILITYALL.Special Ability.${turncount}.ASPECT=TurnType.ASPECT.TurnTimes.INTVAL')?number-1> ☐ -
7 - 9${turnLevel-1}${pcstring('ABILITYALL.Special Ability.${turncount}.ASPECT=TurnType.ASPECT.TurnNotes')} -
10 - 12${turnLevel}
13 - 15${turnLevel+1}
16 - 18${turnLevel+2}
19 - 21${turnLevel+3}
22+${turnLevel+4}
-
- - - - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Special Ability","ASPECT=ChannelingType")-1') ; channelingcount , channelingcount_has_next> - <#assign ChannelingLevel = pcvar('((ABILITYALL.Special Ability.${channelingcount}.ASPECT=ChannelingType.ASPECT.ChannelingLevel)+0)')> <#-- create variable x --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
${pcstring('ABILITYALL.Special Ability.${channelingcount}.ASPECT=ChannelingType.ASPECT.ChannelingType')} ${pcstring('ABILITYALL.Special Ability.${channelingcount}.ASPECT=ChannelingType.ASPECT.ChannelingKind')}
CHANNELING CHECK
RESULT
AFFECTED
(MAX HIT DICE)
CHANNELING LEVEL${ChannelingLevel}
MAGNITUDE${pcstring('ABILITYALL.Special Ability.${channelingcount}.ASPECT=ChannelingType.ASPECT.Magnitude')}
Up to 0${ChannelingLevel-8}CHANNELING CHECK1d20${pcstring('ABILITYALL.Special Ability.${channelingcount}.ASPECT=ChannelingType.ASPECT.ChannelingCheck.INTVAL.SIGN.NOZERO')}
1 - 3${ChannelingLevel-7}USES/DAY${pcstring('ABILITYALL.Special Ability.${channelingcount}.ASPECT=ChannelingType.ASPECT.ChannelingUses.INTVAL')}
4 - 6${ChannelingLevel-6} - <@loop from=0 to=pcstring('ABILITYALL.Special Ability.${channelingcount}.ASPECT=ChannelingType.ASPECT.ChannelingUses.INTVAL')?number-1> ☐ -
7 - 9${ChannelingLevel-5}${pcstring('ABILITYALL.Special Ability.${channelingcount}.ASPECT=ChannelingType.ASPECT.ChannelingNotes')} -
10 - 12${ChannelingLevel-4}
13 - 15${ChannelingLevel-3}
16 - 18${ChannelingLevel-2}
19 - 21${ChannelingLevel-1}
22 - 25${ChannelingLevel}
26+${ChannelingLevel+1}
-
- - - - - - - -<@loop from=nextWeaponIdx to=pcvar('COUNT[EQTYPE.Weapon]-1') ; weap , weap_has_next><#-- TODO: Loop was of early exit type 1 --> -<#if (pcstring("WEAPON.${weap}.NAME") != "") > - <@weaponBlock weap=weap /> - - - - - - - -
1H-P: One handed, primary hand. 1H-O: One handed, off hand. 2H: Two handed. 2W-P-(OH): 2 weapons, primary hand (off hand weapon is heavy). 2W-P-(OL): 2 weapons, primary hand (off hand weapon is light). 2W-OH:2 weapons, off hand.
- - - - - - - - - - - -
LANGUAGES
${pcstring('LANGUAGES')} ${pcstring('ABILITYALL.ANY.0.ASPECT=Language.ASPECT.Language')}
- - - -<#if (pcvar('count("ABILITIES","CATEGORY=Proficiency","TYPE=Proficiency","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Proficiency","TYPE=Proficiency","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; proficiency , proficiency_has_next> -<#if (proficiency % 2 = 0)><#else> - - - -
Proficiencies
${pcstring('ABILITYALL.Proficiency.VISIBLE.${proficiency}.TYPE=Proficiency')}[${pcstring('ABILITYALL.Proficiency.VISIBLE.${proficiency}.TYPE=Proficiency.SOURCE')}]
- - - - -<#if (pcvar('count("ABILITIES","CATEGORY=Archetype","TYPE=Archetype","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Archetype","TYPE=Archetype","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; archetype , archetype_has_next> -<#if (archetype % 2 = 0)><#else> - - - -
Archetypes
${pcstring('ABILITYALL.Archetype.VISIBLE.${archetype}.TYPE=Archetype')} - -${pcstring('ABILITYALL.Archetype.VISIBLE.${archetype}.TYPE=Archetype.DESC')}
- - - - -<#if (pcvar('count("ABILITIES","CATEGORY=Afflictions","TYPE=Affliction","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Afflictions","TYPE=Affliction","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; affliction , affliction_has_next> -<#if (affliction % 2 = 0)><#else> - - - -<#if (affliction % 2 = 0)><#else> - - - -
Afflictions
${pcstring('ABILITYALL.Afflictions.VISIBLE.${affliction}.TYPE=Affliction')}[${pcstring('ABILITYALL.Afflictions.VISIBLE.${affliction}.TYPE=Affliction.SOURCE')}]
     -${pcstring('ABILITYALL.Afflictions.VISIBLE.${affliction}.TYPE=Affliction.DESC')} -
- - - - -<#if (pcvar('count("ABILITIES","CATEGORY=Special Ability","TYPE=Trait","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Special Ability","TYPE=Trait","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; trait , trait_has_next> -<#if (trait % 2 = 0)><#else> - - - -<#if (trait % 2 = 0)><#else> - - - -
Traits
${pcstring('ABILITYALL.Special Ability.VISIBLE.${trait}.TYPE=Trait')}[${pcstring('ABILITYALL.Special Ability.VISIBLE.${trait}.TYPE=Trait.SOURCE')}]
     -${pcstring('ABILITYALL.Special Ability.VISIBLE.${trait}.TYPE=Trait.DESC')} -
- - - -<#macro typeOfAbilitySuffix typeOfAbility > -<#if (typeOfAbility?contains("extraordinary"))> - (Ex) - -<#if (typeOfAbility?contains("supernatural"))> - (Su) - -<#if (typeOfAbility?contains("spelllike"))> - (Sp) - -<#if (typeOfAbility?contains("psilike"))> - (Ps) - - - -<#if (pcvar('count("ABILITIES","CATEGORY=Special Ability","TYPE=SpecialAttack","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Special Ability","TYPE=SpecialAttack","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; specialAttack , specialAttack_has_next> -<#if (specialAttack % 2 = 0)><#else> - - - -<#if (specialAttack % 2 = 0)><#else> - - - -
SPECIAL ATTACKS
-<#assign typeOfAbility = pcstring("ABILITYALL.Special Ability.VISIBLE.${specialAttack}.TYPE=SpecialAttack.TYPE")?lower_case /> -<#if (pcstring("ABILITYALL.Special Ability.VISIBLE.${specialAttack}.TYPE=SpecialAttack.HASASPECT.Name") = "Y")> -${pcstring('ABILITYALL.Special Ability.VISIBLE.${specialAttack}.TYPE=SpecialAttack.ASPECT.Name')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> -<#else> -${pcstring('ABILITYALL.Special Ability.VISIBLE.${specialAttack}.TYPE=SpecialAttack')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> - - -[${pcstring('ABILITYALL.Special Ability.VISIBLE.${specialAttack}.TYPE=SpecialAttack.SOURCE')}]
     -${pcstring('ABILITYALL.Special Ability.VISIBLE.${specialAttack}.TYPE=SpecialAttack.DESC')}
- - - - -<#if (pcvar('count("ABILITIES","CATEGORY=Special Ability","TYPE=Prestige Award Display","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Special Ability","TYPE=Prestige Award Display","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; prestigeAward , prestigeAward_has_next> -<#if (prestigeAward % 2 = 0)><#else> - - - -<#if (prestigeAward % 2 = 0)><#else> - - - -
Prestige Awards
-<#assign typeOfAbility = pcstring("ABILITYALL.Special Ability.VISIBLE.${prestigeAward}.TYPE=Prestige Award Display.TYPE")?lower_case /> -<#if (pcstring("ABILITYALL.Special Ability.VISIBLE.${prestigeAward}.TYPE=Prestige Award Display.HASASPECT.Name") = "Y")> -${pcstring('ABILITYALL.Special Ability.VISIBLE.${prestigeAward}.TYPE=Prestige Award Display.ASPECT.Name')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> -<#else> -${pcstring('ABILITYALL.Special Ability.VISIBLE.${prestigeAward}.TYPE=Prestige Award Display')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> - - -[${pcstring('ABILITYALL.Special Ability.VISIBLE.${prestigeAward}.TYPE=Prestige Award Display.SOURCE')}]
     -${pcstring('ABILITYALL.Special Ability.VISIBLE.${prestigeAward}.TYPE=Prestige Award Display.DESC')}
- - - - - -<#if (pcvar('count("ABILITIES","CATEGORY=Special Ability","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY","TYPE=AnimalTrick")') = 0)> -<#else> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Special Ability","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY","TYPE=AnimalTrick")-1') ; animalTrick , animalTrick_has_next> -<#if (animalTrick % 2 = 0)><#else> - - - -
ANIMAL TRICKS
${pcstring('ABILITYALL.Special Ability.VISIBLE.${animalTrick}.TYPE=AnimalTrick')} - ${pcstring('ABILITYALL.Special Ability.VISIBLE.${animalTrick}.TYPE=AnimalTrick.DESC')}
- - - -<#if (pcvar('count("ABILITIES","CATEGORY=Special Ability","TYPE=SpecialQuality","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Special Ability","TYPE=SpecialQuality","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; specialQuality , specialQuality_has_next> -<#if (specialQuality % 2 = 0)><#else> - - - -<#if (specialQuality % 2 = 0)><#else> - - - -
SPECIAL QUALITIES
-<#assign typeOfAbility = pcstring("ABILITYALL.Special Ability.VISIBLE.${specialQuality}.TYPE=SpecialQuality.TYPE")?lower_case /> -<#if (pcstring("ABILITYALL.Special Ability.VISIBLE.${specialQuality}.TYPE=SpecialQuality.HASASPECT.Name") = "Y")> -${pcstring('ABILITYALL.Special Ability.VISIBLE.${specialQuality}.TYPE=SpecialQuality.ASPECT.Name')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> -<#else> -${pcstring('ABILITYALL.Special Ability.VISIBLE.${specialQuality}.TYPE=SpecialQuality')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> - - -[${pcstring('ABILITYALL.Special Ability.VISIBLE.${specialQuality}.TYPE=SpecialQuality.SOURCE')}]
     -${pcstring('ABILITYALL.Special Ability.VISIBLE.${specialQuality}.TYPE=SpecialQuality.DESC')}
- - - - -<#if (pcvar('count("ABILITIES","CATEGORY=Racial Trait","TYPE=Racial Trait","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Racial Trait","TYPE=Racial Trait","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; RacialTrait , RacialTrait_has_next> -<#if (RacialTrait % 2 = 0)><#else> - - - -<#if (RacialTrait % 2 = 0)><#else> - - - -
RACIAL TRAITS
-<#assign typeOfAbility = pcstring("ABILITYALL.Racial Trait.VISIBLE.${RacialTrait}.TYPE=Racial Trait.TYPE")?lower_case /> -<#if (pcstring("ABILITYALL.Racial Trait.VISIBLE.${RacialTrait}.TYPE=Racial Trait.HASASPECT.Name") = "Y")> -${pcstring('ABILITYALL.Racial Trait.VISIBLE.${RacialTrait}.TYPE=Racial Trait.ASPECT.Name')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> -<#else> -${pcstring('ABILITYALL.Racial Trait.VISIBLE.${RacialTrait}.TYPE=Racial Trait')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> - - -[${pcstring('ABILITYALL.Racial Trait.VISIBLE.${RacialTrait}.TYPE=Racial Trait.SOURCE')}]
     -${pcstring('ABILITYALL.Racial Trait.VISIBLE.${RacialTrait}.TYPE=Racial Trait.DESC')}
- - - - - -<#if (pcvar('count("ABILITIES","CATEGORY=Ancestry","TYPE=Ancestry","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Ancestry","TYPE=Ancestry","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; Ancestry , Ancestry_has_next> -<#if (Ancestry % 2 = 0)><#else> - - - -<#if (Ancestry % 2 = 0)><#else> - - - -
AncestryS
-<#assign typeOfAbility = pcstring("ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry.TYPE")?lower_case /> -<#if (pcstring("ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry.HASASPECT.Name") = "Y")> -${pcstring('ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry.ASPECT.Name')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> -<#else> -${pcstring('ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> - - -[${pcstring('ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry.SOURCE')}]
     -${pcstring('ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry.DESC')}
- - - - -<#if (pcvar('count("ABILITIES","CATEGORY=Background","TYPE=Background","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Background","TYPE=Background","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; Background , Background_has_next> -<#if (Background % 2 = 0)><#else> - - - -<#if (Background % 2 = 0)><#else> - - - -
BackgroundS
-<#assign typeOfAbility = pcstring("ABILITYALL.Background.VISIBLE.${Background}.TYPE=Background.TYPE")?lower_case /> -<#if (pcstring("ABILITYALL.Background.VISIBLE.${Background}.TYPE=Background.HASASPECT.Name") = "Y")> -${pcstring('ABILITYALL.Background.VISIBLE.${Background}.TYPE=Background.ASPECT.Name')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> -<#else> -${pcstring('ABILITYALL.Background.VISIBLE.${Background}.TYPE=Background')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> - - -[${pcstring('ABILITYALL.Background.VISIBLE.${Background}.TYPE=Background.SOURCE')}]
     -${pcstring('ABILITYALL.Background.VISIBLE.${Background}.TYPE=Background.DESC')}
- - - - -<#if (pcvar('count("ABILITIES","CATEGORY=Ancestry","TYPE=Ancestry","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Ancestry","TYPE=Ancestry","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; Ancestry , Ancestry_has_next> -<#if (Ancestry % 2 = 0)><#else> - - - -<#if (Ancestry % 2 = 0)><#else> - - - -
AncestryS
-<#assign typeOfAbility = pcstring("ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry.TYPE")?lower_case /> -<#if (pcstring("ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry.HASASPECT.Name") = "Y")> -${pcstring('ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry.ASPECT.Name')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> -<#else> -${pcstring('ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> - - -[${pcstring('ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry.SOURCE')}]
     -${pcstring('ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry.DESC')}
- - - - -<#if (pcvar('count("ABILITIES","CATEGORY=Class Feature","TYPE=Class Feature","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Class Feature","TYPE=Class Feature","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; ClassFeature , ClassFeature_has_next> -<#if (ClassFeature % 2 = 0)><#else> - - - -<#if (ClassFeature % 2 = 0)><#else> - - - -
Class Features
-<#assign typeOfAbility = pcstring("ABILITYALL.Class Feature.VISIBLE.${ClassFeature}.TYPE=Class Feature.TYPE")?lower_case /> -<#if (pcstring("ABILITYALL.Class Feature.VISIBLE.${ClassFeature}.TYPE=Class Feature.HASASPECT.Name") = "Y")> -${pcstring('ABILITYALL.Class Feature.VISIBLE.${ClassFeature}.TYPE=Class Feature.ASPECT.Name')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> -<#else> -${pcstring('ABILITYALL.Class Feature.VISIBLE.${ClassFeature}.TYPE=Class Feature')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> - - -[${pcstring('ABILITYALL.Class Feature.VISIBLE.${ClassFeature}.TYPE=Class Feature.SOURCE')}]
     -${pcstring('ABILITYALL.Class Feature.VISIBLE.${ClassFeature}.TYPE=Class Feature.DESC')}
- - - - -<#if (pcvar('count("ABILITIES","CATEGORY=Ancestry Feat","TYPE=Ancestry Feat","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Ancestry Feat","TYPE=Ancestry Feat","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; AncestryFeat , AncestryFeat_has_next> -<#if (AncestryFeat % 2 = 0)><#else> - - - -<#if (AncestryFeat % 2 = 0)><#else> - - - -
Ancestry Feats
-<#assign typeOfAbility = pcstring("ABILITYALL.Ancestry Feat.VISIBLE.${AncestryFeat}.TYPE=Ancestry Feat.TYPE")?lower_case /> -<#if (pcstring("ABILITYALL.Ancestry Feat.VISIBLE.${AncestryFeat}.TYPE=Ancestry Feat.HASASPECT.Name") = "Y")> -${pcstring('ABILITYALL.Ancestry Feat.VISIBLE.${AncestryFeat}.TYPE=Ancestry Feat.ASPECT.Name')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> -<#else> -${pcstring('ABILITYALL.Ancestry Feat.VISIBLE.${AncestryFeat}.TYPE=Ancestry Feat')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> - - -[${pcstring('ABILITYALL.Ancestry Feat.VISIBLE.${AncestryFeat}.TYPE=Ancestry Feat.SOURCE')}]
     -${pcstring('ABILITYALL.Ancestry Feat.VISIBLE.${AncestryFeat}.TYPE=Ancestry Feat.DESC')}
- - - - - - - - - - - - - - - - -<#if (pcvar("COUNT[SA]") > 0) > - - - - - -<@loop from=0 to=pcvar('COUNT[SA]-1') ; sa , sa_has_next> - - - - - - - -
SPECIAL ABILITIES
${pcstring('SPECIALABILITY.${sa}')}
${pcstring('SPECIALLIST')}
- - - - - - -<@loop from=0 to=pcvar('COUNT[FEATSALL.VISIBLE]-1') ; feat , feat_has_next> -<#if (feat % 2 = 0)><#else> - - - -<#if (feat % 2 = 0)><#else> - - <#if (feat % 2 = 0)><#else> - - - -
FEATS
${pcstring('FEATALL.VISIBLE.${feat}')}[${pcstring('FEATALL.VISIBLE.${feat}.SOURCE')}]
    ${pcstring('FEATALL.VISIBLE.${feat}.DESC')}
    ${pcstring('FEATALL.VISIBLE.${feat}.BENEFIT')} -
- - - - - - - -<#if (pcvar('count("ABILITIES","CATEGORY=Special Ability","TYPE=PFSBoon","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=Special Ability","TYPE=PFSBoon","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; PFSBoon , PFSBoon_has_next> -<#if (PFSBoon % 2 = 0)><#else> - - - -
PFS Boons
-<#assign typeOfAbility = pcstring("ABILITYALL.Special Ability.VISIBLE.${PFSBoon}.TYPE=PFSBoon.TYPE")?lower_case /> -<#if (pcstring("ABILITYALL.Special Ability.VISIBLE.${PFSBoon}.TYPE=PFSBoon.HASASPECT.Name") = "Y")> -${pcstring('ABILITYALL.Special Ability.VISIBLE.${PFSBoon}.TYPE=PFSBoon.ASPECT.Name')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> -<#else> -${pcstring('ABILITYALL.Special Ability.VISIBLE.${PFSBoon}.TYPE=PFSBoon')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> - -: -${pcstring('ABILITYALL.Special Ability.VISIBLE.${PFSBoon}.TYPE=PFSBoon.DESC')} -— [${pcstring('ABILITYALL.Special Ability.VISIBLE.${PFSBoon}.TYPE=PFSBoon.SOURCE')}] -
- - - - - - - - -<#if (pcvar('count("ABILITIES","CATEGORY=PFS Chronicle","TYPE=PFSChronicle","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)> - - - - -<@loop from=0 to=pcvar('count("ABILITIES","CATEGORY=PFS Chronicle","TYPE=PFSChronicle","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; PFSChronicle , PFSChronicle_has_next> -<#if (PFSChronicle % 2 = 0)><#else> - - - -
PFS Chronicles
-<#assign typeOfAbility = pcstring("ABILITYALL.PFS Chronicle.VISIBLE.${PFSChronicle}.TYPE=PFSChronicle.TYPE")?lower_case /> -<#if (pcstring("ABILITYALL.PFS Chronicle.VISIBLE.${PFSChronicle}.TYPE=PFSChronicle.HASASPECT.Name") = "Y")> -${pcstring('ABILITYALL.PFS Chronicle.VISIBLE.${PFSChronicle}.TYPE=PFSChronicle.ASPECT.Name')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> -<#else> -${pcstring('ABILITYALL.PFS Chronicle.VISIBLE.${PFSChronicle}.TYPE=PFSChronicle')} -<@typeOfAbilitySuffix typeOfAbility=typeOfAbility /> - -: -${pcstring('ABILITYALL.PFS Chronicle.VISIBLE.${PFSChronicle}.TYPE=PFSChronicle.DESC')} -— [${pcstring('ABILITYALL.PFS Chronicle.VISIBLE.${PFSChronicle}.TYPE=PFSChronicle.SOURCE')}] -
- - - - - - - - - - - - -<#if (pcvar("COUNT[TEMPBONUSNAMES]") > 0) > - - - - - - - - -
Temporary Bonuses Applied
-<@loop from=0 to=pcvar('COUNT[TEMPBONUSNAMES]-1') ; temp , temp_has_next> -<#if (temp = 0)> -<#else> -•  - -${pcstring('TEMPBONUS.${temp}')} - -
- - - - -<#include "common/common-spells.ftl"> - -
- - - - - - - - - - - - - - - - -
${pcstring('NAME')} <#if (pcstring("FOLLOWEROF") != "") >- ${pcstring('FOLLOWEROF')}
${pcstring('NAME')}'s portrait - - - - - - - - - - - - - - - - - - - - - - - - - -
${pcstring('RACE')}
RACE
${pcstring('AGE')}
AGE
${pcstring('HEIGHT')}
HEIGHT
${pcstring('WEIGHT')}
WEIGHT
${pcstring('COLOR.EYE')}
EYE COLOR
${pcstring('COLOR.SKIN')}
SKIN COLOR
${pcstring('COLOR.HAIR')}
HAIR COLOR
${pcstring('LENGTH.HAIR')}
HAIR LENGTH
${pcstring('PHOBIAS')}
PHOBIAS
${pcstring('PERSONALITY1')} ${pcstring('PERSONALITY2')}
PERSONALITY TRAITS
${pcstring('INTERESTS')}
INTERESTS
${pcstring('SPEECHTENDENCY')}, ${pcstring('CATCHPHRASE')}
SPOKEN STYLE
- -
Description
${pcstring('DESC')}
Home
<#if (pcstring("REGION") != "" && pcstring("REGION") != "None") > From ${pcstring('REGION')}. ${pcstring('RESIDENCE')}, ${pcstring('LOCATION')}
Biography
${pcstring('BIO')}
- -<#if (pcvar("COUNT[NOTES]") > 0) > -
- - - - - -<@loop from=0 to=pcvar('COUNT[NOTES]-1') ; note , note_has_next><#-- TODO: Loop was of early exit type 1 --> -<#if (pcstring("NOTE.${note}.NAME") = "DM Notes")> -<#else> - - - - - - -
Notes
${pcstring('NOTE.${note}.NAME')}${pcstring('NOTE.${note}.VALUE')}
- - - diff --git a/outputsheets/d20/pathfinder_2/pdf/common_sheet/block_hp_defense.xslt b/outputsheets/d20/pathfinder_2/pdf/common_sheet/block_hp_defense.xslt deleted file mode 100644 index 574af346d44..00000000000 --- a/outputsheets/d20/pathfinder_2/pdf/common_sheet/block_hp_defense.xslt +++ /dev/null @@ -1,1305 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - mm - - - - - - mm - - - - - - mm - - - - - - mm - - - - - Test - - - - - - - - - - - WOUNDS/CURRENT HP - - - - - SUBDUAL DAMAGE - - - - - DAMAGE REDUCTION - - - - - SPEED - - - - Test - - - - - HP - hit points - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mm - - - - - mm - - - - - mm - - - - - mm - - - - - mm - - - - - mm - - - - - Test - - - - - - - - WOUNDS/CURRENT HP - - - - SUBDUAL DAMAGE - - - - - - - - - - DAMAGE REDUCTION - - - - SPEED - - - - Test - - - - - - HP - Hit Points - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SP - Stamina Points - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mm - - - - - - - mm - - - - - - - mm - - - - - - - - - - - - - - - - - - - - - - - - mm - - - - - - - - mm - - - - - - - - mm - - - - - - - - mm - - - - - - mm - - - - - - mm - - - - - - - - - - - Test - - - - - - EAC - energy armor class - - - - - - - - - - - - - - = - - - - - - - - - - - - - + - - - - - - - - - - - - - + - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - KAC - kinetic armor class - - - - - - - - - - - - - - - - = - - - - - - - - - - - - - - + - - - - - - - - - - - - - + - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - Resolve - Points - - - - - - - - - - - - - - - - --> - - --> - - --> - - --> - - --> - - --> - - --> - - --> - - --> - - --> - - - --> - - - - - - - Test - - - - TOTAL - - - - - BASE - - - - STAT - - - - ARMOR - - - - MISC - - - - - - - - TOTAL - - - - BASE - - - - STAT - - - - ARMOR - - - - MISC - - - - - - - TOTAL - - - - --> - - --> - - --> - - --> - - --> - - --> - - --> - - --> - - --> - - - - - - - - - - - - - mm - - - - mm - - - - mm - - - - mm - - - - mm - - - - - - mm - - - - - - mm - - - - - - mm - - - - - - - mm - - - - - - - mm - - - - - - - mm - - - - - - mm - - - - - - mm - - - - - - - - - Test - - - - - Test - - - - - INITIATIVE - modifier - - - - - - - - - - - - = - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Test - - - - TOTAL - - - - DEX MODIFIER - - - - MISC MODIFIER - - - - - MISS CHANCE - - - - Arcane Spell Failure - - - - ARMOR CHECK PENALTY - - - - SPELL RESIST - - - - - ACID RESIST - - - - COLD RESIST - - - - ELECT. RESIST - - - - FIRE RESIST - - - - SONIC RESIST - - - - - - - - - - - - - - - - - - - - - - - - - - mm - - - - mm - - - - Test - - - - - Test - - - - - BASE ATTACK - bonus - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mm - - - - mm - - - - Test - - - - - Test - - - - - Encumbrance - - - - - - - - - - - (rules applied) - - - - - - - - - - - - - - - - - - - - - - - mm - - - - Test - - - - - Test - - - - - Res - - - - - - - - - - - - - - - - - - - - - - - - - - mm - - - - Test - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Test - - SAVING THROWS - - - TOTAL - - - BASE SAVE - - - - - ABILITY - - - - - MAGIC - - - - - MISC - - - - - EPIC - - - - - TEMP - - - - - Test - - - - - - - - () - - - - - - - - - - - - - = - - - - - - - - - - - - - - - Test END - - - - - - - - - - - - - - - - - - - - - - + - - - - - - -