Schemas for monster, item, and terrain definitions

This commit is contained in:
2014-11-29 03:20:07 -05:00
parent ed056368c1
commit 6f73841764
7 changed files with 402 additions and 0 deletions

13
rsrc/boes/items.xml Normal file
View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<items>
<item>
<variety>12</variety>
<level>3</level>
<pic>12</pic>
<name>Test Item</name>
<full-name>Test Item</full-name>
<value>3</value>
<weight>10</weight>
<properties/>
</item>
</items>

58
rsrc/boes/items.xsd Normal file
View File

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="bool">
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="item">
<xs:complexType>
<xs:all>
<xs:element name="variety" type="xs:integer"/>
<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="pic" type="xs:integer"/>
<xs:element name="flag" type="xs:integer" minOccurs="0"/>
<xs:element name="value" type="xs:integer"/>
<xs:element name="weight" type="xs:integer"/>
<xs:element name="class" type="xs:integer" minOccurs="0"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="full-name" type="xs:string"/>
<xs:element name="treasure" type="xs:integer" minOccurs="0"/>
<xs:element name="ability" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="type" type="xs:integer"/>
<xs:element name="strength" type="xs:integer"/>
<xs:element name="use-flag" type="xs:integer" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="properties" minOccurs="0">
<xs:complexType>
<xs:all>
<xs:element name="identified" type="bool" minOccurs="0"/>
<xs:element name="magic" type="bool" minOccurs="0"/>
<xs:element name="cursed" type="bool" minOccurs="0"/>
<xs:element name="concealed" type="bool" minOccurs="0"/>
<xs:element name="enchanted" type="bool" minOccurs="0"/>
<xs:element name="unsellable" type="bool" minOccurs="0"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="items">
<xs:complexType>
<xs:sequence>
<xs:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

41
rsrc/boes/monsters.xml Normal file
View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<monsters>
<monster id="7">
<!-- The monster's name -->
<name>Cave Cow</name>
<!-- Monster picture -->
<pic w='1' h='1'>5</pic>
<!-- Experience level -->
<level>1</level>
<!-- Essential stats -->
<armor>0</armor>
<skill>1</skill>
<hp>5</hp>
<speed>4</speed>
<!-- Treasure class -->
<treasure>0</treasure>
<!-- Attacks -->
<attacks>
<attack type='0'>1d4</attack>
</attacks>
<!-- Breath weapon -->
<breath type='dark'>1</breath>
<!-- Special abilities -->
<abilities>
<ability>
<type>0</type>
<param>4</param>
</ability>
</abilities>
<!-- Actions on sighting -->
<onsight/>
<!-- Ambient sound (eg cow mooing) -->
<voice>17</voice>
<!-- Summon class -->
<summon>0</summon>
<!-- Default attitude -->
<attitude>2</attitude>
<!-- Immunities (bit field) -->
<immunity>0</immunity>
</monster>
</monsters>

126
rsrc/boes/monsters.xsd Normal file
View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="bool">
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name='dice'>
<xs:restriction base="xs:string">
<xs:pattern value="\d*d\d+"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="ability">
<xs:complexType>
<xs:sequence>
<xs:element name="type" type="xs:integer"/>
<xs:element name="param" type="xs:integer" minOccurs="0" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="attack">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="dice">
<xs:attribute name="type" type="xs:integer" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="monster">
<xs:complexType>
<xs:all>
<xs:element name="name" type="xs:string"/>
<xs:element name="level" type="xs:integer"/>
<xs:element name="armor" type="xs:integer"/>
<xs:element name="skill" type="xs:integer"/>
<xs:element name="hp" type="xs:integer"/>
<xs:element name="speed" type="xs:integer"/>
<xs:element name="treasure" minOccurs="0" type="xs:integer"/>
<xs:element name="mage" minOccurs="0" type="xs:integer"/>
<xs:element name="priest" minOccurs="0" type="xs:integer"/>
<xs:element name="breath" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="fire"/>
<xs:enumeration value="cold"/>
<xs:enumeration value="shock"/>
<xs:enumeration value="dark"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="poison" minOccurs="0" type="xs:integer"/>
<xs:element name="abilities" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ability" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="attacks">
<xs:complexType>
<xs:sequence>
<xs:element ref="attack" maxOccurs="3"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="pic">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="w" type="xs:integer" use="required"/>
<xs:attribute name="h" type="xs:integer" use="required"/>
<xs:attribute name="custom" type="bool" default="false"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="default-face" minOccurs="0" type="xs:integer"/>
<xs:element name="onsight" minOccurs="0">
<xs:complexType>
<xs:all minOccurs="1">
<xs:element name="sound" minOccurs="0" type="xs:integer"/>
<xs:element name="special" minOccurs="0" type="xs:integer"/>
<xs:element name="message" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="text" maxOccurs="2" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
<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="loot" minOccurs="0">
<xs:complexType>
<xs:all>
<xs:element name="type" type="xs:integer"/>
<xs:element name="chance" type="xs:integer"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="monsters">
<xs:complexType>
<xs:sequence>
<xs:element ref="monster" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

133
rsrc/boes/terrain.xsd Normal file
View File

@@ -0,0 +1,133 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="bool">
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="point">
<xs:attribute name="x" use="required" type="xs:integer"/>
<xs:attribute name="y" use="required" type="xs:integer"/>
</xs:complexType>
<xs:simpleType name="key">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="0"/>
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
<xs:enumeration value="4"/>
<xs:enumeration value="5"/>
<xs:enumeration value="6"/>
<xs:enumeration value="7"/>
<xs:enumeration value="8"/>
<xs:enumeration value="9"/>
<xs:enumeration value="a"/>
<xs:enumeration value="b"/>
<xs:enumeration value="c"/>
<xs:enumeration value="d"/>
<xs:enumeration value="e"/>
<xs:enumeration value="f"/>
<xs:enumeration value="g"/>
<xs:enumeration value="h"/>
<xs:enumeration value="i"/>
<xs:enumeration value="j"/>
<xs:enumeration value="k"/>
<xs:enumeration value="l"/>
<xs:enumeration value="m"/>
<xs:enumeration value="n"/>
<xs:enumeration value="o"/>
<xs:enumeration value="p"/>
<xs:enumeration value="q"/>
<xs:enumeration value="r"/>
<xs:enumeration value="s"/>
<xs:enumeration value="t"/>
<xs:enumeration value="u"/>
<xs:enumeration value="v"/>
<xs:enumeration value="w"/>
<xs:enumeration value="x"/>
<xs:enumeration value="y"/>
<xs:enumeration value="z"/>
<xs:enumeration value="`"/>
<xs:enumeration value="-"/>
<xs:enumeration value="="/>
<xs:enumeration value="["/>
<xs:enumeration value="]"/>
<xs:enumeration value="\"/>
<xs:enumeration value=";"/>
<xs:enumeration value="'"/>
<xs:enumeration value=","/>
<xs:enumeration value="."/>
<xs:enumeration value="/"/>
<xs:enumeration value="left"/>
<xs:enumeration value="right"/>
<xs:enumeration value="up"/>
<xs:enumeration value="down"/>
<xs:enumeration value="esc"/>
<xs:enumeration value="enter"/>
<xs:enumeration value="return"/>
<xs:enumeration value="tab"/>
<xs:enumeration value="help"/>
<xs:enumeration value="space"/>
<xs:enumeration value="none"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:element name="editor">
<xs:complexType>
<xs:all>
<xs:element name="shortcut" minOccurs="0" type="key"/>
<xs:element name="object" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="num" type="xs:integer"/>
<xs:element name="pos" type="point"/>
<xs:element name="size" type="point"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ground" minOccurs="0" type="xs:integer"/>
<xs:element name="trim-for" minOccurs="0" type="xs:integer"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="terrain">
<xs:complexType>
<xs:all>
<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="special">
<xs:complexType>
<xs:sequence>
<xs:element name="type" type="xs:integer"/>
<xs:element name="flag" minOccurs="0" maxOccurs="3" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="transform" minOccurs="0" type="xs:integer"/>
<xs:element name="fly" minOccurs="0" type="bool"/>
<xs:element name="boat" minOccurs="0" type="bool"/>
<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="arena" type="xs:integer"/>
<xs:element ref="editor" minOccurs="0"/>
</xs:all>
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="terrains">
<xs:complexType>
<xs:sequence>
<xs:element ref="terrain" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="boes" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>

30
rsrc/boes/terrains.xml Normal file
View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<terrains>
<terrain id='2'>
<name>Grass</name>
<!-- The picture, and the automap picture -->
<pic>2</pic>
<map>2</map>
<!-- Blockage information -->
<blockage>0</blockage>
<fly>true</fly>
<boat>false</boat>
<ride>true</ride>
<!-- Trim type, if it's a trim; this isn't -->
<trim>0</trim>
<!-- Combat arena to use -->
<arena>2</arena>
<!-- Special terrain property -->
<special>
<type>0</type>
<!-- Can include flags here, if necessary -->
</special>
<!-- Editor information -->
<editor>
<!-- Shortcut key -->
<shortcut>g</shortcut>
<!-- Base terrain type -->
<ground>2</ground>
</editor>
</terrain>
</terrains>

View File

@@ -1,3 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<dialogue boes="1.0">
<!-- Basic personalities -->
<personality id="0">