FightClub5eXML/Utilities/compendium.xsd

472 lines
22 KiB
XML

<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="rechargeType">
<xs:restriction base="xs:string">
<xs:pattern value="(SHORT|LONG|[0-9]+/DAY|D[1-6])"/>
</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](ength)?|D[Ee][Xx](terity)?|C[Oo][Nn](stitution)?|I[Nn][Tt](elligence)?|W[Ii][Ss](dom)?|C[Hh][Aa](risma)?) [+-]?[0-9]+)*(, ?((S[Tt][Rr](ength)?|D[Ee][Xx](terity)?|C[Oo][Nn](stitution)?|I[Nn][Tt](elligence)?|W[Ii][Ss](dom)?|C[Hh][Aa](risma)?) [+-]?[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 [Oo]f [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 [Oo]f [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 [Oo]f [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 [Oo]f [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( Saving Throws)?|[Dd]exterity( Saving Throws)?|[Cc]onstitution( Saving Throws)?|[Ii]ntelligence( Saving Throws)?|[Ww]isdom( Saving Throws)?|[Cc]harisma( Saving Throws)?|[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 [Oo]f [Hh]and|[Ss]tealth|[Ss]urvival)*(, ?([Ss]trength( Saving Throws)?|[Dd]exterity( Saving Throws)?|[Cc]onstitution( Saving Throws)?|[Ii]ntelligence( Saving Throws)?|[Ww]isdom( Saving Throws)?|[Cc]harisma( Saving Throws)?|[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 [Oo]f [Hh]and|[Ss]tealth|[Ss]urvival)*)*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="itemEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="LA"/><!-- light armor -->
<xs:enumeration value="MA"/><!-- medium armor -->
<xs:enumeration value="HA"/><!-- heavy armor -->
<xs:enumeration value="S"/><!-- shield -->
<xs:enumeration value="M"/><!-- melee weapon -->
<xs:enumeration value="R"/><!-- ranged weapon -->
<xs:enumeration value="A"/><!-- ammunication -->
<xs:enumeration value="RD"/><!-- rod -->
<xs:enumeration value="ST"/><!-- staff -->
<xs:enumeration value="WD"/><!-- wand -->
<xs:enumeration value="RG"/><!-- ring -->
<xs:enumeration value="P"/><!-- potion -->
<xs:enumeration value="SC"/><!-- scroll -->
<xs:enumeration value="W"/><!-- wonderous item -->
<xs:enumeration value="G"/><!-- adventuring gear -->
<xs:enumeration value="$"/><!-- money -->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="damageEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="B"/><!-- bludgeoning -->
<xs:enumeration value="P"/><!-- piercing -->
<xs:enumeration value="S"/><!-- slashing -->
<xs:enumeration value="A"/><!-- acid -->
<xs:enumeration value="C"/><!-- cold -->
<xs:enumeration value="F"/><!-- fire -->
<xs:enumeration value="FC"/><!-- force -->
<xs:enumeration value="L"/><!-- lightning -->
<xs:enumeration value="N"/><!-- necrotic -->
<xs:enumeration value="PS"/><!-- poison -->
<xs:enumeration value="R"/><!-- radiant -->
<xs:enumeration value="T"/><!-- thunder -->
<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="Bonus"/>
<xs:enumeration value="ability score"/>
<xs:enumeration value="Ability Score"/>
<xs:enumeration value="ability modifier"/>
<xs:enumeration value="Ability Modifier"/>
<xs:enumeration value="saving throw"/>
<xs:enumeration value="Saving Throw"/>
<xs:enumeration value="skills"/>
<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="resetEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="L"/>
<xs:enumeration value="S"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="modifierValue">
<xs:restriction base="xs:string">
<xs:pattern value="([Pp]assive )?([Ss]trength( Score)?|[Dd]exterity( Score)?|[Cc]onstitution( Score)?|[Ii]ntelligence( Score)?|[Ww]isdom( Score)?|[Cc]harisma( Score)?|[Hh][Pp]) ?[+-]? ?([0-9]*|%0|prof)"/>
<xs:pattern value="([Mm]elee [Dd]amage|[Mm]elee [Aa]ttacks|[Ww]eapon [Dd]amage|[Ww]eapon [Aa]ttacks|[Rr]anged [Dd]amage|[Rr]anged [Aa]ttacks|[Ss]pell [Aa]ttack|[Ss]pell [Dd][Cc]|[Ss]aving [Tt]hrows|[Aa][Cc]|[Aa]rmor [Cc]lass|[Ss]peed|[Pp]roficiency [Bb]onus|[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 [Oo]f [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:choice maxOccurs="unbounded">
<xs:element type="xs:string" name="name" minOccurs="0"/>
<xs:element type="xs:string" name="text" maxOccurs="unbounded" minOccurs="0"/>
<xs:element type="attackType" name="attack" maxOccurs="unbounded" minOccurs="0"/>
<xs:element type="skillList" name="proficiency" minOccurs="0" />
<xs:element type="xs:string" name="special" minOccurs="0"/>
<xs:element type="rechargeType" name="recharge" minOccurs="0"/>
</xs:choice>
</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="description"/>
<xs:element type="xs:string" name="environment"/>
</xs:choice>
</xs:complexType>
<!-- End Monster -->
<!-- Spell -->
<xs:complexType name="spellType">
<xs:choice maxOccurs="unbounded">
<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="source" minOccurs="0"/>
<xs:element type="xs:string" name="text" maxOccurs="unbounded" minOccurs="0"/>
<xs:element type="roll" name="roll" maxOccurs="unbounded" minOccurs="0"/>
</xs:choice>
</xs:complexType>
<!-- End Spell -->
<!-- Background -->
<xs:complexType name="backgroundType">
<xs:choice maxOccurs="unbounded">
<xs:element type="xs:string" name="name"/>
<xs:element type="skillList" name="proficiency"/>
<xs:element type="traitType" name="trait" maxOccurs="unbounded" minOccurs="0"/>
</xs:choice>
</xs:complexType>
<!-- End Background -->
<!-- Feat -->
<xs:complexType name="featType">
<xs:choice maxOccurs="unbounded">
<xs:element type="xs:string" name="name"/>
<xs:element type="xs:string" name="prerequisite"/>
<xs:element type="xs:string" name="special" minOccurs="0"/>
<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:choice>
</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="counterType">
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element type="xs:string" name="name"/>
<xs:element type="xs:integer" name="value"/>
<xs:element type="resetEnum" name="reset"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="autolevelType" mixed="true">
<xs:choice maxOccurs="unbounded">
<xs:element type="featureType" name="feature" maxOccurs="unbounded" minOccurs="0"/>
<xs:element type="slotsType" name="slots" minOccurs="0"/>
<xs:element type="counterType" name="counter" minOccurs="0"/>
</xs:choice>
<xs:attribute type="xs:integer" name="level" use="required"/>
<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 type="xs:string" name="tools"/>
<xs:element type="resetEnum" name="slotsReset"/>
<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:choice maxOccurs="unbounded">
<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:choice>
</xs:complexType>
<!-- End Race -->
<!-- Compendium -->
<xs:complexType name="compendiumType">
<xs:choice maxOccurs="unbounded">
<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:choice>
<xs:attribute type="xs:byte" name="version"/>
<xs:attribute type="xs:string" name="auto_indent"/>
</xs:complexType>
</xs:schema>