Schema for town dialogue
This commit is contained in:
309
rsrc/boes/dialogue.xsd
Normal file
309
rsrc/boes/dialogue.xsd
Normal file
@@ -0,0 +1,309 @@
|
||||
<?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>
|
47
rsrc/boes/town/t0talk.xml
Normal file
47
rsrc/boes/town/t0talk.xml
Normal file
@@ -0,0 +1,47 @@
|
||||
<dialogue boes="1.0">
|
||||
<!-- Basic personalities -->
|
||||
<personality id="0">
|
||||
<look>You see a small, strange creature.</look>
|
||||
<name>"I'm Bill!"</name>
|
||||
<job>"Job? What's that?"</job>
|
||||
<!-- Can also add <unknown> -->
|
||||
</personality>
|
||||
<!-- A shop -->
|
||||
<node for="0">
|
||||
<keyword>purchase</keyword>
|
||||
<shop type="items">
|
||||
<cost>0</cost>
|
||||
<first>5</first>
|
||||
<count>12</count>
|
||||
<title>Bill's Cheap Items</title>
|
||||
</shop>
|
||||
</node>
|
||||
<!-- Selling items -->
|
||||
<node for="0">
|
||||
<keyword>sell</keyword>
|
||||
<sell type="any">
|
||||
<cost>0</cost>
|
||||
<text>"Yay! Give me all your stuff!"</text>
|
||||
</sell>
|
||||
</node>
|
||||
<!-- Force conversation end -->
|
||||
<node for="0">
|
||||
<keyword>secrets</keyword>
|
||||
<!-- Can add a second keyword if desired -->
|
||||
<talk>
|
||||
<text>"I don't like talking about secrets."</text>
|
||||
</talk>
|
||||
<end>force</end>
|
||||
</node>
|
||||
<!-- An inn -->
|
||||
<node for="0">
|
||||
<keyword>sleep</keyword>
|
||||
<inn>
|
||||
<cost>10</cost>
|
||||
<quality>0</quality>
|
||||
<bed x="12" y="32"/>
|
||||
<text>"Ah, you want one of my cheap rooms? Sleep well!"</text>
|
||||
<text>"Sorry, that'll be 10 gold."</text>
|
||||
</inn>
|
||||
</node>
|
||||
</dialogue>
|
Reference in New Issue
Block a user