Formalize schema for town definition file

This commit is contained in:
2014-11-28 14:10:40 -05:00
parent de7489d47d
commit f21ef07111
4 changed files with 322 additions and 235 deletions

206
rsrc/boes/town.xsd Normal file
View File

@@ -0,0 +1,206 @@
<?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:attributeGroup name="point">
<xs:attribute name="x" use="required" type="xs:integer"/>
<xs:attribute name="y" use="required" type="xs:integer"/>
</xs:attributeGroup>
<xs:element name="town">
<xs:complexType>
<xs:sequence>
<xs:element name="size">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:enumeration value="32"/>
<xs:enumeration value="48"/>
<xs:enumeration value="64"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="name" type="xs:string"/>
<xs:element name="bounds">
<xs:complexType>
<xs:attributeGroup ref="rect"/>
</xs:complexType>
</xs:element>
<xs:element name="difficulty" type="xs:integer"/>
<xs:element name="lighting" type="xs:integer"/>
<xs:element name="enter" minOccurs="4" maxOccurs="4">
<xs:complexType>
<xs:attributeGroup ref="point"/>
<xs:attribute name="dir" type="dir" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="onenter" minOccurs="0" maxOccurs="2">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="condition" default="alive">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="alive"/>
<xs:enumeration value="dead"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="exit" minOccurs="0" maxOccurs="4">
<xs:complexType>
<xs:attributeGroup ref="point"/>
<xs:attribute name="dir" type="dir" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="onexit" minOccurs="0" maxOccurs="4">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="dir" type="dir" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="onoffend" minOccurs="0" type="xs:integer"/>
<xs:element name="timer" minOccurs="0" maxOccurs="8">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="at" type="xs:integer" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="flags">
<xs:complexType>
<xs:all>
<xs:element name="chop" minOccurs="0">
<xs:complexType>
<xs:attribute name="day" type="xs:integer"/>
<xs:attribute name="event" type="xs:integer"/>
<xs:attribute name="kills" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:element name="strong-barriers" minOccurs="0" type="bool"/>
<xs:element name="defy-mapping" minOccurs="0" type="bool"/>
<xs:element name="defy-scrying" minOccurs="0" type="bool"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="wandering">
<xs:complexType>
<xs:sequence>
<xs:element name="loc" minOccurs="4" maxOccurs="4">
<xs:complexType>
<xs:attributeGroup ref="point"/>
</xs:complexType>
</xs:element>
<xs:element name="monster" minOccurs="0" maxOccurs="4">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="group" type="xs:integer"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:choice maxOccurs="unbounded">
<xs:element name="sign">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id" type="xs:integer"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="fields">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attributeGroup ref="point"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="item">
<xs:complexType>
<xs:all>
<xs:element name="id" type="xs:integer"/>
<xs:element name="charges" type="xs:integer" minOccurs="0"/>
<xs:element name="always" type="bool" minOccurs="0"/>
<xs:element name="property" type="bool" minOccurs="0"/>
<xs:element name="contained" type="bool" minOccurs="0"/>
</xs:all>
<xs:attributeGroup ref="point"/>
</xs:complexType>
</xs:element>
<xs:element name="creature">
<xs:complexType>
<xs:all>
<xs:element name="id" type="xs:integer"/>
<xs:element name="attitude" type="xs:integer"/>
<xs:element name="mobility" type="xs:integer"/>
<xs:element name="sdf" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attributeGroup ref="point"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="encounter" type="xs:integer" minOccurs="0"/>
<xs:element name="time" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="param" maxOccurs="2" type="xs:integer"/>
</xs:sequence>
<xs:attribute name="type" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:element name="face" type="xs:integer" minOccurs="0"/>
<xs:element name="personality" type="xs:integer" minOccurs="0"/>
<xs:element name="onkill" type="xs:integer" minOccurs="0"/>
</xs:all>
<xs:attributeGroup ref="point"/>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="boes" type="xs:string"/>
<xs:attribute name="type">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="normal"/>
<xs:enumeration value="template"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@@ -1,241 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<town boes="1.0">
<size>
<x>48</x>
<y>48</y>
</size>
<size>48</size>
<name>Town name</name>
<bounds>
<bound id="0">
<tl>4</tl>
<br>44</br>
</bound>
</bounds>
<terrain>
<row x="1">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
<bounds top="4" left="4" bottom="44" right="44"/>
<!-- Town's difficulty rating -->
<difficulty>1</difficulty>
<!-- Town's lighting type -->
<lighting>0</lighting>
<!-- Town entry locations -->
<enter dir="n" x="22" y="4"/>
<enter dir="s" x="22" y="44"/>
<enter dir="w" x="4" y="22"/>
<enter dir="e" x="22" y="22"/>
<!-- Entry specials; omitting condition is equivalent to ="alive" -->
<onenter>12</onenter>
<onenter condition="dead">13</onenter>
<!-- Town exit location/special -->
<onexit dir="n">5</onexit>
<!-- Various optional flags; <flags/> is perfectly valid here -->
<flags>
</flags>
<!-- Wandering locs and monsters -->
<wandering>
<!-- Need exactly four locs -->
<loc x="5" y="12"/>
<loc x="5" y="12"/>
<loc x="5" y="12"/>
<loc x="5" y="12"/>
<!-- Monsters are optional -->
<monster group="0">21</monster>
</wandering>
<!-- comma-seperated, tile type -->
</row>
<row x="2">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="3">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="4">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="5">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="6">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="7">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="8">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="9">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="10">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="11">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="12">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="13">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="14">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="15">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="16">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="17">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="18">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="19">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="20">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="21">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="22">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,122,122,122,122,122,122,122,122,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="23">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,122,170,170,170,170,170,170,170,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="24">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,122,170,170,170,170,170,170,170,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="25">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,125,170,170,247:0,170,170,170,170,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
<sign id="0">This is a sample sign!</sign>
<!-- add a : to specify a special is there. 247:0 is 247 with special 0 -->
</row>
<row x="26">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,121!0,122,170,170,170,170,170,170,170,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
<!-- add a ! to specify a sign is there. 121!0 is 121 with sign 0 -->
</row>
<row x="27">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,122,170,170,170,170,170,170,170,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="28">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,122,170,170,170,170,170,170,170,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="29">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,122,170,170,170,170,170,170,170,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="30">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,122,122,122,122,122,122,122,122,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="31">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="32">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="33">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="34">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="35">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="36">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="37">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="38">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="39">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="40">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="41">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="42">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="43">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="44">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="45">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="46">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
<row x="47">
<tiles>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</tiles>
</row>
</terrain>
<specials>
<special id="0">
<type>181</type> <!-- consts.h. maybe this will allow custom nodes sometime, although that could be...fun -->
<sdf>
<x>-1</x>
<y>-1</y>
</sdf>
<messages>
<m1>0</m1>
<m2>1</m2>
</messages>
<extra1>
<a>26</a>
<b>16</b>
</extra1>
<extra2>
<a>1</a>
<b>1</b>
</extra2>
<jump>-1</jump>
</special>
</specials>
<signs>
<sign id="0">120</sign><!-- refers to text node -->
</signs>
<fields>
<field id="0">
<x>25</x>
<y>17</y>
<type>128</type><!-- fields.h, bitmask thing -->
</field>
</fields>
<sfxs>
<sfx id="0">
<x>27</x>
<y>17</y>
<type>4</type><!-- fields.h, bitmask thing -->
</sfx>
</sfxs>
<!-- these code both fields and sfx -->
<fields x="25" y="17">128</fields><!-- fields.h, bitmask thing -->
<!-- preset items -->
<item x="12" y="13">
<id>17</id>
<property>true</property>
<charges>3</charges>
</item>
<!-- preset creatures -->
<creature x="15" y="32">
<id>12</id>
<personality>0</personality>
<attitude>0</attitude>
<mobility>1</mobility>
</creature>
</town>

54
rsrc/boes/town/t0.map Normal file
View File

@@ -0,0 +1,54 @@
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
# comma-seperated, tile type
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,122,122,122,122,122,122,122,122,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,122,170,170,170,170,170,170,170,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,122,170,170,170,170,170,170,170,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,125,170,170,247:0,170,170,170,170,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
# add a : to specify a special is there. 247:0 is 247 with special 0
2,2,2,2,2,2,2,2,2,2,2,2,121!0,122,170,170,170,170,170,170,170,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
# add a ! to specify a sign is there. 121!0 is 121 with sign 0
# you can do both, in either order; 121!0:0 and 121:0!0 are both 121 with special 0 and sign 0
2,2,2,2,2,2,2,2,2,2,2,2,2,122,170,170,170,170,170,170,170,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,122,170,170,170,170,170,170,170,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,122,170,170,170,170,170,170,170,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,122,122,122,122,122,122,122,122,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2~h,2~H,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
# add a ~ to specify a boat or horse; following character is h for horse, b for boat
# uppercase indicates it's not the party's property, lowercase indicates it is
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2

6
rsrc/boes/town/t0.spec Normal file
View File

@@ -0,0 +1,6 @@
# Possible special node format
# SpecialID, SpecialType, SDF, Message, Extra1, Extra2, Jump
# Potentially, each SpecialType could have its own format.
0 TOWN_PLACE_MONST sdf(-1,-1), mess(0,1), extra(26,16), extra(1,1), jump(-1)