Initial commit
parent
195cef0327
commit
bceac39df5
|
|
@ -0,0 +1,17 @@
|
|||
language: generic
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- xmlstarlet
|
||||
- xsltproc
|
||||
before_install:
|
||||
- rvm install 2.3.8
|
||||
- gem install dropbox-deployment
|
||||
script:
|
||||
- xmlstarlet val -e FightClub5eXML/Sources/*.xml
|
||||
- xmlstarlet val -e Collections/*.xml
|
||||
- xmlstarlet val -s Utilities/collection.xsd Collections/*.xml
|
||||
- xmlstarlet val -s Utilities/compendium.xsd FightClub5eXML/Sources/*.xml
|
||||
- for i in Collections/*.xml; do xsltproc -o FightClub5eXML/$i Utilities/merge.xslt $i; done
|
||||
after_success:
|
||||
- if [ $TRAVIS_BRANCH = master ] && [ $TRAVIS_PULL_REQUEST = false ]; then dropbox-deployment; else echo "Skip deploy for PR or Branch Validation"; fi
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<collection>
|
||||
<doc href="../FightClub5eXML/Sources/PlayersHandbook.xml" />
|
||||
<doc href="../FightClub5eXML/Sources/DungeonMastersGuide.xml" />
|
||||
<doc href="../FightClub5eXML/Sources/MonsterManual.xml" />
|
||||
</collection>
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
# CHANGE LOG
|
||||
|
||||
|
||||
|
||||
## 2019-08-06
|
||||
|
||||
Massive update to correct over 8000 spelling and grammar mistakes!!
|
||||
|
||||
|
||||
## 2019-08-05
|
||||
|
||||
Uploaded to Dropbox for the first time.
|
||||
|
||||
XML includes
|
||||
|
||||
* All previously collated by FightClub5eXML
|
||||
* Waterdeep dragon heist monsters, items.
|
||||
* Waterdeep Dungeon of the Mad Mage monsters.
|
||||
* Ghosts of Saltmarsh items and some monsters.
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
# README
|
||||
|
||||
Being a big fan of Lion Den’s Fight Club 5e and Game Master 5e apps for iOS and Android I was happy to see a kind soul (@fightclub5exml on twitter) had picked up the mantle of updating the compendium with content.
|
||||
|
||||
Unfortunately he seems to have deleted his twitter account so I am picking up where he left off by expanding on his work by adding Waterdeep Dragon Heist, Waterdeep Dungeon of the Mad Mage and Ghosts of Saltmarsh content to the XML.
|
||||
|
||||
Will take a few weeks but will be making my way through each book and adding the items and monsters to bring it up to date.
|
||||
|
||||
Any questions hit me up on twitter [@dragonahcas](http://twitter.com/dragonahcas).
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2019 Chris Jennewein
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
68
README.md
68
README.md
|
|
@ -1,2 +1,66 @@
|
|||
# FightClub5eXML
|
||||
Creating XML files of all D&D sources compatible with Fight Club 5e and Game Master 5e apps for iOS and Android.
|
||||
# Fight Club 5e XML
|
||||
|
||||
Creating XML files of all official D&D sources compatible with Fight Club 5e and Game Master 5e apps for iOS and Android.
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
Final XML files are released on a shared Dropbox. If you're here to import the files into your app, instructions are in the Dropbox.
|
||||
|
||||
This repository is not an application in itself. But you can use it to build your own custom Compendium (see below).
|
||||
|
||||
|
||||
## Contributing
|
||||
|
||||
If you'd like to contribute, feel free to fork the repository and submit pull requests with your changes.
|
||||
|
||||
|
||||
## Development
|
||||
|
||||
* The XML files in the FightClub5eXML directory are Compendiums organized by source book.
|
||||
* The files in Collections define which sources are merged into their own Compendium XML.
|
||||
* When the master branch is updated, Travis CI validates the XML, builds the Compendiums, and deploys to Dropbox.
|
||||
|
||||
|
||||
### Manual Validation
|
||||
|
||||
While you add to XML files, you can manually validate the XML to catch any errors.
|
||||
|
||||
You can find an online XML Linter or use xmllint in the command line. The schema files are in the Utilities folder.
|
||||
|
||||
Here is an example, running xmllint at the top level of the repo, using the compendium schema to validate an xml file in Sources:
|
||||
|
||||
```bash
|
||||
xmllint --noout --schema Utilities/compendium.xsd FightClub5eXML/Sources/CorePlusUnearthedArcana.xml
|
||||
```
|
||||
|
||||
|
||||
## Build your own Compendium
|
||||
|
||||
### Create a collection file
|
||||
|
||||
A collection file is an XML file that lists which sources you would like to merge into your custom Compendium. It must follow this format:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<collection>
|
||||
<doc href="../FightClub5eXML/Sources/PlayersHandbook.xml" />
|
||||
<doc href="../FightClub5eXML/Sources/DungeonMastersGuide.xml" />
|
||||
<doc href="../FightClub5eXML/Sources/MonsterManual.xml" />
|
||||
</collection>
|
||||
```
|
||||
You can have one or more `<doc>` tags. Each doc must reference an xml file with a `<compendium>` root element.
|
||||
|
||||
The name of the collection file will be the name of the final Compendium.
|
||||
|
||||
### Execute the merge
|
||||
|
||||
With your collection in place, you're ready to build your Compendium by merging the sources together.
|
||||
|
||||
Execute this line in your shell at the top level of the repo:
|
||||
|
||||
```bash
|
||||
for i in Collections/*.xml; do xsltproc -o FightClub5eXML/$i Utilities/merge.xslt $i; done
|
||||
```
|
||||
|
||||
This is the same line that is executed in our .travis.yml and will place all combined Compendiums in FightClub5eXML/Collections/
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="collection" type="collectionType"/>
|
||||
|
||||
<xs:complexType name="docType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute type="xs:string" name="href" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="collectionType">
|
||||
<xs:sequence>
|
||||
<xs:element type="docType" name="doc" maxOccurs="unbounded" minOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
|
|
@ -0,0 +1,449 @@
|
|||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="compendium" type="compendiumType"/>
|
||||
|
||||
<!-- Restrictions -->
|
||||
|
||||
<xs:simpleType name="empty">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value=""/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="roll">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="SPELL|([\(]*[0-9]*((d[0-9])+)*([+-][0-9]+)*([+-](S[Tt][Rr]|D[Ee][Xx]|C[Oo][Nn]|I[Nn][Tt]|W[Ii][Ss]|C[Hh][Aa]|PROF|%0|LVL|W|W[Oo]|SPELL)?)*[\)]*)*[+-]?"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="rollFormula">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="SPELL|([\(]*[0-9]*((d[0-9])+)*([+-x/][0-9]+)*([+-x/](S[Tt][Rr]|D[Ee][Xx]|C[Oo][Nn]|I[Nn][Tt]|W[Ii][Ss]|C[Hh][Aa]|PROF|LVL|W|W[Oo]|SPELL)?)*[\)]*)*[+-x/]?"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="integer">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[0-9]*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="double">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[0-9]*[.]?[0-9]*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="boolean">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="(YES|NO|[01])*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="acType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[0-9]+( [(].*[)])*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="hpType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[0-9]+( [(][0-9]*(d[0-9]+)*([+-][0-9]+)*[)])*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="crType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="([0-9]+|(1/[248]))*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="integerList">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[0-9 ]*(, ?[0-9 ]*)*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="propertyList">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="(A|F|H|L|LD|R|S|T|2H|V|M)*(, ?(A|F|H|L|LD|R|S|T|2H|V|M)*)*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="abilityBonusList">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="((S[Tt][Rr]|D[Ee][Xx]|C[Oo][Nn]|I[Nn][Tt]|W[Ii][Ss]|C[Hh][Aa]) [+-]?[0-9]+)*(, ?((S[Tt][Rr]|D[Ee][Xx]|C[Oo][Nn]|I[Nn][Tt]|W[Ii][Ss]|C[Hh][Aa]) [+-]?[0-9]+))*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="abilityList">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="([Ss]trength|[Dd]exterity|[Cc]onstitution|[Ii]ntelligence|[Ww]isdom|[Cc]harisma)*(, ?([Ss]trength|[Dd]exterity|[Cc]onstitution|[Ii]ntelligence|[Ww]isdom|[Cc]harisma)*)*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="skillList">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="([Aa]crobatics|[Aa]thletics|[Aa]nimal [Hh]andling|[Aa]rcana|[Dd]eception|[Hh]istory|[Ii]nsight|[Ii]ntimidation|[Ii]nvestigation|[Mm]edicine|[Nn]ature|[Pp]erception|[Pp]erformance|[Pp]ersuasion|[Rr]eligion|[Ss]leight of [Hh]and|[Ss]tealth|[Ss]urvival)*(, ?([Aa]crobatics|[Aa]thletics|[Aa]nimal [Hh]andling|[Aa]rcana|[Dd]eception|[Hh]istory|[Ii]nsight|[Ii]ntimidation|[Ii]nvestigation|[Mm]edicine|[Nn]ature|[Pp]erception|[Pp]erformance|[Pp]ersuasion|[Rr]eligion|[Ss]leight of [Hh]and|[Ss]tealth|[Ss]urvival)*)*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="skillBonusList">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="(([Aa]crobatics|[Aa]thletics|[Aa]nimal [Hh]andling|[Aa]rcana|[Dd]eception|[Hh]istory|[Ii]nsight|[Ii]ntimidation|[Ii]nvestigation|[Mm]edicine|[Nn]ature|[Pp]erception|[Pp]erformance|[Pp]ersuasion|[Rr]eligion|[Ss]leight of [Hh]and|[Ss]tealth|[Ss]urvival) [+-]?[0-9]+)*(, ?(([Aa]crobatics|[Aa]thletics|[Aa]nimal [Hh]andling|[Aa]rcana|[Dd]eception|[Hh]istory|[Ii]nsight|[Ii]ntimidation|[Ii]nvestigation|[Mm]edicine|[Nn]ature|[Pp]erception|[Pp]erformance|[Pp]ersuasion|[Rr]eligion|[Ss]leight of [Hh]and|[Ss]tealth|[Ss]urvival) [+-]?[0-9]+)*)*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="abilityAndSkillList">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="([Ss]trength|[Dd]exterity|[Cc]onstitution|[Ii]ntelligence|[Ww]isdom|[Cc]harisma|[Aa]crobatics|[Aa]thletics|[Aa]nimal [Hh]andling|[Aa]rcana|[Dd]eception|[Hh]istory|[Ii]nsight|[Ii]ntimidation|[Ii]nvestigation|[Mm]edicine|[Nn]ature|[Pp]erception|[Pp]erformance|[Pp]ersuasion|[Rr]eligion|[Ss]leight of [Hh]and|[Ss]tealth|[Ss]urvival)*(, ?([Ss]trength|[Dd]exterity|[Cc]onstitution|[Ii]ntelligence|[Ww]isdom|[Cc]harisma|[Aa]crobatics|[Aa]thletics|[Aa]nimal [Hh]andling|[Aa]rcana|[Dd]eception|[Hh]istory|[Ii]nsight|[Ii]ntimidation|[Ii]nvestigation|[Mm]edicine|[Nn]ature|[Pp]erception|[Pp]erformance|[Pp]ersuasion|[Rr]eligion|[Ss]leight of [Hh]and|[Ss]tealth|[Ss]urvival)*)*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="itemEnum">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="LA"/>
|
||||
<xs:enumeration value="MA"/>
|
||||
<xs:enumeration value="HA"/>
|
||||
<xs:enumeration value="S"/>
|
||||
<xs:enumeration value="M"/>
|
||||
<xs:enumeration value="R"/>
|
||||
<xs:enumeration value="A"/>
|
||||
<xs:enumeration value="RD"/>
|
||||
<xs:enumeration value="ST"/>
|
||||
<xs:enumeration value="WD"/>
|
||||
<xs:enumeration value="RG"/>
|
||||
<xs:enumeration value="P"/>
|
||||
<xs:enumeration value="SC"/>
|
||||
<xs:enumeration value="W"/>
|
||||
<xs:enumeration value="G"/>
|
||||
<xs:enumeration value="$"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="damageEnum">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="B"/>
|
||||
<xs:enumeration value="P"/>
|
||||
<xs:enumeration value="S"/>
|
||||
<xs:enumeration value="A"/>
|
||||
<xs:enumeration value="C"/>
|
||||
<xs:enumeration value="F"/>
|
||||
<xs:enumeration value="FC"/>
|
||||
<xs:enumeration value="L"/>
|
||||
<xs:enumeration value="N"/>
|
||||
<xs:enumeration value="PS"/>
|
||||
<xs:enumeration value="R"/>
|
||||
<xs:enumeration value="T"/>
|
||||
<xs:enumeration value=""/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="sizeEnum">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="T"/>
|
||||
<xs:enumeration value="S"/>
|
||||
<xs:enumeration value="M"/>
|
||||
<xs:enumeration value="L"/>
|
||||
<xs:enumeration value="H"/>
|
||||
<xs:enumeration value="G"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="abilityEnum">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Strength"/>
|
||||
<xs:enumeration value="Dexterity"/>
|
||||
<xs:enumeration value="Constitution"/>
|
||||
<xs:enumeration value="Intelligence"/>
|
||||
<xs:enumeration value="Wisdom"/>
|
||||
<xs:enumeration value="Charisma"/>
|
||||
<xs:enumeration value=""/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="skillEnum">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Athletics"/>
|
||||
<xs:enumeration value="Acrobatics"/>
|
||||
<xs:enumeration value="Animal Handling"/>
|
||||
<xs:enumeration value="Arcana"/>
|
||||
<xs:enumeration value="Deception"/>
|
||||
<xs:enumeration value="History"/>
|
||||
<xs:enumeration value="Insight"/>
|
||||
<xs:enumeration value="Intimidation"/>
|
||||
<xs:enumeration value="Investigation"/>
|
||||
<xs:enumeration value="Medicine"/>
|
||||
<xs:enumeration value="Nature"/>
|
||||
<xs:enumeration value="Perception"/>
|
||||
<xs:enumeration value="Performance"/>
|
||||
<xs:enumeration value="Persuasion"/>
|
||||
<xs:enumeration value="Religion"/>
|
||||
<xs:enumeration value="Sleight of Hand"/>
|
||||
<xs:enumeration value="Stealth"/>
|
||||
<xs:enumeration value="Survival"/>
|
||||
<xs:enumeration value=""/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="categoryEnum">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="bonus"/>
|
||||
<xs:enumeration value="ability score"/>
|
||||
<xs:enumeration value="ability modifier"/>
|
||||
<xs:enumeration value="saving throw"/>
|
||||
<xs:enumeration value="skills"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="schoolEnum">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="A"/>
|
||||
<xs:enumeration value="C"/>
|
||||
<xs:enumeration value="D"/>
|
||||
<xs:enumeration value="EN"/>
|
||||
<xs:enumeration value="EV"/>
|
||||
<xs:enumeration value="I"/>
|
||||
<xs:enumeration value="N"/>
|
||||
<xs:enumeration value="T"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="modifierValue">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="([Pp]assive )?([Ss]trength|[Dd]exterity|[Cc]onstitution|[Ii]ntelligence|[Ww]isdom|[Cc]harisma|[Hh][Pp]) ?[+-]? ?([0-9]*|%0|prof)"/>
|
||||
<xs:pattern value="([Mm]elee damage|[Mm]elee attacks|[Ww]eapon damage|[Ww]eapon attacks|[Rr]anged damage|[Rr]anged attacks|[Ss]pell attack|[Ss]pell [Dd][Cc]|[Ss]aving throws|[Aa][Cc]|[Ss]peed|[Pp]roficiency bonus|[Ii]nitiative) ?[+-]? ?([0-9]*|%0|prof)"/>
|
||||
<xs:pattern value="([Aa]thletics|[Aa]crobatics|[Aa]nimal [Hh]andling|[Aa]rcana|[Dd]eception|[Hh]istory|[Ii]nsight|[Ii]ntimidation|[Ii]nvestigation|[Mm]edicine|[Nn]ature|[Pp]erception|[Pp]erformance|[Pp]ersuasion|[Rr]eligion|[Ss]leight of [Hh]and|[Ss]tealth|[Ss]urvival) ?[+-]? ?([0-9]*|%0|prof)"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="attackType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="(.*[|]([ ]|[0-9]*)[|]([0-9]*(d[0-9]+)*([+-][0-9]+)*)*)*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- End Restrictions -->
|
||||
|
||||
<!-- Shared Types -->
|
||||
|
||||
<xs:complexType name="modifierType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="modifierValue">
|
||||
<xs:attribute type="categoryEnum" name="category"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="traitType">
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:string" name="name"/>
|
||||
<xs:element type="xs:string" name="text" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element type="attackType" name="attack" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element type="xs:string" name="special" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="slotsType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="integerList">
|
||||
<xs:attribute type="boolean" name="optional" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- End Shared Types -->
|
||||
|
||||
<!-- Monster -->
|
||||
|
||||
<xs:complexType name="monsterType">
|
||||
<xs:choice maxOccurs="unbounded" minOccurs="0">
|
||||
<xs:element type="xs:string" name="name"/>
|
||||
<xs:element type="sizeEnum" name="size"/>
|
||||
<xs:element type="xs:string" name="type"/>
|
||||
<xs:element type="xs:string" name="alignment"/>
|
||||
<xs:element type="acType" name="ac"/>
|
||||
<xs:element type="hpType" name="hp"/>
|
||||
<xs:element type="xs:string" name="speed"/>
|
||||
<xs:element type="xs:integer" name="str"/>
|
||||
<xs:element type="xs:integer" name="dex"/>
|
||||
<xs:element type="xs:integer" name="con"/>
|
||||
<xs:element type="xs:integer" name="int"/>
|
||||
<xs:element type="xs:integer" name="wis"/>
|
||||
<xs:element type="xs:integer" name="cha"/>
|
||||
<xs:element type="abilityBonusList" name="save"/>
|
||||
<xs:element type="skillBonusList" name="skill"/>
|
||||
<xs:element type="xs:string" name="resist"/>
|
||||
<xs:element type="xs:string" name="vulnerable"/>
|
||||
<xs:element type="xs:string" name="immune"/>
|
||||
<xs:element type="xs:string" name="conditionImmune"/>
|
||||
<xs:element type="xs:string" name="senses"/>
|
||||
<xs:element type="xs:integer" name="passive"/>
|
||||
<xs:element type="xs:string" name="languages"/>
|
||||
<xs:element type="crType" name="cr"/>
|
||||
<xs:element type="traitType" name="trait"/>
|
||||
<xs:element type="traitType" name="action"/>
|
||||
<xs:element type="traitType" name="legendary"/>
|
||||
<xs:element type="traitType" name="reaction"/>
|
||||
<xs:element type="xs:string" name="spells"/>
|
||||
<xs:element type="slotsType" name="slots"/>
|
||||
<xs:element type="xs:string" name="environment"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- End Monster -->
|
||||
|
||||
<!-- Spell -->
|
||||
|
||||
<xs:complexType name="spellType">
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:string" name="name"/>
|
||||
<xs:element type="xs:integer" name="level"/>
|
||||
<xs:element type="schoolEnum" name="school" minOccurs="0"/>
|
||||
<xs:element type="boolean" name="ritual"/>
|
||||
<xs:element type="xs:string" name="time"/>
|
||||
<xs:element type="xs:string" name="range"/>
|
||||
<xs:element type="xs:string" name="components"/>
|
||||
<xs:element type="xs:string" name="duration"/>
|
||||
<xs:element type="xs:string" name="classes"/>
|
||||
<xs:element type="xs:string" name="text" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element type="roll" name="roll" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- End Spell -->
|
||||
|
||||
<!-- Background -->
|
||||
|
||||
<xs:complexType name="backgroundType">
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:string" name="name"/>
|
||||
<xs:element type="skillList" name="proficiency"/>
|
||||
<xs:element type="traitType" name="trait" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- End Background -->
|
||||
|
||||
<!-- Feat -->
|
||||
|
||||
<xs:complexType name="featType">
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:string" name="name"/>
|
||||
<xs:element type="xs:string" name="prerequisite"/>
|
||||
<xs:element type="xs:string" name="text" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element type="abilityAndSkillList" name="proficiency" minOccurs="0"/>
|
||||
<xs:element type="modifierType" name="modifier" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- End Feat -->
|
||||
|
||||
<!-- Class -->
|
||||
|
||||
<xs:complexType name="featureType">
|
||||
<xs:choice maxOccurs="unbounded" minOccurs="0">
|
||||
<xs:element type="xs:string" name="name"/>
|
||||
<xs:element type="xs:string" name="text"/>
|
||||
<xs:element type="xs:string" name="special"/>
|
||||
<xs:element type="modifierType" name="modifier"/>
|
||||
<xs:element type="xs:string" name="proficiency"/>
|
||||
</xs:choice>
|
||||
<xs:attribute type="boolean" name="optional" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="autolevelType" mixed="true">
|
||||
<xs:sequence>
|
||||
<xs:element type="featureType" name="feature" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element type="slotsType" name="slots" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:integer" name="level" use="optional"/>
|
||||
<xs:attribute type="boolean" name="scoreImprovement" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="classType">
|
||||
<xs:choice maxOccurs="unbounded" minOccurs="0">
|
||||
<xs:element type="xs:string" name="name"/>
|
||||
<xs:element type="xs:integer" name="hd"/>
|
||||
<xs:element type="abilityAndSkillList" name="proficiency"/>
|
||||
<xs:element type="abilityEnum" name="spellAbility"/>
|
||||
<xs:element type="integer" name="numSkills"/>
|
||||
<xs:element type="autolevelType" name="autolevel"/>
|
||||
<xs:element type="xs:string" name="armor"/>
|
||||
<xs:element type="xs:string" name="weapons"/>
|
||||
|
||||
<xs:element name="tools">
|
||||
<xs:complexType mixed="true">
|
||||
<xs:sequence>
|
||||
<xs:element type="featureType" name="feature" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element type="slotsType" name="slots" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:integer" name="level" use="optional"/>
|
||||
<xs:attribute type="xs:string" name="scoreImprovement" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element type="rollFormula" name="wealth"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- End Class -->
|
||||
|
||||
<!-- Item -->
|
||||
|
||||
<xs:complexType name="itemType">
|
||||
<xs:choice maxOccurs="unbounded" minOccurs="0">
|
||||
<xs:element type="xs:string" name="name"/>
|
||||
<xs:element type="itemEnum" name="type"/>
|
||||
<xs:element type="boolean" name="magic"/>
|
||||
<xs:element type="xs:string" name="detail"/>
|
||||
<xs:element type="double" name="weight"/>
|
||||
<xs:element type="xs:string" name="text"/>
|
||||
<xs:element type="roll" name="roll"/>
|
||||
<xs:element type="double" name="value"/>
|
||||
<xs:element type="modifierType" name="modifier"/>
|
||||
<xs:element type="xs:integer" name="ac"/>
|
||||
<xs:element type="integer" name="strength"/>
|
||||
<xs:element type="boolean" name="stealth"/>
|
||||
<xs:element type="roll" name="dmg1"/>
|
||||
<xs:element type="roll" name="dmg2"/>
|
||||
<xs:element type="damageEnum" name="dmgType"/>
|
||||
<xs:element type="propertyList" name="property"/>
|
||||
<xs:element type="xs:string" name="range"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- End Item -->
|
||||
|
||||
<!-- Race -->
|
||||
|
||||
<xs:complexType name="raceType">
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:string" name="name"/>
|
||||
<xs:element type="sizeEnum" name="size"/>
|
||||
<xs:element type="xs:integer" name="speed"/>
|
||||
<xs:element type="abilityBonusList" name="ability"/>
|
||||
<xs:element type="abilityEnum" name="spellAbility"/>
|
||||
<xs:element type="skillList" name="proficiency"/>
|
||||
<xs:element type="traitType" name="trait" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element type="modifierType" name="modifier" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- End Race -->
|
||||
|
||||
<!-- Compendium -->
|
||||
|
||||
<xs:complexType name="compendiumType">
|
||||
<xs:sequence>
|
||||
<xs:element type="itemType" name="item" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element type="raceType" name="race" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element type="classType" name="class" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element type="featType" name="feat" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element type="backgroundType" name="background" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element type="spellType" name="spell" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element type="monsterType" name="monster" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
<xs:attribute type="xs:string" name="auto_indent"/>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
<xsl:output method="xml" indent="yes" />
|
||||
|
||||
<xsl:template match="collection">
|
||||
<compendium version="5" auto_indent="NO">
|
||||
<xsl:copy-of select="document(doc/@href)/compendium/*" />
|
||||
</compendium>
|
||||
</xsl:template>
|
||||
</xsl:transform>
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
deploy:
|
||||
dropbox_path: /FightClub5eXML # The path to the folder on Dropbox where the files will go
|
||||
artifacts_path: ./FightClub5eXML # can be a single file, or a path
|
||||
debug: true # if you want to see more logs
|
||||
Loading…
Reference in New Issue