More enumeration in the schema instead of arbitrary integers

This commit is contained in:
2014-12-01 20:11:45 -05:00
parent e86362d294
commit c62ac56702
6 changed files with 109 additions and 10 deletions

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<items>
<item>
<variety>12</variety>
<variety>shield</variety>
<level>3</level>
<pic>12</pic>
<name>Test Item</name>

View File

@@ -6,16 +6,67 @@
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="itemVariety">
<xs:restriction base="xs:token">
<xs:enumeration value="none"/>
<xs:enumeration value="weapon-1hand"/>
<xs:enumeration value="weapon-2hand"/>
<xs:enumeration value="gold"/>
<xs:enumeration value="bow"/>
<xs:enumeration value="arrow"/>
<xs:enumeration value="thrown-missile"/>
<xs:enumeration value="potion"/>
<xs:enumeration value="scroll"/>
<xs:enumeration value="wand"/>
<xs:enumeration value="tool"/>
<xs:enumeration value="food"/>
<xs:enumeration value="shield"/>
<xs:enumeration value="armor"/>
<xs:enumeration value="helm"/>
<xs:enumeration value="gloves"/>
<xs:enumeration value="boots"/>
<xs:enumeration value="ring"/>
<xs:enumeration value="necklace"/>
<xs:enumeration value="poison"/>
<xs:enumeration value="non-usable"/>
<xs:enumeration value="pants"/>
<xs:enumeration value="crossbow"/>
<xs:enumeration value="bolts"/>
<xs:enumeration value="missile"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="weaponType">
<xs:restriction base="xs:token">
<xs:enumeration value="edged"/>
<xs:enumeration value="bashing"/>
<xs:enumeration value="pole"/>
<!-- The rest of these values are for potential expansion -->
<!-- Each corresponds to a skill/stat -->
<xs:enumeration value="thrown"/>
<xs:enumeration value="archery"/>
<xs:enumeration value="defense"/>
<xs:enumeration value="mage"/>
<xs:enumeration value="priest"/>
<xs:enumeration value="mage-lore"/>
<xs:enumeration value="alchemy"/>
<xs:enumeration value="item-lore"/>
<xs:enumeration value="traps"/>
<xs:enumeration value="lockpick"/>
<xs:enumeration value="assassin"/>
<xs:enumeration value="poison"/>
<xs:enumeration value="luck"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="item">
<xs:complexType>
<xs:all>
<xs:element name="variety" type="xs:integer"/>
<xs:element name="variety" type="itemVariety"/>
<xs:element name="level" type="xs:integer"/>
<xs:element name="awkward" type="xs:integer" minOccurs="0"/>
<xs:element name="bonus" type="xs:integer" minOccurs="0"/>
<xs:element name="protection" type="xs:integer" minOccurs="0"/>
<xs:element name="charges" type="xs:integer" minOccurs="0"/>
<xs:element name="melee-type" type="xs:integer" minOccurs="0"/>
<xs:element name="melee-type" type="weaponType" minOccurs="0"/>
<xs:element name="pic" type="xs:integer"/>
<xs:element name="flag" type="xs:integer" minOccurs="0"/>
<xs:element name="value" type="xs:integer"/>

View File

@@ -35,7 +35,9 @@
<summon>0</summon>
<!-- Default attitude -->
<attitude>2</attitude>
<!-- Immunities (bit field) -->
<immunity>0</immunity>
<!-- Immunities (empty element for none) -->
<immunity>
<fire resist='true'/>
</immunity>
</monster>
</monsters>

View File

@@ -11,6 +11,10 @@
<xs:pattern value="\d*d\d+"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="immunity">
<xs:attribute name="immune" type="bool"/>
<xs:attribute name="resist" type="bool"/>
</xs:complexType>
<xs:element name="ability">
<xs:complexType>
<xs:sequence>
@@ -103,7 +107,16 @@
<xs:element name="voice" minOccurs="0" type="xs:integer"/>
<xs:element name="summon" minOccurs="0" type="xs:integer"/>
<xs:element name="attitude" type="xs:integer"/>
<xs:element name="immunity" type="xs:integer"/>
<xs:element name="immunity">
<xs:complexType>
<xs:all>
<xs:element name="fire" type="immunity" minOccurs="0"/>
<xs:element name="cold" type="immunity" minOccurs="0"/>
<xs:element name="poison" type="immunity" minOccurs="0"/>
<xs:element name="magic" type="immunity" minOccurs="0"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="loot" minOccurs="0">
<xs:complexType>
<xs:all>

View File

@@ -76,6 +76,39 @@
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:simpleType name="blockage">
<xs:restriction base="xs:token">
<xs:enumeration value="none"/>
<xs:enumeration value="move"/>
<xs:enumeration value="monsters"/>
<xs:enumeration value="sight"/>
<xs:enumeration value="move-and-shoot"/>
<xs:enumeration value="move-and-sight"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="terTrim">
<xs:restriction base="xs:token">
<xs:enumeration value="none"/>
<xs:enumeration value="wall"/>
<xs:enumeration value="s"/>
<xs:enumeration value="n"/>
<xs:enumeration value="e"/>
<xs:enumeration value="w"/>
<xs:enumeration value="sw"/>
<xs:enumeration value="ne"/>
<xs:enumeration value="se"/>
<xs:enumeration value="nw"/>
<xs:enumeration value="sw-inner"/>
<xs:enumeration value="ne-inner"/>
<xs:enumeration value="se-inner"/>
<xs:enumeration value="nw-inner"/>
<xs:enumeration value="frills"/>
<xs:enumeration value="road"/>
<xs:enumeration value="walkway"/>
<xs:enumeration value="waterfall"/>
<xs:enumeration value="city"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="editor">
<xs:complexType>
<xs:all>
@@ -100,7 +133,7 @@
<xs:element name="name" type="xs:string"/>
<xs:element name="pic" type="xs:integer"/>
<xs:element name="map" type="xs:integer"/>
<xs:element name="blockage" type="xs:integer"/>
<xs:element name="blockage" type="blockage"/>
<xs:element name="special">
<xs:complexType>
<xs:sequence>
@@ -115,7 +148,7 @@
<xs:element name="ride" minOccurs="0" type="bool"/>
<xs:element name="light" minOccurs="0" type="xs:integer"/>
<xs:element name="step-sound" minOccurs="0" type="xs:integer"/>
<xs:element name="trim" type="xs:integer"/>
<xs:element name="trim" type="terTrim"/>
<xs:element name="arena" type="xs:integer"/>
<xs:element ref="editor" minOccurs="0"/>
</xs:all>

View File

@@ -6,12 +6,12 @@
<pic>2</pic>
<map>2</map>
<!-- Blockage information -->
<blockage>0</blockage>
<blockage>none</blockage>
<fly>true</fly>
<boat>false</boat>
<ride>true</ride>
<!-- Trim type, if it's a trim; this isn't -->
<trim>0</trim>
<trim>none</trim>
<!-- Combat arena to use -->
<arena>2</arena>
<!-- Special terrain property -->