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
+
+
+
+
+
+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
+
+ Continued work on UI changes - Java Swing converting to JavaFX
+ Updated the Release Process (Not Version Controlled)
+
+
+
+
+
+
+
+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.
+
+
+
+ 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:
+
+ https://adoptopenjdk.net/archive.html?variant=openjdk11&jvmVariant=hotspot
+ https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/tag/jdk-11%2B28
+ https://jdk.java.net/11/
+ How to "Install" on Windows: https://stackoverflow.com/questions/52511778/how-to-install-openjdk-11-on-windows
+ How to "Install" the real JDK 11 on Linux Ubuntu - https://dzone.com/articles/installing-openjdk-11-on-ubuntu-1804-for-real - SIDE NOTE: Ubuntu made a conscious move to actually leave Java at 10. The work around is to use AdoptOpenJDK 11.
+
+
+ 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
+
+
+
+
+
+ If you have custom data created be aware that you may need to update your data to be compatible with the changes.
+
+
+
+ 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!
+
+
+
+ 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.
+
+
+
+
+
+
+
+
+
+
+ Release notes - Request New Books for PCGen - Version 6.09.05
+
+ New Data Source Development
+
+
+
+
+
+ Release notes - Book Data - Version 6.09.05
+
+ Bug
+
+
+[DATA-4021 ] - Dragon Disciple prestige class doesn't advance spells known for Eldritch Scion (Magus)
+
+[DATA-4088 ] - Halcyon Druid Archetype: Natural Arcana ability doesn't allow for selection of spells.
+
+[DATA-4105 ] - Jack of All Trades (Ex) is not doubling Operatives Edge for zero Rank Skills
+
+[DATA-4119 ] - Dragon Disciple Prestige Class is not granting a bloodline feat at 2nd level as it should
+
+[DATA-4124 ] - Unhindering Shield: Monks do not get their AC bonus with a shield equipped
+
+[DATA-4133 ] - Starfinder - Squad Hardlight Series KAC is off
+
+[DATA-4134 ] - Starfinder - Priest Theme Divine Boon does not increase spell levels
+
+[DATA-4138 ] - Bloodrager Celestial Bloodline does not allow choosing of Bloodline feats
+
+[DATA-4147 ] - Leshy subdomain not available for druids
+
+[DATA-4159 ] - Stealth Mastery cannot be added due to unresolved Skill Ability Reference ~Stealth
+
+[DATA-4161 ] - School Understanding exploit does not allow Void school
+
+[DATA-4162 ] - Exploiter wizard Archetype still shows school benefits
+
+[DATA-4163 ] - Mindlessly Cruel trait not working
+
+[DATA-4164 ] - Swashbucklers should have finesse added to the Elven Thornblade but do not
+
+[DATA-4167 ] - Cost for Arrow (Searing) is wrong
+
+[DATA-4172 ] - legacy of dragons player companion - DEFINES never instantiated.
+
+[DATA-4173 ] - Mage of the Veil should gain Bluff, Disguise, and Stealth as class skills.
+
+[DATA-4174 ] - Swashbuckler cannot select ability for signature deed
+
+[DATA-4175 ] - Selecting certain Archetypes of Witch gives -1 patrons and asks me to remove them
+
+[DATA-4176 ] - [Champions of Balance] Can't select an animal companion race for the survivor druid archetype.
+
+[DATA-4177 ] - Skald advanced versatile performances not showing up
+
+[DATA-4179 ] - Interrogation spell (UM) missing from wizard spell list
+
+[DATA-4180 ] - Ifrit's spell like ability labeled as Ex and not Sp and wrong book labeled
+
+[DATA-4181 ] - Cannot take The Vessel Between trait
+
+[DATA-4184 ] - Living Grimoire spell casting
+
+[DATA-4185 ] - Giant Gecko (companion) dmg listed as 1d4 instead of 1d6 as noted in bestiary
+
+[DATA-4187 ] - Gauntlets of Twisting Vines function unimplemented (suggested replacement .lst code line provided)
+
+[DATA-4188 ] - Waveblade missing Monk type for proficiency
+
+[DATA-4190 ] - Skirmisher Fighter Archetype's "Wilderness Training" grants skill points to all class levels
+
+[DATA-4191 ] - Skirmisher Fighter Archetype's "Skirmisher Conditioning Specialty" class ability does not display choices
+
+[DATA-4192 ] - Still Can't Select Druid Domain in Domain Tab
+
+[DATA-4195 ] - the nimble armor modification appears to be coded incorrectly
+
+[DATA-4198 ] - Expanded Element Kineticist Talents are not available
+
+[DATA-4200 ] - Shapeshifting Hunter Feat calculation error
+
+[DATA-4202 ] - The wild caller summoner archetype (not the HotW version) don't give intended 1/4 class level evolution points
+
+[DATA-4204 ] - Two-handed fighter - Overhand Chop (Add Combat Bonus text for circumstantial use)
+
+[DATA-4205 ] - Slashing Grace not recognizing Khopesh as a legal weapon
+
+[DATA-4206 ] - evolved familiar feat doesn't correctly stack
+
+[DATA-4210 ] - Advanced Weapon Training | Defensive Weapon Training not conferring Shield Bonuses
+
+
+
+
+ Release notes - Java Code - Version 6.09.05
+
+ Bug
+
+
+[CODE-3472 ] - PCGen 6.09.01 does not start in Linux
+
+[CODE-3502 ] - Cannot launch PCGen 6.09.02 on ArchLinux
+
+
+
+
+
+
+
+
+
+
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('STAT.${stat}.LONGNAME')?lower_case}>
- @loop>
-
- ${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
- #if>
-
- @loop>
-
- ${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')}
- @loop>
-
-
- <#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}')}
- ${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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
- @loop>
- #if>
- <#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>
-
- @loop>
- <#if xMed == 0>
- <#assign skillCount += 1>
-
- Medicine
- 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>
- @loop>
-
- #if>
- <#if xCom == 0>
- <#assign skillCount += 1>
-
- Computers
- 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>
- @loop>
-
- #if>
- <#if xCul == 0>
- <#assign skillCount += 1>
-
- Culture
- 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>
- @loop>
-
- #if>
- <#if xEng == 0>
- <#assign skillCount += 1>
-
- Engineering
- 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>
- @loop>
-
- #if>
- <#if xLif == 0>
- <#assign skillCount += 1>
-
- Life Science
- 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>
- @loop>
-
- #if>
- <#if xMys == 0>
- <#assign skillCount += 1>
-
- Mysticism
- 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>
- @loop>
-
- #if>
- <#if xPhy == 0>
- <#assign skillCount += 1>
-
- Physical Science
- 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>
- @loop>
-
- #if>
- <#if xSle == 0>
- <#assign skillCount += 1>
-
- Sleight of Hand
- 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
- #if>
- @loop>
-
- #if>
-
-
- <@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}
-
- @loop>
-
-
- ${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')}
-
-
-
- ${pcstring('NAME')} <#if (pcstring("FOLLOWEROF") != "") >- ${pcstring('FOLLOWEROF')} #if>
- ${pcstring('PLAYERNAME')}
- ${pcstring('ALIGNMENT')}
- ${pcstring('DEITY')}
- ${pcstring('POOL.COST')}
-
-
-
- Character Name
- PLAYER
- ALIGNMENT
- DEITY
- POINTS
-
-
-
-
-
-
-
-
-${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')})
- #if>
-
-
- ${pcstring('EXP.CURRENT')}
- <#if (pcstring("ABILITYALL.ANY.0.TYPE=RaceName.HASASPECT.RaceName") = "Y")>
- ${pcstring('ABILITYALL.ANY.0.ASPECT=RaceName.ASPECT.RaceName')}
- <#else>
- ${pcstring('RACE')}
- #if>
-
- ${pcstring('SIZELONG')} / ${pcstring('FACE')}
- ${pcstring('HEIGHT')}
- ${pcstring('WEIGHT')}
-<#if (pcvar("COUNT[VISION]") > 0) >
- ${pcstring('VISION')}
-<#else>
- Normal
-#if>
-
-
-
- CLASS
- EXPERIENCE
- RACE
- SIZE / FACE
- HEIGHT
- WEIGHT
- VISION
-
-
- ${pcstring('TOTALLEVELS')}
- ${pcstring('EXP.NEXT')}
- ${pcstring('AGE')}
- ${pcstring('GENDER')}
- ${pcstring('COLOR.EYE')}
- ${pcstring('COLOR.HAIR')}, ${pcstring('LENGTH.HAIR')}
-
-
- LEVEL
- NEXT LEVEL
- AGE
- GENDER
- EYES
- HAIR
-
-
-
-
-
-
-
-
-
-
- ABILITY NAME
- ABILITY SCORE
- ABILITY MODIFIER
- TEMPORARY SCORE
- TEMPORARY MODIFIER
-
-<@loop from=0 to=pcvar('COUNT[STATS]-1') ; stat , stat_has_next><#-- TODO: Loop was of early exit type 1 -->
-
- ${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')}
-
-@loop>
-
-
-
-
-<#if pchasvar('StarfinderSystem')>
-
-
- <#elseif (pcvar("UseAlternateDamage") = 0 )>
-
-
-
-<#else>
-
-
-
-#if>
-
-
-
-
- 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')}
-
-
-
-
-
- TOTAL
-
-
- BASE
-
- STAT
-
- ARMOR
-
- MISC
-
-
- TOTAL
-
- BASE
-
- STAT
-
- ARMOR
-
- MISC
-
-
-
- TOTAL
-
-
-
-
-
-
-
-
-
-
-
-
- PERCEPTION Modifier
- ${pcvar('VAR.PerceptionTotal')}
- =
- ${pcvar('VAR.PerceptionAbility')}
- +
- ${pcvar('VAR.PerceptionProf')}
- +
- ${pcvar('VAR.PerceptionItem')}
-
-
-
-
- TOTAL
-
- WIS
-
- PROF
-
- ITEM
-
-
-
-
-
-
-
-
- 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
-
-
-
-
-
-
-
-
-
-
-
- SAVING THROWS
- TOTAL
-
- BASE
-
- ABILITY
-
- MAGIC
-
- EPIC
-
- MISC
-
- TEMPORARY
-
-<@loop from=0 to=pcvar('COUNT[CHECKS]-1') ; checks , checks_has_next>
-
- ${pcstring('CHECK.${checks}.NAME')}
-<#if (pcstring("CHECK.${checks}.NAME") = "Fortitude")>
-Constitution
-<#else>
-#if>
-<#if (pcstring("CHECK.${checks}.NAME") = "Reflex")>
-Dexterity
-<#else>
-#if>
-<#if (pcstring("CHECK.${checks}.NAME") = "Will")>
-Wisdom
-<#else>
-#if>
-
- ${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')}
- +
-
-
-@loop>
-
-
-
- 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)>
-,
-#if>
-${pcstring("ABILITYALL.Racial Trait.VISIBLE.${RacialTrait}.TYPE.ASPECT.BonusSave")?lower_case}
-<#assign condCount++>
-<#else>
-#if>
-@loop>
-
-
-
-
-
-
-
-
- TOTAL
-
- BASE ATTACK
-
- STAT
-
- SIZE
-
- EPIC
-
- MISC
-
- TEMP
-
-
- 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')}
-@loop>
-
-
-
-
-
-
-<#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>
-
-
- ${pcstring('ABILITYALL.Natural Attack.VISIBLE.${ability}.TYPE=NaturalAttack')}
- TOTAL ATTACK BONUS
- DAMAGE
- CRIT / MULT
- REACH
-
-
- ${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')}
-
- <#if (pcstring("ABILITYALL.Natural Attack.VISIBLE.${ability}.TYPE=NaturalAttack.DESC:YES") = "Y")>
-
- Special Properties
- ${pcstring('ABILITYALL.Natural Attack.${ability}.TYPE=NaturalAttack.ASPECT.NaturalAttackNotes')}${pcstring('ABILITYALL.Natural Attack.${ability}.TYPE=NaturalAttack.DESC')}
-
- #if>
-
-
-@loop>
-#if>
-
-
-
-<#if (pcvar('VAR.DisplayUnarmedOff.INTVAL') > 0)>
-
-<#else>
-
-
-
- UNARMED
- TOTAL ATTACK BONUS
- DAMAGE
- CRITICAL
- REACH
-
-
- ${pcstring('WEAPONH.TOTALHIT')}
- ${pcstring('WEAPONH.DAMAGE')}
- <#if (pcstring("WEAPON.QUALITY.Critical") = "")>
- -
- <#else>)
- ${pcstring('WEAPON.QUALITY.Critical')}
- #if>
- ${pcstring('REACH')}
-
- <@loop from=0 to=pcvar('countdistinct("ABILITIES","CATEGORY=Special Ability","TYPE=UnarmedDisplay","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")-1') ; ability , ability_has_next>
-
- SPROP: ${pcstring('ABILITYALL.Special Ability.VISIBLE.${ability}.TYPE=UnarmedDisplay.ASPECT.UnarmedNotes')}
-
- @loop>
-
-
-
- #if>
-
-
- <#-- 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 Blows
- TOTAL ATTACK BONUS
-
-
-
- <#if (fab_1 >= 0)>+#if><#t>${fab_1}<#t>
- <#if (pcvar("FlurryAttacks") >= 2)>
- /<#if (fab_2 >= 0)>+#if><#t>${fab_2}<#t>
- #if>
- <#if (pcvar("FlurryAttacks") >= 3)>
- /<#if (fab_3 >= 0)>+#if><#t>${fab_3}
- #if>
- <#if (pcvar("FlurryAttacks") >= 4)>
- /<#if (fab_4 >= 0)>+#if><#t>${fab_4}
- #if>
- <#if (pcvar("FlurryAttacks") >= 5)>
- /<#if (fab_5 >= 0)>+#if><#t>${fab_5}
- #if>
- <#if (pcvar("FlurryAttacks") >= 6)>
- /<#if (fab_6 >= 0)>+#if><#t>${fab_6}
- #if>
- <#if (pcvar("FlurryAttacks") >= 7)>
- /<#if (fab_7 >= 0)>+#if><#t>${fab_7}
- #if>
- <#if (pcvar("FlurryAttacks") >= 8)>
- /<#if (fab_7 >= 0)>+#if><#t>${fab_8}
- #if>
- <#if (pcvar("FlurryAttacks") >= 9)>
- /<#if (fab_7 >= 0)>+#if><#t>${fab_9}
- #if>
-
-
-
-
-
-#if>
-
-
-
-
-<#macro weaponHandedToHitDmgTable weap>
-
-
-
- 1H-P
- 1H-O
- 2H
- 2W-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')}
-
- <#if (pcstring('WEAPON.${weap}.SPROP') != "")>
-
- Special Properties
- ${pcstring('WEAPON.${weap}.SPROP')}
-
- #if>
-
-#macro>
-
-<#macro weaponBlock weap>
-
- <#assign weaponCategory>
- ${pcstring('WEAPON.${weap}.CATEGORY')?lower_case}
- #assign>
- <#-- Weapon ${weap} is ${pcstring("WEAPON.${weap}.NAME")} Cat: ${weaponCategory} -->
-<#if (weaponCategory?contains('both'))>
-<#if (weaponCategory?contains('ranged'))>
-
- Range
-<@loop from=0 to=4 ; range , range_has_next>
- ${pcstring('WEAPON.${weap}.RANGELIST.${range}')}
-@loop>
-
-
- Bonus
-<@loop from=0 to=4 ; range1 , range1_has_next>
- ${pcstring('WEAPON.${weap}.RANGELIST.${range1}.TOTALHIT')}
-@loop>
-
-
- Dam
-<@loop from=0 to=4 ; range2 , range2_has_next>
- ${pcstring('WEAPON.${weap}.RANGELIST.${range2}.DAMAGE')}
-@loop>
-
-
- Ammunition Used
- ☐☐☐☐☐ ☐☐☐☐☐ ☐☐☐☐☐ ☐☐☐☐☐
-
-
- Special Properties
- ${pcstring('WEAPON.${weap}.SPROP')}
-
-
-
-<#else>
-
- ${pcstring('WEAPON.${weap}.NAME')}
- HAND
- TYPE
- SIZE
- CRITICAL
- REACH
-
-
- ${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}.REACH')}${pcstring('WEAPON.${weap}.REACHUNIT')}
-
-
- <@weaponHandedToHitDmgTable weap=weap />
-#if>
-<#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>
-
-
-
-<#if (pcstring("WEAPON.${weap}.CONTENTS") = "0")>
-
- Range
-<@loop from=0 to=4 ; range , range_has_next>
- ${pcstring('WEAPON.${weap}.RANGELIST.${range}')}
-@loop>
-
-
- Bonus
-<@loop from=0 to=4 ; range1 , range1_has_next>
- ${pcstring('WEAPON.${weap}.RANGELIST.${range1}.TOTALHIT')}
-@loop>
-
-
- Dam
-<@loop from=0 to=4 ; range2 , range2_has_next>
- ${pcstring('WEAPON.${weap}.RANGELIST.${range2}.DAMAGE')}
-@loop>
-
-
- 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')})
-#if>
-
-
-
- Range
-<@loop from=0 to=4 ; range , range_has_next>
- ${pcstring('WEAPON.${weap}.RANGELIST.${range}')}'
-@loop>
-
-
- Bonus
-<@loop from=0 to=4 ; range1 , range1_has_next>
- ${pcstring('WEAPON.${weap}.RANGELIST.${range1}.CONTENTS.${ammo}.TOTALHIT')}
-@loop>
-
-
- Dam
-<@loop from=0 to=4 ; range2 , range2_has_next>
- ${pcstring('WEAPON.${weap}.RANGELIST.${range2}.CONTENTS.${ammo}.DAMAGE')}
-@loop>
-
-
- Ammunition Used
- ☐☐☐☐☐ ☐☐☐☐☐ ☐☐☐☐☐ ☐☐☐☐☐
-@loop>
-
-
- Special Properties
- ${pcstring('WEAPON.${weap}.SPROP')}
-
-
-
-#if>
-<#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')}
- #if>
-
-
-
-
- HAND
- REACH
- TYPE
- SIZE
- SPECIAL 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')}
- #if>
- ${pcstring('WEAPON.${weap}.RANGE')}
-
-
- <@weaponHandedToHitDmgTable weap=weap />
-
- #if>
-#if>
-#if>
-#macro>
-
-
-
-<@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 />
-#if>
-@loop>
-<#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}
- #assign>
- <#if (weaponCategory?contains('both') && weaponCategory?contains('ranged'))>
- <@weaponBlock weap=3 />
- <#assign nextWeaponIdx = 4 />
- #if>
-#if>
-
-
-
- 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")} TYPE ARMOR BONUS MAX DEX BONUS
-${pcstring("ARMOR.EQUIPPED.${count}.TYPE")} See Below ${pcstring("ARMOR.EQUIPPED.${count}.MAXDEX")}
-
-
-CHECK PENALTY SPELL FAILURE SPECIAL PROPERTIES
-${pcstring("ARMOR.EQUIPPED.${count}.ACCHECK")} ${pcstring("ARMOR.EQUIPPED.${count}.SPELLFAIL")} ${pcstring("ARMOR.EQUIPPED.${count}.SPROP")}
-
-#if>
-@loop>
-
-
-
-
-<#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')}
-
-
-
-
-
-
-#if>
-
-
-
-
- SKILLS
-
-
- MAX RANKS
- ${pcstring('MAXSKILLLEVEL')}/${pcstring('MAXCCSKILLLEVEL')}
-
-
- SKILL NAME
- ABILITY
- SKILL MODIFIER
- ABILITY MODIFIER
- RANKS
- MISC MODIFIER
-
-<@loop from=0 to=pcvar('count("SKILLSIT", "VIEW=VISIBLE_EXPORT")')-1; skill , skill_has_next >
-<#if (skill % 2 = 0)><#else> #if>
- <#if pcboolean("SKILLSIT.${skill}.UNTRAINED")>◆#if>
- ${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')}
-
-@loop>
-
-◆ = 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')}
-@loop>
-
-
-
-
-
-
-
-
-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')}
-
-
-
-
-
-<#macro equipmentRow equip1>
- <#if (equip1 % 2 = 0)> <#else> #if>
- ${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>
- <#if (pcstring("EQ.Not.Coin.NOT.Gem.${equip1}.NOTE") != "")>
- (${pcstring('EQ.Not.Coin.NOT.Gem.${equip1}.NOTE')})
- #if>
- <@loop from=1 to=pcvar('EQ.Not.Coin.NOT.Gem.${equip1}.CHARGES') ; charges , charges_has_next>
- ☐
- @loop>
-
- <#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>
- ☐
- @loop>
- #if>
-
- ${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')}
-
-#macro>
-
-
- EQUIPMENT
-
-
-
-
-
- ITEM
- LOCATION
- QTY
- BULK
- COST
-
-<@loop from=0 to=(pcvar("COUNT[EQUIPMENT.Not.Coin.NOT.Gem]")-1)/2 ; equip1, equip1_has_next >
- <@equipmentRow equip1=equip1 />
-@loop>
-
-
-
-
-
- ITEM
- LOCATION
- QTY
- BULK
- COST
-
-<@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 />
-@loop>
-
- TOTAL BULK CARRIED/VALUE
- ${pcstring('TOTAL.WEIGHT.INTVAL')}
- ${pcstring('TOTAL.VALUE')}
-
-
-
-
-
-
-
-
-
-
-
-
-
- BULK ALLOWANCE
-
-
- <#assign overburdened = pcstring('WEIGHT.Overburdened')?number>
- Light
- ${pcstring('WEIGHT.LIGHT')}
- Encumbered
- ${pcstring('WEIGHT.Encumbered')}
- Overburdened
- ${overburdened+1}
-
-
-
-
-<#if (pcvar("COUNT[EQTYPE.LightSource]") > 0)>
-
-
-
- ILLUMINATION
-
-
- Light Source
- Bright
- Shadowy
- Duration
-
-<@loop from=0 to=pcvar('COUNT[EQTYPE.LightSource]-1') ; light , light_has_next>
-<#if (light % 2 = 0)><#else> #if>
- ${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')}
-
-@loop>
-
-#if>
-
-
-
-
-
- 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>
-<@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')})
-@loop>
-${pcstring('MISC.FUNDS')} Unspent Funds = ${pcstring('GOLD.TRUNC')}
-
-
-
-
-
-<#if (pcvar("FOLLOWERTYPE.Familiar") > 0) >
-
-
- 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')}
-
-<@loop from=0 to=pcvar('COUNT[FOLLOWERTYPE.FAMILIAR.0.EQTYPE.WEAPON]-1') ; wep , wep_has_next><#-- TODO: Loop was of early exit type 1 -->
-
- ${pcstring('FOLLOWERTYPE.FAMILIAR.0.WEAPON.${wep}.NAME')}
- ${pcstring('FOLLOWERTYPE.FAMILIAR.0.WEAPON.${wep}.TOTALHIT')}
- DAMAGE:
- ${pcstring('FOLLOWERTYPE.FAMILIAR.0.WEAPON.${wep}.DAMAGE')}
- CRITICAL:
- <#if (pcstring("FOLLOWERTYPE.FAMILIAR.0.WEAPON.${wep}.QUALITY.Critical") = "")>
- -
- <#else>)
- ${pcstring('FOLLOWERTYPE.FAMILIAR.0.WEAPON.${wep}.QUALITY.Critical')}
- #if>
-
-@loop>
-
- Special:
- ${pcstring('FOLLOWERTYPE.FAMILIAR.0.SPECIALLIST')}
-
-
-
-
-
-#if>
-<#if (pcvar("FOLLOWERTYPE.SPECIAL MOUNT") > 0) >
-
-
- 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')}
-
-<@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 -->
-
- ${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:
- <#if (pcstring("FOLLOWERTYPE.SPECIAL MOUNT.0.WEAPON.${wep}.QUALITY.Critical") = "")>
- -
- <#else>)
- ${pcstring('FOLLOWERTYPE.SPECIAL MOUNT.0.WEAPON.${wep}.QUALITY.Critical')}
- #if>
-
-@loop>
-
- Special:
- ${pcstring('FOLLOWERTYPE.SPECIAL MOUNT.0.SPECIALLIST')}
-
-
-
-
-
-#if>
-<#if (pcvar("FOLLOWERTYPE.ANIMAL COMPANION") > 0) >
-<@loop from=0 to=pcvar('COUNT[FOLLOWERTYPE.ANIMAL COMPANION]-1') ; anm , anm_has_next>
-
-
- 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')}
-
-<@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 -->
-
- ${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:
- <#if (pcstring("FOLLOWERTYPE.ANIMAL COMPANION.${anm}.WEAPON.${wep}.QUALITY.Critical") = "")>
- -
- <#else>)
- ${pcstring('FOLLOWERTYPE.ANIMAL COMPANION.${anm}.WEAPON.${wep}.QUALITY.Critical')}
- #if>
-
-
-@loop>
-
- Special:
- ${pcstring('FOLLOWERTYPE.ANIMAL COMPANION.${anm}.SPECIALLIST')}
-
-
-
-@loop>
-
-#if>
-<#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')},
-@loop>
-
-
-
-
-#if>
-<#if (pcvar("MISC.COMPANIONS") > 0) >
-
-
-
- OTHER COMPANIONS
-
-
- ${pcstring('MISC.COMPANIONS')}
-
-
-
-
-#if>
-
-<#if (pcstring("TEMPLATELIST") != '') >
-
-
- TEMPLATES
-
-
- ${pcstring('TEMPLATELIST')}
-
-
-
-#if>
-
-
-<#if (pchasvar("DivineRank"))>
-
-
- SALIENT DIVINE ABILITIES
-
-
- ${pcstring('ABILITYLIST.Salient Divine Ability')}
-
-
-
-<#else>
-#if>
-
-<#if (pcvar("MISC.MAGIC") > 0) >
-
-
-
- MAGIC
-
-
- ${pcstring('MISC.MAGIC')}
-
-
-
-
-#if>
-<#if (pcvar("PROHIBITEDLIST") > 0) >
-
-
-
- PROHIBITED
-
-
- ${pcstring('PROHIBITEDLIST')}
-
-
-
-
-#if>
-<#if (pcstring("DOMAIN.1") != "") >
-
-
-
- Cleric of ${pcstring('DEITY')}
-
-
- Domain
- Granted Power
-
-<@loop from=1 to=pcvar('COUNT[DOMAINS]') ; count , count_has_next>
-${pcstring('DOMAIN.${count}')} ${pcstring('DOMAIN.${count}.POWER')}
-@loop>
-
-
-#if>
-
-
-<@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 CHECK
- 1d20${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> ☐ @loop>
-
-
-
- 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>
-
-
-
-
-
-
-<@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 CHECK
- 1d20${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> ☐ @loop>
-
-
-
- 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>
-
-
-
-
-
-
-<@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 />
-#if>
-@loop>
-
-
-
- 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)>
-
-
- Proficiencies
-
-<@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> #if>
- ${pcstring('ABILITYALL.Proficiency.VISIBLE.${proficiency}.TYPE=Proficiency')}
- [${pcstring('ABILITYALL.Proficiency.VISIBLE.${proficiency}.TYPE=Proficiency.SOURCE')}]
-@loop>
-
-#if>
-
-
-
-<#if (pcvar('count("ABILITIES","CATEGORY=Archetype","TYPE=Archetype","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)>
-
-
- Archetypes
-
-<@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> #if>
- ${pcstring('ABILITYALL.Archetype.VISIBLE.${archetype}.TYPE=Archetype')}
-
-${pcstring('ABILITYALL.Archetype.VISIBLE.${archetype}.TYPE=Archetype.DESC')}
-
-@loop>
-
-#if>
-
-
-
-<#if (pcvar('count("ABILITIES","CATEGORY=Afflictions","TYPE=Affliction","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)>
-
-
- Afflictions
-
-<@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>
- ${pcstring('ABILITYALL.Afflictions.VISIBLE.${affliction}.TYPE=Affliction')}
- [${pcstring('ABILITYALL.Afflictions.VISIBLE.${affliction}.TYPE=Affliction.SOURCE')}]
-
-<#if (affliction % 2 = 0)> <#else> #if>
-
-${pcstring('ABILITYALL.Afflictions.VISIBLE.${affliction}.TYPE=Affliction.DESC')}
-
-
-@loop>
-
-#if>
-
-
-
-<#if (pcvar('count("ABILITIES","CATEGORY=Special Ability","TYPE=Trait","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)>
-
-
- Traits
-
-<@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>
- ${pcstring('ABILITYALL.Special Ability.VISIBLE.${trait}.TYPE=Trait')}
- [${pcstring('ABILITYALL.Special Ability.VISIBLE.${trait}.TYPE=Trait.SOURCE')}]
-
-<#if (trait % 2 = 0)> <#else> #if>
-
-${pcstring('ABILITYALL.Special Ability.VISIBLE.${trait}.TYPE=Trait.DESC')}
-
-
-@loop>
-
-#if>
-
-
-<#macro typeOfAbilitySuffix typeOfAbility >
-<#if (typeOfAbility?contains("extraordinary"))>
- (Ex)
-#if>
-<#if (typeOfAbility?contains("supernatural"))>
- (Su)
-#if>
-<#if (typeOfAbility?contains("spelllike"))>
- (Sp)
-#if>
-<#if (typeOfAbility?contains("psilike"))>
- (Ps)
-#if>
-#macro>
-
-<#if (pcvar('count("ABILITIES","CATEGORY=Special Ability","TYPE=SpecialAttack","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)>
-
-
- SPECIAL ATTACKS
-
-<@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>
-
-<#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 />
-#if>
-
-
-[${pcstring('ABILITYALL.Special Ability.VISIBLE.${specialAttack}.TYPE=SpecialAttack.SOURCE')}]
-
-<#if (specialAttack % 2 = 0)> <#else> #if>
-
-${pcstring('ABILITYALL.Special Ability.VISIBLE.${specialAttack}.TYPE=SpecialAttack.DESC')}
-
-@loop>
-
-#if>
-
-
-
-<#if (pcvar('count("ABILITIES","CATEGORY=Special Ability","TYPE=Prestige Award Display","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)>
-
-
- Prestige Awards
-
-<@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>
-
-<#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 />
-#if>
-
-
-[${pcstring('ABILITYALL.Special Ability.VISIBLE.${prestigeAward}.TYPE=Prestige Award Display.SOURCE')}]
-
-<#if (prestigeAward % 2 = 0)> <#else> #if>
-
-${pcstring('ABILITYALL.Special Ability.VISIBLE.${prestigeAward}.TYPE=Prestige Award Display.DESC')}
-
-@loop>
-
-#if>
-
-
-
-
-<#if (pcvar('count("ABILITIES","CATEGORY=Special Ability","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY","TYPE=AnimalTrick")') = 0)>
-<#else>
-
-
- ANIMAL TRICKS
-
-<@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> #if>
- ${pcstring('ABILITYALL.Special Ability.VISIBLE.${animalTrick}.TYPE=AnimalTrick')}
- ${pcstring('ABILITYALL.Special Ability.VISIBLE.${animalTrick}.TYPE=AnimalTrick.DESC')}
-
-@loop>
-
-#if>
-
-
-<#if (pcvar('count("ABILITIES","CATEGORY=Special Ability","TYPE=SpecialQuality","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)>
-
-
- SPECIAL QUALITIES
-
-<@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>
-
-<#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 />
-#if>
-
-
-[${pcstring('ABILITYALL.Special Ability.VISIBLE.${specialQuality}.TYPE=SpecialQuality.SOURCE')}]
-
-<#if (specialQuality % 2 = 0)> <#else> #if>
-
-${pcstring('ABILITYALL.Special Ability.VISIBLE.${specialQuality}.TYPE=SpecialQuality.DESC')}
-
-@loop>
-
-#if>
-
-
-
-<#if (pcvar('count("ABILITIES","CATEGORY=Racial Trait","TYPE=Racial Trait","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)>
-
-
- RACIAL TRAITS
-
-<@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>
-
-<#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 />
-#if>
-
-
-[${pcstring('ABILITYALL.Racial Trait.VISIBLE.${RacialTrait}.TYPE=Racial Trait.SOURCE')}]
-
-<#if (RacialTrait % 2 = 0)> <#else> #if>
-
-${pcstring('ABILITYALL.Racial Trait.VISIBLE.${RacialTrait}.TYPE=Racial Trait.DESC')}
-
-@loop>
-
-#if>
-
-
-
-
-<#if (pcvar('count("ABILITIES","CATEGORY=Ancestry","TYPE=Ancestry","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)>
-
-
- AncestryS
-
-<@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>
-
-<#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 />
-#if>
-
-
-[${pcstring('ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry.SOURCE')}]
-
-<#if (Ancestry % 2 = 0)> <#else> #if>
-
-${pcstring('ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry.DESC')}
-
-@loop>
-
-#if>
-
-
-
-<#if (pcvar('count("ABILITIES","CATEGORY=Background","TYPE=Background","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)>
-
-
- BackgroundS
-
-<@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>
-
-<#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 />
-#if>
-
-
-[${pcstring('ABILITYALL.Background.VISIBLE.${Background}.TYPE=Background.SOURCE')}]
-
-<#if (Background % 2 = 0)> <#else> #if>
-
-${pcstring('ABILITYALL.Background.VISIBLE.${Background}.TYPE=Background.DESC')}
-
-@loop>
-
-#if>
-
-
-
-<#if (pcvar('count("ABILITIES","CATEGORY=Ancestry","TYPE=Ancestry","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)>
-
-
- AncestryS
-
-<@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>
-
-<#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 />
-#if>
-
-
-[${pcstring('ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry.SOURCE')}]
-
-<#if (Ancestry % 2 = 0)> <#else> #if>
-
-${pcstring('ABILITYALL.Ancestry.VISIBLE.${Ancestry}.TYPE=Ancestry.DESC')}
-
-@loop>
-
-#if>
-
-
-
-<#if (pcvar('count("ABILITIES","CATEGORY=Class Feature","TYPE=Class Feature","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)>
-
-
- Class Features
-
-<@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>
-
-<#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 />
-#if>
-
-
-[${pcstring('ABILITYALL.Class Feature.VISIBLE.${ClassFeature}.TYPE=Class Feature.SOURCE')}]
-
-<#if (ClassFeature % 2 = 0)> <#else> #if>
-
-${pcstring('ABILITYALL.Class Feature.VISIBLE.${ClassFeature}.TYPE=Class Feature.DESC')}
-
-@loop>
-
-#if>
-
-
-
-<#if (pcvar('count("ABILITIES","CATEGORY=Ancestry Feat","TYPE=Ancestry Feat","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)>
-
-
- Ancestry Feats
-
-<@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>
-
-<#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 />
-#if>
-
-
-[${pcstring('ABILITYALL.Ancestry Feat.VISIBLE.${AncestryFeat}.TYPE=Ancestry Feat.SOURCE')}]
-
-<#if (AncestryFeat % 2 = 0)> <#else> #if>
-
-${pcstring('ABILITYALL.Ancestry Feat.VISIBLE.${AncestryFeat}.TYPE=Ancestry Feat.DESC')}
-
-@loop>
-
-#if>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<#if (pcvar("COUNT[SA]") > 0) >
-
-
- SPECIAL ABILITIES
-
-
-<@loop from=0 to=pcvar('COUNT[SA]-1') ; sa , sa_has_next>
-
-${pcstring('SPECIALABILITY.${sa}')}
-
-@loop>
-
- ${pcstring('SPECIALLIST')}
-
-
-#if>
-
-
-
- FEATS
-
-<@loop from=0 to=pcvar('COUNT[FEATSALL.VISIBLE]-1') ; feat , feat_has_next>
-<#if (feat % 2 = 0)><#else> #if>
- ${pcstring('FEATALL.VISIBLE.${feat}')}
- [${pcstring('FEATALL.VISIBLE.${feat}.SOURCE')}]
-
-<#if (feat % 2 = 0)> <#else> #if>
- ${pcstring('FEATALL.VISIBLE.${feat}.DESC')}
- <#if (feat % 2 = 0)><#else> #if>
- ${pcstring('FEATALL.VISIBLE.${feat}.BENEFIT')}
-
-
-@loop>
-
-
-
-
-
-
-
-
-<#if (pcvar('count("ABILITIES","CATEGORY=Special Ability","TYPE=PFSBoon","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)>
-
-
- PFS Boons
-
-<@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> #if>
-
-<#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 />
-#if>
-:
-${pcstring('ABILITYALL.Special Ability.VISIBLE.${PFSBoon}.TYPE=PFSBoon.DESC')}
-— [${pcstring('ABILITYALL.Special Ability.VISIBLE.${PFSBoon}.TYPE=PFSBoon.SOURCE')}]
-
-
-@loop>
-
-#if>
-
-
-
-
-
-
-
-<#if (pcvar('count("ABILITIES","CATEGORY=PFS Chronicle","TYPE=PFSChronicle","VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY")') > 0)>
-
-
- PFS Chronicles
-
-<@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> #if>
-
-<#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 />
-#if>
-:
-${pcstring('ABILITYALL.PFS Chronicle.VISIBLE.${PFSChronicle}.TYPE=PFSChronicle.DESC')}
-— [${pcstring('ABILITYALL.PFS Chronicle.VISIBLE.${PFSChronicle}.TYPE=PFSChronicle.SOURCE')}]
-
-
-@loop>
-
-#if>
-
-
-
-
-
-
-
-
-
-
-
-<#if (pcvar("COUNT[TEMPBONUSNAMES]") > 0) >
-
-
-
-Temporary Bonuses Applied
-
-
-
-<@loop from=0 to=pcvar('COUNT[TEMPBONUSNAMES]-1') ; temp , temp_has_next>
-<#if (temp = 0)>
-<#else>
-•
-#if>
-${pcstring('TEMPBONUS.${temp}')}
-@loop>
-
-
-
-
-#if>
-
-
-<#include "common/common-spells.ftl">
-
-
-
-
-
-
- ${pcstring('NAME')} <#if (pcstring("FOLLOWEROF") != "") >- ${pcstring('FOLLOWEROF')} #if>
-
-
-
-
-
- ${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')}. #if> ${pcstring('RESIDENCE')}, ${pcstring('LOCATION')}
- Biography
- ${pcstring('BIO')}
-
-
-<#if (pcvar("COUNT[NOTES]") > 0) >
-
-
-
-
- Notes
-
-<@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>
-
- ${pcstring('NOTE.${note}.NAME')}
- ${pcstring('NOTE.${note}.VALUE')}
-
-#if>
-@loop>
-
-#if>
-
-
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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-