Files
oboe/rsrc/boes/dialogue.xsd

309 lines
10 KiB
XML

<?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="dir">
<xs:restriction base="xs:token">
<xs:enumeration value="n"/>
<xs:enumeration value="s"/>
<xs:enumeration value="e"/>
<xs:enumeration value="w"/>
</xs:restriction>
</xs:simpleType>
<xs:attributeGroup name="rect">
<xs:attribute name="top" use="required" type="xs:integer"/>
<xs:attribute name="left" use="required" type="xs:integer"/>
<xs:attribute name="bottom" use="required" type="xs:integer"/>
<xs:attribute name="right" use="required" type="xs:integer"/>
</xs:attributeGroup>
<xs:complexType name="sdf">
<xs:attribute name="x" use="required" type="xs:integer"/>
<xs:attribute name="y" use="required" type="xs:integer"/>
</xs:complexType>
<xs:simpleType name="costAdjust">
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="6"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="text" type="xs:string"/>
<xs:element name="personality">
<xs:complexType>
<xs:sequence>
<xs:element name="look" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="job" type="xs:string"/>
<xs:element name="unknown" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="node">
<xs:complexType>
<xs:sequence>
<xs:element name="keyword" minOccurs="1" maxOccurs="2" type="xs:string"/>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="talk">
<xs:complexType>
<xs:sequence>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="if-flag">
<xs:complexType>
<xs:sequence>
<xs:element name="sdf" type="sdf"/>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="record">
<xs:complexType>
<xs:sequence>
<xs:element name="sdf" type="sdf"/>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
<xs:attribute name="value" type="xs:integer" default="1"/>
</xs:complexType>
</xs:element>
<xs:element name="inn">
<xs:complexType>
<xs:sequence>
<xs:element name="cost" type="xs:integer"/>
<xs:element name="quality">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<!-- Map location, not SDF, but same data structure -->
<xs:element name="bed" type="sdf"/>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="if-day">
<xs:complexType>
<xs:sequence>
<xs:element name="day" type="xs:integer"/>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="if-event">
<xs:complexType>
<xs:sequence>
<xs:element name="event" type="xs:integer"/>
<xs:element name="day" type="xs:integer"/>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="if-town">
<xs:complexType>
<xs:sequence>
<xs:element name="town" type="xs:integer"/>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="shop">
<xs:complexType>
<xs:sequence>
<xs:element name="cost" type="costAdjust"/>
<xs:element name="first" type="xs:integer"/>
<xs:element name="count" type="xs:integer"/>
<xs:element name="title" type="xs:string"/>
</xs:sequence>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="items"/>
<xs:enumeration value="mage"/>
<xs:enumeration value="priest"/>
<xs:enumeration value="recipe"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="train">
<xs:complexType/>
</xs:element>
<xs:element name="heal">
<xs:complexType>
<xs:sequence>
<xs:element name="cost" type="costAdjust"/>
<xs:element name="title" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sell">
<xs:complexType>
<xs:sequence>
<!-- Cost currently unused -->
<xs:element name="cost" type="costAdjust"/>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="weapons"/>
<xs:enumeration value="armour"/>
<xs:enumeration value="armor"/>
<xs:enumeration value="any"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="identify">
<xs:complexType>
<xs:sequence>
<xs:element name="cost" type="xs:integer"/>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="enchant">
<xs:complexType>
<xs:sequence>
<!-- Cost currently unused -->
<xs:element name="cost" type="costAdjust"/>
<xs:element name="type">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="+1"/>
<xs:enumeration value="+2"/>
<xs:enumeration value="+3"/>
<xs:enumeration value="+5"/>
<xs:enumeration value="shoot-flame"/>
<xs:enumeration value="flaming"/>
<xs:enumeration value="blessed"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="buy">
<xs:complexType>
<xs:sequence>
<xs:element name="cost" type="xs:integer"/>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="buy-record">
<xs:complexType>
<xs:sequence>
<xs:element name="cost" type="xs:integer"/>
<xs:element name="sdf" type="sdf"/>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="vehicle">
<xs:complexType>
<xs:sequence>
<xs:element name="cost" type="xs:integer"/>
<xs:element name="first" type="xs:integer"/>
<xs:element name="count" type="xs:integer"/>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
<xs:attribute name="type">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="horse"/>
<xs:enumeration value="boat"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="special">
<xs:complexType>
<xs:sequence>
<xs:element name="item" type="xs:integer"/>
<xs:element name="cost" type="xs:integer"/>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="junk">
<xs:complexType>
<xs:sequence>
<xs:element name="cost" type="costAdjust"/>
<xs:element name="list">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="4"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="title" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="reveal-town">
<xs:complexType>
<xs:sequence>
<xs:element name="cost" type="xs:integer"/>
<xs:element name="town" type="xs:integer"/>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="call">
<xs:complexType>
<xs:sequence>
<xs:element name="special" type="xs:integer"/>
<xs:element ref="text" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="local"/>
<xs:enumeration value="global"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:element name="end" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="force"/>
<xs:enumeration value="hostile"/>
<xs:enumeration value="crime"/>
<xs:enumeration value="die"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
<xs:attribute name="for" type="xs:integer" use="required"/>
</xs:complexType><!--
short personality,type;
char link1[4],link2[4];
short extras[4]; -->
</xs:element>
<xs:element name="dialogue">
<xs:complexType>
<xs:sequence>
<xs:element ref="personality" maxOccurs="10"/>
<xs:element ref="node" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="boes" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>