Complete implementation of saving new-format scenarios and write version-check and loading stub for new-format scenarios
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
<xs:element name="personality">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='title' type='xs:string'/>
|
||||
<xs:element name="look" type="xs:string"/>
|
||||
<xs:element name="name" type="xs:string"/>
|
||||
<xs:element name="job" type="xs:string"/>
|
||||
@@ -46,250 +47,9 @@
|
||||
<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:element name="type" type="xs:integer"/>
|
||||
<xs:element name="param" minOccurs="0" maxOccurs="4" type="xs:integer"/>
|
||||
<xs:element name="text" minOccurs="1" maxOccurs="2" type="xs:string"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="for" type="xs:integer" use="required"/>
|
||||
</xs:complexType><!--
|
||||
|
@@ -138,6 +138,19 @@
|
||||
<name>Sample Quest</name>
|
||||
<description>Your mission, if you choose to accept it, is...!!??</description>
|
||||
</quest>
|
||||
<!-- And shops -->
|
||||
<shop>
|
||||
<name>A Few Spells</name>
|
||||
<type>live</type>
|
||||
<prompt>spell</prompt>
|
||||
<face>43</face>
|
||||
<entries>
|
||||
<mage-spell>30</mage-spell>
|
||||
<mage-spell>31</mage-spell>
|
||||
<priest-spell>30</priest-spell>
|
||||
<priest-spell>31</priest-spell>
|
||||
</entries>
|
||||
</shop>
|
||||
</game>
|
||||
|
||||
<editor>
|
||||
|
@@ -6,6 +6,15 @@
|
||||
<xs:enumeration value="false"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name='shop-amount'>
|
||||
<xs:union memberTypes='xs:integer'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value='infinite'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:union>
|
||||
</xs:simpleType>
|
||||
<xs:attributeGroup name="rect">
|
||||
<xs:attribute name="top" use="required" type="xs:integer"/>
|
||||
<xs:attribute name="left" use="required" type="xs:integer"/>
|
||||
@@ -84,6 +93,88 @@
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name='entries'>
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs='0' maxOccurs='30'>
|
||||
<xs:element name='item'>
|
||||
<xs:complexType><xs:simpleContent>
|
||||
<xs:extension base='xs:integer'>
|
||||
<xs:attribute name='quantity' type='shop-amount' default='0'/>
|
||||
<xs:attribute name='chance' type='xs:integer' default='100'/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent></xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name='mage-spell'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:integer'>
|
||||
<xs:minInclusive value='0'/>
|
||||
<xs:maxInclusive value='61'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name='priest-spell'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:integer'>
|
||||
<xs:minInclusive value='0'/>
|
||||
<xs:maxInclusive value='61'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name='recipe'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:integer'>
|
||||
<xs:minInclusive value='0'/>
|
||||
<xs:maxInclusive value='19'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name='skill'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:integer'>
|
||||
<xs:minInclusive value='0'/>
|
||||
<xs:maxInclusive value='20'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name='treasure'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:integer'>
|
||||
<xs:minInclusive value='0'/>
|
||||
<xs:maxInclusive value='4'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name='class'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:integer'>
|
||||
<xs:minInclusive value='1'/>
|
||||
<xs:maxInclusive value='100'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name='heal'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:integer'>
|
||||
<xs:minInclusive value='0'/>
|
||||
<xs:maxInclusive value='9'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name='special'>
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name='name' type='xs:string'/>
|
||||
<xs:element name='description' type='xs:string'/>
|
||||
<xs:element name='node' type='xs:integer'/>
|
||||
<xs:element name='quantity' type='shop-amount'/>
|
||||
<xs:element name='cost' type='xs:integer'/>
|
||||
<xs:element name='icon' type='xs:integer'/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="game">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
@@ -136,7 +227,7 @@
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="quest" maxOccurs="unbounded">
|
||||
<xs:element name="quest" minOccurs='0' maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='deadline' minOccurs='0'>
|
||||
@@ -162,6 +253,37 @@
|
||||
<xs:attribute name="start-with" type="bool"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="shop" minOccurs='0' maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name='name' type='xs:string'/>
|
||||
<xs:element name='type'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value='live'/>
|
||||
<xs:enumeration value='dead'/>
|
||||
<xs:enumeration value='rand'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name='prompt'>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base='xs:string'>
|
||||
<xs:enumeration value='shop'/>
|
||||
<xs:enumeration value='heal'/>
|
||||
<xs:enumeration value='mage'/>
|
||||
<xs:enumeration value='priest'/>
|
||||
<xs:enumeration value='spell'/>
|
||||
<xs:enumeration value='alch'/>
|
||||
<xs:enumeration value='train'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name='face' type='xs:integer'/>
|
||||
<xs:element ref='entries'/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="timer" minOccurs="0" maxOccurs="20">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
|
Reference in New Issue
Block a user