~ubuntu-branches/ubuntu/trusty/enigma/trusty-proposed

« back to all changes in this revision

Viewing changes to doc/reference/enigma-ref.html

  • Committer: Package Import Robot
  • Author(s): Erich Schubert
  • Date: 2013-04-06 14:54:02 UTC
  • mfrom: (1.1.10)
  • Revision ID: package-import@ubuntu.com-20130406145402-jgjrtk7hac8gtvza
Tags: 1.20-dfsg.1-1
* New upstream release (Closes: #704595)
  (Repacked: dropped zipios++ source and main menu music)
* Update watch file, sf.net again.
* Fix documentation links (Closes: #653508)
* Conflict with enigma-level-previews to encourage deinstallation
  (Pregenerated level previews were only used with version 1.01)
* Use dh7 for building instead of CDBS
* Update to policy 3.9.4.0 (no changes)
* Register documentation with doc-base

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
 
2
<html>
 
3
<!-- Created on April 1, 2013 by texi2html 1.82
 
4
texi2html was written by: 
 
5
            Lionel Cons <Lionel.Cons@cern.ch> (original author)
 
6
            Karl Berry  <karl@freefriends.org>
 
7
            Olaf Bachmann <obachman@mathematik.uni-kl.de>
 
8
            and many others.
 
9
Maintained by: Many creative people.
 
10
Send bugs and suggestions to <texi2html-bug@nongnu.org>
 
11
-->
 
12
<head>
 
13
<title>Enigma Reference Manual</title>
 
14
 
 
15
<meta name="description" content="Enigma Reference Manual">
 
16
<meta name="keywords" content="Enigma Reference Manual">
 
17
<meta name="resource-type" content="document">
 
18
<meta name="distribution" content="global">
 
19
<meta name="Generator" content="texi2html 1.82">
 
20
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 
21
<style type="text/css">
 
22
<!--
 
23
a.summary-letter {text-decoration: none}
 
24
blockquote.smallquotation {font-size: smaller}
 
25
code {color:rgb(0%,50%,0%)}
 
26
h3 {background-color:rgb(95%,95%,100%)}
 
27
hr {height:0px;}
 
28
pre.display {font-family: serif}
 
29
pre.example {background-color:rgb(97%,97%,97%)}
 
30
pre.example b {color:rgb(0%,0%,100%); font-weight:normal}
 
31
pre.example i {color:rgb(0%,60%,0%); font-style:normal}
 
32
pre.example var {color:rgb(80%,0%,80%)}
 
33
pre.format {font-family: serif}
 
34
pre.menu-comment {font-family: serif}
 
35
pre.menu-preformatted {font-family: serif}
 
36
pre.smalldisplay {font-family: serif; font-size: smaller}
 
37
pre.smallexample {font-size: smaller}
 
38
pre.smallformat {font-family: serif; font-size: smaller}
 
39
pre.smalllisp {font-size: smaller}
 
40
samp {color:rgb(0%,50%,0%)}
 
41
span.roman {font-family:serif; font-weight:normal;}
 
42
span.sansserif {font-family:sans-serif; font-weight:normal;}
 
43
ul.toc {list-style: none}
 
44
-->
 
45
</style>
 
46
 
 
47
 
 
48
</head>
 
49
 
 
50
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
 
51
 
 
52
<a name="Top"></a>
 
53
<table cellpadding="1" cellspacing="1" border="0">
 
54
<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
55
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
56
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
57
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
58
</tr></table>
 
59
<a name="SEC_Top"></a>
 
60
<h1 class="settitle">Enigma Reference Manual</h1>
 
61
 
 
62
<p>This manual describes the internals of
 
63
<a href="http://www.nongnu.org/enigma/">Enigma</a> version 1.20, in particular how to
 
64
build new levels using Lua and how to interact with the game engine.
 
65
</p>
 
66
<table class="menu" border="0" cellspacing="0">
 
67
<tr><td align="left" valign="top"><a href="#Running-Enigma">1. Running Enigma</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
 
68
<tr><td align="left" valign="top"><a href="#Levelpack-Basics">2. Levelpack Basics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Addition and managing of levels in packs
 
69
</td></tr>
 
70
<tr><td align="left" valign="top"><a href="#Level-Basics">3. Level Basics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                Introduction to level description
 
71
</td></tr>
 
72
<tr><td align="left" valign="top"><a href="#Enigma-Paradigm">4. Enigma Paradigm</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Principles of world, objects and messages
 
73
</td></tr>
 
74
<tr><td align="left" valign="top"><a href="#Lua-API">5. Lua API</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     Describing a level with all its objects and interactions
 
75
</td></tr>
 
76
<tr><td align="left" valign="top"><a href="#Common-Attributes-and-Messages">6. Common Attributes and Messages</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">  What all objects support
 
77
</td></tr>
 
78
<tr><td align="left" valign="top"><a href="#Floor-Objects">7. Floor Objects</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
79
</td></tr>
 
80
<tr><td align="left" valign="top"><a href="#Item-Objects">8. Item Objects</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
81
</td></tr>
 
82
<tr><td align="left" valign="top"><a href="#Stone-Objects">9. Stone Objects</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
83
</td></tr>
 
84
<tr><td align="left" valign="top"><a href="#Actor-Objects">10. Actor Objects</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
85
</td></tr>
 
86
<tr><td align="left" valign="top"><a href="#Other-Objects">11. Other Objects</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               Wires, Rubberbands and Gadgets
 
87
</td></tr>
 
88
<tr><td align="left" valign="top"><a href="#Libraries">12. Libraries</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                   Supplemental Functions and Features
 
89
</td></tr>
 
90
<tr><td align="left" valign="top"><a href="#Advanced-Features">13. Advanced Features</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Resolvers, Scrolling, Flood, Fire, etc.
 
91
</td></tr>
 
92
<tr><td align="left" valign="top"><a href="#Extension-Development">14. Extension Development</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Resolver, Library Development
 
93
</td></tr>
 
94
<tr><td align="left" valign="top"><a href="#Guidelines-and-Hints">15. Guidelines and Hints</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Tips and Recommendations for Levels to be included in Enigma
 
95
</td></tr>
 
96
<tr><td align="left" valign="top"><a href="#Compatibility">16. Compatibility</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               Engine Mode and Version Compatibility
 
97
</td></tr>
 
98
<tr><td align="left" valign="top"><a href="#Object-Index">Object Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
99
</td></tr>
 
100
<tr><td align="left" valign="top"><a href="#Attribute-Index">Attribute Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
101
</td></tr>
 
102
<tr><td align="left" valign="top"><a href="#Message-Index">Message Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
103
</td></tr>
 
104
<tr><td align="left" valign="top"><a href="#Function-Index">Function Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
105
</td></tr>
 
106
<tr><td align="left" valign="top"><a href="#Concept-Index">Concept Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
107
</td></tr>
 
108
<tr><td align="left" valign="top"><a href="#Renaming-Index">Renaming Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              Old API to new API translation hints
 
109
</td></tr>
 
110
</table>
 
111
 
 
112
<hr size="1">
 
113
<a name="Running-Enigma"></a>
 
114
<table cellpadding="1" cellspacing="1" border="0">
 
115
<tr><td valign="middle" align="left">[<a href="#Top" title="Previous section in reading order"> &lt; </a>]</td>
 
116
<td valign="middle" align="left">[<a href="#Locating-Resources" title="Next section in reading order"> &gt; </a>]</td>
 
117
<td valign="middle" align="left"> &nbsp; </td>
 
118
<td valign="middle" align="left">[<a href="#Top" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
119
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
120
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
121
<td valign="middle" align="left"> &nbsp; </td>
 
122
<td valign="middle" align="left"> &nbsp; </td>
 
123
<td valign="middle" align="left"> &nbsp; </td>
 
124
<td valign="middle" align="left"> &nbsp; </td>
 
125
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
126
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
127
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
128
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
129
</tr></table>
 
130
<a name="Running-Enigma-1"></a>
 
131
<h1 class="chapter">1. Running Enigma</h1>
 
132
 
 
133
<p>Hopefully, after successfully installing and playing some first levels, you may be interested in
 
134
some information about how we have configured Enigma, how you can optimize Enigma to your
 
135
needs, and the purpose of some options and attributes within Enigma.
 
136
</p>
 
137
<p>This first chapter should give you some valuable information about these questions, and provide
 
138
some basic knowledge you will need to manage level packs, levels or write your own levels, as
 
139
described in the following chapters.
 
140
</p>
 
141
<table class="menu" border="0" cellspacing="0">
 
142
<tr><td align="left" valign="top"><a href="#Locating-Resources">1.1 Locating Resources</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
143
</td></tr>
 
144
<tr><td align="left" valign="top"><a href="#Startup-Switches">1.2 Startup Switches</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
145
</td></tr>
 
146
<tr><td align="left" valign="top"><a href="#User-Options">1.3 User Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
147
</td></tr>
 
148
<tr><td align="left" valign="top"><a href="#Inventory-Console">1.4 Inventory Console</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Command and document text history
 
149
</td></tr>
 
150
<tr><td align="left" valign="top"><a href="#Level-Info">1.5 Level Info</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
151
</td></tr>
 
152
<tr><td align="left" valign="top"><a href="#Handicap-and-PAR">1.6 Handicap and PAR</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Background to score evaluation and HCP
 
153
</td></tr>
 
154
<tr><td align="left" valign="top"><a href="#User-Sound-Sets">1.7 User Sound Sets</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            How to create and install sound themes
 
155
</td></tr>
 
156
</table>
 
157
 
 
158
<hr size="6">
 
159
<a name="Locating-Resources"></a>
 
160
<table cellpadding="1" cellspacing="1" border="0">
 
161
<tr><td valign="middle" align="left">[<a href="#Running-Enigma" title="Previous section in reading order"> &lt; </a>]</td>
 
162
<td valign="middle" align="left">[<a href="#Startup-Switches" title="Next section in reading order"> &gt; </a>]</td>
 
163
<td valign="middle" align="left"> &nbsp; </td>
 
164
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
165
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Up section"> Up </a>]</td>
 
166
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
167
<td valign="middle" align="left"> &nbsp; </td>
 
168
<td valign="middle" align="left"> &nbsp; </td>
 
169
<td valign="middle" align="left"> &nbsp; </td>
 
170
<td valign="middle" align="left"> &nbsp; </td>
 
171
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
172
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
173
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
174
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
175
</tr></table>
 
176
<a name="Locating-Resources-1"></a>
 
177
<h2 class="section">1.1 Locating Resources</h2>
 
178
 
 
179
<p>For reasons of backup, system changes, special configurations, level additions and hopefully
 
180
your own new levels, you may need to know where Enigma stores the resources and how you
 
181
can control them.
 
182
</p>
 
183
<p>Enigma maintains several paths for control of load and storage of files. You
 
184
can list these paths either in the help submenu paths, or by starting Enigma
 
185
with the switch &lsquo;<samp>--log</samp>&rsquo; (see section <a href="#Startup-Switches">Startup Switches</a>) and looking at the
 
186
console output.
 
187
</p>
 
188
<dl compact="compact">
 
189
<dd><a name="index-preferences-path"></a>
 
190
</dd>
 
191
<dt> <b>Preferences Path</b></dt>
 
192
<dd><p>This is the path to the file that stores your preferences concerning application
 
193
options. This file is usually located at your <code>HOME</code> directory. For <code>HOME</code>-less
 
194
Windows users, it is stored in the &lsquo;<samp>Application Data\Enigma</samp>&rsquo; directory. Since it is the
 
195
third version in the history of Enigma, the file is named
 
196
&lsquo;<samp>.enigmarc.xml</samp>&rsquo; by default.
 
197
</p>
 
198
<p>We recommend that you backup this file, although it contains only a few data that you can
 
199
quickly reconfigure.
 
200
</p>
 
201
<p>Since these preferences are quite specific for the operating system and configuration, you will
 
202
use a different version on each Enigma installation you have.
 
203
</p>
 
204
<p>Mainly for Enigma developers, a switch exists &lsquo;<samp>--pref</samp>&rsquo; (see section <a href="#Startup-Switches">Startup Switches</a>)
 
205
to rename this preferences file. By starting Enigma with a renamed preferences
 
206
file, a developer can temporarily use a complete separate configuration for
 
207
testing purposes without the danger of destroying his main configuration. The
 
208
developer may use it to start Enigma with a plain standard configuration for
 
209
testing purposes, too.
 
210
</p>
 
211
<p>In all cases, a leading &lsquo;<samp>.</samp>&rsquo; will hide the preferences filename.
 
212
</p>
 
213
<a name="index-user-path"></a>
 
214
</dd>
 
215
<dt> <b>User Path</b></dt>
 
216
<dd><p>This is the main path to the user&rsquo;s Enigma data. All updates, user-installed levels and user-
 
217
written levels, the user&rsquo;s scores, history and usually the user&rsquo;s screenshots and level previews,
 
218
are stored at this path.
 
219
</p>
 
220
<p>A backup of this directory is mandatory!
 
221
</p>
 
222
<p>The standard location is the directory &lsquo;<samp>.enigma</samp>&rsquo; in your <code>HOME</code>
 
223
directory. For <code>HOME</code>-less Windows users, it is the folder
 
224
&lsquo;<samp>%APPDATA%\Enigma</samp>&rsquo;, what resolves to the subfolder
 
225
&lsquo;<samp>Application Data\Enigma</samp>&rsquo; on XP/2000 or &lsquo;<samp>AppData\Roaming\Enigma</samp>&rsquo; on
 
226
Vista/Windows 7 located within your user data folder.
 
227
</p>
 
228
<p>This standard location of the user path is the location of logging and error
 
229
output files, too.
 
230
</p>
 
231
<p>You can define your own path within the <a href="#User-Options">User Options</a>. By doing so, you can store your
 
232
Enigma user data on a memory stick or on a shared partition, and use them alternatively from
 
233
two Enigma installations.
 
234
</p>
 
235
<a name="index-user-image-path"></a>
 
236
</dd>
 
237
<dt> <b>User Image Path</b></dt>
 
238
<dd><p>This is a second path to the user&rsquo;s Enigma data, which you can use to access images such as
 
239
screenshots and thumbnails of levels. Usually this path is identical to the main &lsquo;<samp>User
 
240
Path</samp>&rsquo;.
 
241
</p>
 
242
<p>Just in case you make many screenshots and have limited resources on the main
 
243
&lsquo;<samp>User Path</samp>&rsquo;, you may want to store the images on another path. You can
 
244
define your own path within the <a href="#User-Options">User Options</a>.
 
245
</p>
 
246
<a name="index-system-path"></a>
 
247
</dd>
 
248
<dt> <b>System Path</b></dt>
 
249
<dd><p>This path gives you the location of all system resources that are distributed with Enigma. Here
 
250
you will find the levels, libraries, etc. This is a first class address to look for examples if you start
 
251
writing your own levels.
 
252
</p>
 
253
<a name="index-resource-paths"></a>
 
254
</dd>
 
255
<dt> <b>Resource Paths</b></dt>
 
256
<dd><p>This is a list of paths. The program looks up each version-independent resource on all paths in
 
257
this list, and loads from the first occurrence.
 
258
</p>
 
259
<p>User data precedes system data; this way, updates on your user data path will win. Have a look
 
260
at this list if you are observing a difference between a source and the runtime behavior. You may
 
261
have looked at a file that another file had hidden on a preceding path in this list.
 
262
</p>
 
263
<a name="index-l10n-path"></a>
 
264
<a name="index-localization-path"></a>
 
265
</dd>
 
266
<dt> <b>l10n Path</b></dt>
 
267
<dd><p>This path shows the directory that contains the localization data.
 
268
</p>
 
269
</dd>
 
270
</dl>
 
271
 
 
272
<p>Please note that some resources, like levels, may be zipped. In this case, a
 
273
resource that you expect to find at &lsquo;<samp>dirname/filename</samp>&rsquo; may be stored in a zipfile
 
274
named &lsquo;<samp>dirname.zip</samp>&rsquo;. The path of the file within the zip can be either
 
275
&lsquo;<samp>dirname/filename</samp>&rsquo; or &lsquo;<samp>./filename</samp>&rsquo;. In case a resource is provided
 
276
in zipped and unzipped form, the plain file stored in a directory wins, since Enigma
 
277
assumes it to be an update to the zip.
 
278
</p>
 
279
<hr size="6">
 
280
<a name="Startup-Switches"></a>
 
281
<table cellpadding="1" cellspacing="1" border="0">
 
282
<tr><td valign="middle" align="left">[<a href="#Locating-Resources" title="Previous section in reading order"> &lt; </a>]</td>
 
283
<td valign="middle" align="left">[<a href="#User-Options" title="Next section in reading order"> &gt; </a>]</td>
 
284
<td valign="middle" align="left"> &nbsp; </td>
 
285
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
286
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Up section"> Up </a>]</td>
 
287
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
288
<td valign="middle" align="left"> &nbsp; </td>
 
289
<td valign="middle" align="left"> &nbsp; </td>
 
290
<td valign="middle" align="left"> &nbsp; </td>
 
291
<td valign="middle" align="left"> &nbsp; </td>
 
292
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
293
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
294
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
295
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
296
</tr></table>
 
297
<a name="Startup-Switches-1"></a>
 
298
<h2 class="section">1.2 Startup Switches</h2>
 
299
 
 
300
<p>Besides starting Enigma by clicking on an installation-provided icon or start
 
301
menu entry, you can start Enigma from a shell or commandline. This allows you
 
302
to add a selection of startup switches that are valid for just a single run.
 
303
</p>
 
304
<p>For repeated usage of constant startup switches you can create an desktop icon
 
305
or start menu entry and append the startup switch to the target string of the
 
306
Enigma application executable.
 
307
</p>
 
308
<p>The following list explains the supported user options. If an option is listed with a long name
 
309
preceded by two minus signs, and with a one-character abbreviation preceded by one minus
 
310
sign, use one of the notations, not both together; for example,
 
311
&lsquo;<samp>--data path</samp>&rsquo; or &lsquo;<samp>-d path</samp>&rsquo;.
 
312
</p>
 
313
<dl compact="compact">
 
314
<dt> <b>--assert</b></dt>
 
315
<dd><p>A switch for Enigma developers that forces all debugging assertions, even
 
316
expensive ones, to be evaluated. The additionally evaluated checks look like
 
317
&lsquo;<samp>ASSERT(noAssert || long_lasting_check(), XLevelRuntime, &quot;remark&quot;);</samp>&rsquo;.
 
318
</p>
 
319
</dd>
 
320
<dt> <b>--data -d path</b></dt>
 
321
<dd><p>A switch for Enigma developers that allows you to add an additional path to the
 
322
resource paths that precedes the system path (see section <a href="#Startup-Switches">Startup Switches</a>). A
 
323
developer can test an Enigma compilation, without installation, by calling it
 
324
from the shell with the current working directory on the main directory via
 
325
&lsquo;<samp>src/Enigma -d ./data</samp>&rsquo;.
 
326
</p>
 
327
</dd>
 
328
<dt> <b>--help -h</b></dt>
 
329
<dd><p>Just lists the available startup switches to the output and terminate.
 
330
</p>
 
331
</dd>
 
332
<dt> <b>--lang -l lang</b></dt>
 
333
<dd><p>A switch that allows you to override any other language preference. The language
 
334
is given in the common 2-character sequence as &lsquo;<samp>fr</samp>&rsquo; for French or &lsquo;<samp>ru</samp>&rsquo;
 
335
for Russian.
 
336
</p>
 
337
</dd>
 
338
<dt> <b>--log</b></dt>
 
339
<dd><p>This switch turns on logging of internal information to the standard output.
 
340
Windows users will find an file called &lsquo;<samp>Output.log</samp>&rsquo; in the standard
 
341
&lsquo;<samp>User Path</samp>&rsquo; folder. An additional file &lsquo;<samp>Error.log</samp>&rsquo; lists severe
 
342
error messages.
 
343
</p>
 
344
<p>The output will, for example, list the paths described in <a href="#Locating-Resources">Locating Resources</a>.
 
345
</p>
 
346
</dd>
 
347
<dt> <b>--nograb</b></dt>
 
348
<dd><p>A switch for Enigma developers that causes Enigma not to grab the mouse. You can hardly
 
349
play a level in this mode, but it makes it possible to debug the
 
350
application in its core parts.
 
351
</p>
 
352
</dd>
 
353
<dt> <b>--nomusic</b></dt>
 
354
<dd><p>Start Enigma without playing background music.
 
355
</p>
 
356
</dd>
 
357
<dt> <b>--nosound</b></dt>
 
358
<dd><p>Start Enigma with sound being switched off.
 
359
</p>
 
360
</dd>
 
361
<dt> <b>--pref -p filename</b></dt>
 
362
<dd><p>The name of an alternative preferences file without the leading dot for hidden
 
363
filenames. This switch is a pure Enigma developer support feature, as described
 
364
in <a href="#Locating-Resources">Locating Resources</a>.
 
365
</p>
 
366
</dd>
 
367
<dt> <b>--pref -p dirpath</b></dt>
 
368
<dd><p>The path of an alternative directory that contains the standard named preference
 
369
file &lsquo;<samp>.enigmarc.xml</samp>&rsquo;. If no preference file exists or the directory does
 
370
not yet exist they are created. On creation of the preference file the user data
 
371
path is set to the given dirpath per default. This allows to store all Enigma
 
372
user data in a single directory that can be stored anywhere, e.g. on a USB stick.
 
373
You always need to call Enigma with the above switch to use this new set up.
 
374
Remember that a path with spaces needs to be quoted.
 
375
</p>
 
376
</dd>
 
377
<dt> <b>--redirect</b></dt>
 
378
<dd><p>Redirect the &lsquo;<samp>stdout</samp>&rsquo; and &lsquo;<samp>stderr</samp>&rsquo; to files named &lsquo;<samp>Output.log</samp>&rsquo;
 
379
and &lsquo;<samp>Error.log</samp>&rsquo; on the standard user path (see section <a href="#Locating-Resources">Locating Resources</a>).
 
380
For Windows this option is always <code>true</code>, but the usage of this option
 
381
is useful on any operating system if Enigma is started via a desktop icon or
 
382
a menu button.
 
383
</p>
 
384
</dd>
 
385
<dt> <b>--robinson</b></dt>
 
386
<dd><p>Disable all connections to the internet. No automatic updates will take place
 
387
and all user initiated requests that would require an internet connection will
 
388
fail with an error message.
 
389
</p>
 
390
</dd>
 
391
<dt> <b>--showfps</b></dt>
 
392
<dd><p>Show the framerate (FPS) during the game.
 
393
</p>
 
394
</dd>
 
395
<dt> <b>--version</b></dt>
 
396
<dd><p>Just print the version number to the output and terminate.
 
397
</p>
 
398
</dd>
 
399
<dt> <b>--window -w</b></dt>
 
400
<dd><p>Start Enigma in window mode instead of screen mode.
 
401
</p>
 
402
</dd>
 
403
</dl>
 
404
 
 
405
<p>Enigma interprets all further arguments supplied on the commandline as level file
 
406
addresses. You can use absolute or relative addresses to level files stored
 
407
on your computer. Adding url&rsquo;s to levels stored in the Internet is also possible.
 
408
</p>
 
409
<p>A Unix user may start Enigma with the following command:
 
410
</p>
 
411
<p><code>enigma --log ~/mylevel.xml http://somewhere.com/netlevel.xml</code>
 
412
</p>
 
413
<p>A Windows user may start Enigma from the command line (please adjust the Enigma
 
414
installation path):
 
415
</p>
 
416
<p><code>C:\Programs\Enigma\enigma.exe --log demo_simple.xml</code>
 
417
</p>
 
418
<p>You will find these levels in the levelpack called &lsquo;<samp>Startup Levels</samp>&rsquo;, which is
 
419
only visible by default if you supplied levels on the commandline.
 
420
</p>
 
421
<hr size="6">
 
422
<a name="User-Options"></a>
 
423
<table cellpadding="1" cellspacing="1" border="0">
 
424
<tr><td valign="middle" align="left">[<a href="#Startup-Switches" title="Previous section in reading order"> &lt; </a>]</td>
 
425
<td valign="middle" align="left">[<a href="#Inventory-Console" title="Next section in reading order"> &gt; </a>]</td>
 
426
<td valign="middle" align="left"> &nbsp; </td>
 
427
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
428
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Up section"> Up </a>]</td>
 
429
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
430
<td valign="middle" align="left"> &nbsp; </td>
 
431
<td valign="middle" align="left"> &nbsp; </td>
 
432
<td valign="middle" align="left"> &nbsp; </td>
 
433
<td valign="middle" align="left"> &nbsp; </td>
 
434
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
435
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
436
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
437
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
438
</tr></table>
 
439
<a name="User-Options-1"></a>
 
440
<h2 class="section">1.3 User Options</h2>
 
441
 
 
442
<dl compact="compact">
 
443
<dt> <b>Ratings update</b></dt>
 
444
<dd><p>Please retain this option on the value &lsquo;<samp>Never</samp>&rsquo; until release of Enigma 1.00.
 
445
</p>
 
446
</dd>
 
447
<dt> <b>User name</b></dt>
 
448
<dd><p>Enter your user name, which Enigma will attach to your scores. Please look at
 
449
the Enigma home page for user names already in use and choose a new, unique name.
 
450
You can change your user name at anytime without losing any of your
 
451
scores.
 
452
</p>
 
453
</dd>
 
454
<dt> <b>User path</b></dt>
 
455
<dd><p>This textfield allows you to define an arbitrary directory for your Enigma user
 
456
data as described in <a href="#Locating-Resources">Locating Resources</a>.
 
457
</p>
 
458
<p>Deletion of the string resets the path to the default.
 
459
</p>
 
460
<p>Enigma activates the new path when you leave the options menu. Though it stores all files
 
461
directly to the new path, and will still find files on the old path, you may want to quit Enigma
 
462
immediately and first copy/merge the old directory to the new location. This copy of your old
 
463
data is necessary, since with the next start, Enigma will locate user data at the new location
 
464
exclusively.
 
465
</p>
 
466
</dd>
 
467
<dt> <b>User image path</b></dt>
 
468
<dd><p>This textfield allows you to define an arbitrary directory for your Enigma user
 
469
image data as described in <a href="#Locating-Resources">Locating Resources</a>.
 
470
</p>
 
471
<p>Deletion of the string resets the path to the default.
 
472
</p>
 
473
<p>Enigma activates the new path when you leave the options menu. Though it has stored all files
 
474
directly to the new path and files will still be found on the old path, you may want to quit
 
475
Enigma immediately and first copy/merge the old directory to the new location. This copy of
 
476
your old data is necessary, since with the next start, Enigma will locate user data at the new
 
477
location exclusively.
 
478
</p>
 
479
</dd>
 
480
</dl>
 
481
 
 
482
 
 
483
<hr size="6">
 
484
<a name="Inventory-Console"></a>
 
485
<table cellpadding="1" cellspacing="1" border="0">
 
486
<tr><td valign="middle" align="left">[<a href="#User-Options" title="Previous section in reading order"> &lt; </a>]</td>
 
487
<td valign="middle" align="left">[<a href="#Level-Info" title="Next section in reading order"> &gt; </a>]</td>
 
488
<td valign="middle" align="left"> &nbsp; </td>
 
489
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
490
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Up section"> Up </a>]</td>
 
491
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
492
<td valign="middle" align="left"> &nbsp; </td>
 
493
<td valign="middle" align="left"> &nbsp; </td>
 
494
<td valign="middle" align="left"> &nbsp; </td>
 
495
<td valign="middle" align="left"> &nbsp; </td>
 
496
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
497
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
498
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
499
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
500
</tr></table>
 
501
<a name="Inventory-Console-1"></a>
 
502
<h2 class="section">1.4 Inventory Console</h2>
 
503
 
 
504
<p>The lower right window area that usually shows the inventory items and scrolls
 
505
the texts of activated document items allows the user to reread previous
 
506
document texts, to enter textual commands and to reissue previous commands.
 
507
</p>
 
508
<p>You can issue a command by usage of the keyboard. Just enter the command string
 
509
and activate the command by a finishing &lt;return&gt; stroke. The following
 
510
commands are supported:
 
511
</p>
 
512
<dl compact="compact">
 
513
<dt> <b>help</b></dt>
 
514
<dd><p>List all public available commands.
 
515
</p></dd>
 
516
<dt> <b>abort</b></dt>
 
517
<dd><p>Abort level and return to level selection menu. Same as &lt;Alt X&gt;
 
518
</p></dd>
 
519
<dt> <b>April 1st</b></dt>
 
520
<dd><p>Just a joke.
 
521
</p></dd>
 
522
<dt> <b>cheats</b></dt>
 
523
<dd><p>List level developer cheat commands for fast testing.
 
524
</p></dd>
 
525
<dt> <b>collision</b></dt>
 
526
<dd><p>Developer cheat that disables collisions between stones and marbles or pearls.
 
527
Once used no score will be recorded if the level is successfully finished.
 
528
</p></dd>
 
529
<dt> <b>easy</b></dt>
 
530
<dd><p>Restart level in easy difficulty mode.
 
531
</p></dd>
 
532
<dt> <b>find</b> search_string</dt>
 
533
<dd><p>Searches levels in all levelpacks that contain matching string in either
 
534
the level&rsquo;s title, author&rsquo;s name or the file name.
 
535
</p></dd>
 
536
<dt> <b>god</b></dt>
 
537
<dd><p>Developer cheat that protects the actors assigned to the current player like
 
538
the activation of an <a href="#it_005fumbrella">it_umbrella</a> does. Once used no score will be
 
539
recorded if the level is successfully finished.
 
540
</p></dd>
 
541
<dt> <b>hunt</b></dt>
 
542
<dd><p>Switch to world record hunting mode. Same as toggling the left most button
 
543
in the level selection menu to the world icon.
 
544
</p></dd>
 
545
<dt> <b>info</b></dt>
 
546
<dd><p>Show info about level like the levelpack, position within levelpack, the file
 
547
location, the title, author, version and the level internal id.
 
548
</p></dd>
 
549
<dt> <b>jumpto</b> levelpack,position</dt>
 
550
<dd><p>Directly start the given level. The levelpack is identified by its title. The
 
551
position is the number within the levelpack. E.g. <code>jumpto Enigma IV,33</code>.
 
552
</p></dd>
 
553
<dt> <b>nohunt</b></dt>
 
554
<dd><p>Switch off the world record hunting mode. Same as toggling the left most button
 
555
in the level selection menu to the marble icon.
 
556
</p></dd>
 
557
<dt> <b>regular</b></dt>
 
558
<dd><p>Restart level in regular difficulty mode
 
559
</p></dd>
 
560
<dt> <b>restart</b></dt>
 
561
<dd><p>Restart level in currently selected difficulty mode.
 
562
</p></dd>
 
563
<dt> <b>suicide</b></dt>
 
564
<dd><p>Kill actors, but continue level if possible. Same as &lt;F3&gt;.
 
565
</p></dd>
 
566
</dl>
 
567
 
 
568
<p>Both, the commands and the displayed document text have a history. You recall
 
569
the history by usage of the up and down arrows.
 
570
</p>
 
571
<ul>
 
572
<li> <b>inventory</b> &ndash;&gt; jump to start
 
573
</li><li> <b>command #10</b>, oldest command in history
 
574
</li><li> <b>command #9</b>
 
575
</li><li> &hellip;
 
576
</li><li> <b>command #2</b>
 
577
</li><li> <b>command #1</b>, last executed command
 
578
</li><li> <b>command under edition</b>, just if the last edited command has not been executed
 
579
</li><li> <b>inventory</b> &lt;&ndash; start
 
580
</li><li> <b>document #1</b>, last viewed document
 
581
</li><li> <b>document #2</b>, previous viewed document
 
582
</li><li> &hellip;
 
583
</li><li> <b>document #n</b>, first viewed document
 
584
</li><li> <b>level title, subtitle, author</b>, as shown on level start
 
585
</li><li> <b>inventory</b> &ndash;&gt; jump to start
 
586
</li></ul>
 
587
 
 
588
<p>Starting with the inventory item display the up arrow shows the previously
 
589
submitted commands. Just by another &lt;return&gt; you can reissue a command.
 
590
The history will be resorted with the last command at the position direktly
 
591
above the inventory. You can edit history commands anytime like you can insert
 
592
a new command. If you do not finish a command by a &lt;return&gt; the string will
 
593
still be recorded and presented as the first command above the inventory. The
 
594
command history is persistent.
 
595
</p>
 
596
<p>The document history can be recalled by usage of the down arrow. All level
 
597
documents previously displayed can be redisplayed. Additionally the initial
 
598
level info displayed on the level start can be read again.
 
599
</p>
 
600
<p>Both histories revolve to the item inventory when the up or down keys are
 
601
used beyond the oldest command or message.
 
602
</p>
 
603
<hr size="6">
 
604
<a name="Level-Info"></a>
 
605
<table cellpadding="1" cellspacing="1" border="0">
 
606
<tr><td valign="middle" align="left">[<a href="#Inventory-Console" title="Previous section in reading order"> &lt; </a>]</td>
 
607
<td valign="middle" align="left">[<a href="#Public-Ratings" title="Next section in reading order"> &gt; </a>]</td>
 
608
<td valign="middle" align="left"> &nbsp; </td>
 
609
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
610
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Up section"> Up </a>]</td>
 
611
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
612
<td valign="middle" align="left"> &nbsp; </td>
 
613
<td valign="middle" align="left"> &nbsp; </td>
 
614
<td valign="middle" align="left"> &nbsp; </td>
 
615
<td valign="middle" align="left"> &nbsp; </td>
 
616
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
617
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
618
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
619
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
620
</tr></table>
 
621
<a name="Level-Info-1"></a>
 
622
<h2 class="section">1.5 Level Info</h2>
 
623
 
 
624
<a name="index-levelinspector"></a>
 
625
<p>For every level, Enigma manages more data than can be displayed in the level menu. You can
 
626
view them all with the levelinspector. You can call this special menu from within the level menu
 
627
by right or control clicking on the level icon.
 
628
</p>
 
629
<p>Besides title and author, Enigma provides information concerning a public rating of the level,
 
630
different score values of interest, details on the level version, the level file location and more.
 
631
Additionally, the levelinspector allows you to enter personal annotations for a level. You can
 
632
review any screenshots you made for this level directly from the levelinspector, too.
 
633
</p>
 
634
<table class="menu" border="0" cellspacing="0">
 
635
<tr><td align="left" valign="top"><a href="#Public-Ratings">1.5.1 Public Ratings</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
636
</td></tr>
 
637
<tr><td align="left" valign="top"><a href="#Scores">1.5.2 Scores</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
638
</td></tr>
 
639
<tr><td align="left" valign="top"><a href="#Versions">1.5.3 Versions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
640
</td></tr>
 
641
<tr><td align="left" valign="top"><a href="#Private-Annotations-and-Ratings">1.5.4 Private Annotations and Ratings</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
642
</td></tr>
 
643
<tr><td align="left" valign="top"><a href="#Screenshots">1.5.5 Screenshots</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
644
</td></tr>
 
645
</table>
 
646
 
 
647
<hr size="6">
 
648
<a name="Public-Ratings"></a>
 
649
<table cellpadding="1" cellspacing="1" border="0">
 
650
<tr><td valign="middle" align="left">[<a href="#Level-Info" title="Previous section in reading order"> &lt; </a>]</td>
 
651
<td valign="middle" align="left">[<a href="#Scores" title="Next section in reading order"> &gt; </a>]</td>
 
652
<td valign="middle" align="left"> &nbsp; </td>
 
653
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
654
<td valign="middle" align="left">[<a href="#Level-Info" title="Up section"> Up </a>]</td>
 
655
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
656
<td valign="middle" align="left"> &nbsp; </td>
 
657
<td valign="middle" align="left"> &nbsp; </td>
 
658
<td valign="middle" align="left"> &nbsp; </td>
 
659
<td valign="middle" align="left"> &nbsp; </td>
 
660
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
661
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
662
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
663
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
664
</tr></table>
 
665
<a name="Public-Ratings-1"></a>
 
666
<h3 class="subsection">1.5.1 Public Ratings</h3>
 
667
 
 
668
<p>Most levels are rated within five different categories:
 
669
</p><ul>
 
670
<li>
 
671
int = Intelligence
 
672
 
 
673
</li><li>
 
674
dex = Dexterity
 
675
 
 
676
</li><li>
 
677
pat = Patience
 
678
 
 
679
</li><li>
 
680
kno = Knowledge of Enigma
 
681
 
 
682
</li><li>
 
683
spe = Speed and Speed control
 
684
 
 
685
</li></ul>
 
686
 
 
687
<p>To distinguish the ratings from their everyday-meanings, we use the following abbreviations for
 
688
the ratings. Each of these categories takes values between 1 (easy) and 5 (difficult), except kno,
 
689
which can also be 6 (unique mechanism).
 
690
</p>
 
691
<p>Please bear in mind that it&rsquo;s not simple to retain the
 
692
following definitions in each of nearly 750 cases, so there
 
693
might be (will be) deviations from them in single levels.
 
694
</p>
 
695
<p><strong>Intelligence (int)</strong>
 
696
</p>
 
697
<p>This rating is intended to measure the creativity, planning and analytic requirements needed to
 
698
solve the level. Intelligence is a very difficult concept in itself, and thus at first not easy to rate or
 
699
to grasp. Consequently, a fixed definition of the five rating-degrees not only helps, but is
 
700
essential in the rating process. So, assume you know everything about the single elements of a
 
701
level. Then ask yourself these questions:
 
702
</p><ul>
 
703
<li>
 
704
Can I see the solution at once? Yes -&gt; int 1
 
705
 
 
706
</li><li>
 
707
Do I only have to orient myself, for example, testing the exits of wormholes or to see the
 
708
function of a switch? -&gt; int 2
 
709
 
 
710
</li><li>
 
711
Is there a standard algorithm to solve the problem, like in a maze, or
 
712
searching for a hidden item? -&gt; int 3
 
713
 
 
714
</li><li>
 
715
Neither trial-and-error nor standard algorithms work; is it a simple
 
716
kind of code or does it require advance planning? -&gt; int 4
 
717
 
 
718
</li><li>
 
719
Is it a difficult code, pattern or causal chain? -&gt; int 5
 
720
 
 
721
</li></ul>
 
722
 
 
723
<p>High values for intelligence are typically puzzles.
 
724
int-ratings do not accumulate; the most difficult puzzle
 
725
itself already determines the rating.
 
726
</p>
 
727
<p><strong>Dexterity (dex)</strong>
 
728
</p>
 
729
<p>You can solve many levels either by accuracy or by patience. In our context, we do not mean
 
730
dexterity in the sense of accuracy to avoid impatience, but accuracy to avoid death. So it focuses
 
731
on the lethal positions in a level, not only death-stones and abysses, but also casualties like
 
732
pushing a stone accidentally into an unreachable corner.
 
733
</p>
 
734
<ul>
 
735
<li>
 
736
It doesn&rsquo;t matter what I touch, this level is damn-proof. -&gt; dex 1
 
737
 
 
738
</li><li>
 
739
Well, there are lethal positions I shouldn&rsquo;t move the level into, but
 
740
they are not difficult to overcome. -&gt; dex 2
 
741
 
 
742
</li><li>
 
743
Comparable to a single row with an abyss left and right. -&gt; dex 3
 
744
 
 
745
</li><li>
 
746
Comparable to pushing a stone to the right with an abyss on
 
747
the left, or a single row with death-stones left and right. -&gt;
 
748
dex 4
 
749
 
 
750
</li><li>
 
751
Needs lots of attempts to succeed. -&gt; dex 5
 
752
 
 
753
</li></ul>
 
754
 
 
755
<p>In contrast to the int-rating, dex might accumulate: A level with many situations,
 
756
each of dex 3, can add up to dex 4 or even 5. This way, you can achieve dex 5.
 
757
Rotors in a level also contribute to dex and to the
 
758
speed-rating, spe. Thus, levels with a high dex-spe-combination are
 
759
mostly action-driven, whereas a high dex-pat-combination typically is
 
760
a dangerous maze.
 
761
</p>
 
762
<p><strong>Patience (pat)</strong>
 
763
</p>
 
764
<p>Patience is a relatively subjective rating, and refers mostly to &ldquo;felt time&rdquo;, how long it felt to
 
765
complete the level. So two levels with same mechanics can have different pat-values, e.g., if one
 
766
level has a nicer design or shows the progress of the level in some way, like the number of
 
767
opened oxyds. It explicitly includes having to restart the level repeatedly; not the time in the
 
768
lower left corner or the score is crucial, but the complete &ldquo;felt time&rdquo; needed to solve the level,
 
769
starting from the first look at it.
 
770
</p><ul>
 
771
<li>
 
772
I solved the level right after understanding it. -&gt; pat 1
 
773
 
 
774
</li><li>
 
775
I needed some time, but it wasn&rsquo;t boring. -&gt; pat 2
 
776
 
 
777
</li><li>
 
778
Okay, it took some minutes, but the landscape is nice <small class="enddots">...</small> -&gt; pat 3
 
779
 
 
780
</li><li>
 
781
I know what to do, but it doesn&rsquo;t seem to end. -&gt; pat 4
 
782
 
 
783
</li><li>
 
784
This level really requires discipline. -&gt; pat 5
 
785
 
 
786
</li></ul>
 
787
 
 
788
<p>A high number of oxyds can heighten the pat-value and also lower it: If the player has to
 
789
traverse the level several times to open matching pairs of oxyds, it is definitely pat-heightening.
 
790
However, if oxyds are arranged to mark the progress of the player, and act as a kind of small
 
791
reward within the level, they can lower the pat-value. It&rsquo;s the same with a high number of doors:
 
792
The arrangement is the critical factor.
 
793
</p>
 
794
<p>High pat-values are typically mazes. In combination with int 3, a high
 
795
pat-value can indicate a hidden item or a hollow stone. pat-values
 
796
involve the whole level, so they can&rsquo;t accumulate.
 
797
</p>
 
798
<p><strong>Knowledge of Enigma (kno)</strong>
 
799
</p>
 
800
<p>The kno-rating mostly takes on the function and interactions of single
 
801
objects in the game, like stones, floors, items, and actors. However,
 
802
in some cases it also deals with special techniques. The guideline is
 
803
the &ldquo;Advanced Tutorial&rdquo;, which defines kno 3. kno 4 corresponds to
 
804
standard objects that aren&rsquo;t shown in the tutorial; kno 5 requires a
 
805
deeper knowledge of the game internals. Finally, kno 6 indicates
 
806
special mechanisms, that are seldom encountered or unique. The overall kno-rating
 
807
of a level equals that of the most difficult object or technique (and
 
808
thus is non-accumulative):
 
809
</p><ol>
 
810
<li>
 
811
Moving a single marble on normal floors, normal walls, oxyds,
 
812
stones that look like oxyds, death-stones, water, an abyss, documents,
 
813
using the inventory, static gravity, visible gradients.
 
814
 
 
815
</li><li>
 
816
Pushing stones, simple Sokoban-tricks, bridge-building in water
 
817
and an abyss, connected puzzle-stones, moving more than one marble,
 
818
meditations, grates, rotors and tops, hidden gradients, triggers and
 
819
switches, doors, holes (not made by dynamite), swamp, floppies and
 
820
st-floppy, keys and locks, coins and slots, cracks, timer-stones.
 
821
 
 
822
</li><li>
 
823
Different floors can have different fraction and mouseforce, space,
 
824
ice, inverted floor, some stones sink while others swim, black grates
 
825
that hold rotors and tops away, dynamite, dynamite-breakable stones,
 
826
spade, boulders, magic-wand to change boulder-direction, boulders sink
 
827
into an abyss, sheets of glass, spoon, actors and items may hide under
 
828
movable stones, small not-killer whiteballs, coloured one-way-streets,
 
829
actorimpulse-stones (&ldquo;bumpers&rdquo;), rotors can fly over an abyss,
 
830
quake-stones, swords and knights, lasers, static and movable mirrors,
 
831
item- and coin-transformations by pushing stones over them and by
 
832
using lasers, umbrellas protect in an abyss, hammer and breakable stones
 
833
(although not in the tutorial).
 
834
 
 
835
</li><li>
 
836
Bridge-building in swamps, rubber-bands, rubber-band-stones,
 
837
scissor-stones, unconnected puzzle-stones, exploding puzzle-stones,
 
838
turning puzzle-stones (with and without a magic wand), springs (both
 
839
types, on the floor and hole-kind springs like in &ldquo;Upstream
 
840
Journey&rdquo;), thieves, three-part shogun-stones, invisible stones,
 
841
hollow stones, chameleon-stones, items hidden under chameleon stones,
 
842
stones that aren&rsquo;t what they seem (e.g., fake-death-stones), wormholes,
 
843
magnets, using F3 for a restart to solve a level, yin-yangs,
 
844
one-color-, yin-yang- and inverted yin-yang-stones, stones breakable
 
845
by only one color, killer-balls, swap-stones, brush and paintable
 
846
stones, changing one-way-streets with a magic wand, changing stones to
 
847
glass with a magic wand, impulse-stones (movable, static and hollow),
 
848
black and white bombs, bomb-stones, fire, extinguishers,
 
849
rotator-stones, yellow anti-swapping stones, mines, flags, seeds,
 
850
weights, putting objects under one-way-streets and other hollow
 
851
stones, electric stones, turnstiles, mailing and pipes, rings (single
 
852
and multiplayer), volcanos, bags, randomizers (as possible effect of a
 
853
switch), horses (the actors) and horse-passing stones, pins, bananas, cherries
 
854
can make you invisible, surprise-item.
 
855
 
 
856
</li><li>
 
857
Cracks, floor-springs, wormholes, etc., are all items, seeds can grow
 
858
inside stones, the laser is blocked by all items, killer-balls don&rsquo;t sink
 
859
in water, &ldquo;Space Meditation&rdquo;-kind collisions, holding down the
 
860
mouse-button, invisibility lets you go through glass, jumping over
 
861
lasers <small class="enddots">...</small>
 
862
 
 
863
</li><li>
 
864
Spitter-stones, surprise-stones, levels like &ldquo;Enigris&rdquo; or &ldquo;Flood
 
865
Gates&rdquo; <small class="enddots">...</small>
 
866
 
 
867
</li></ol>
 
868
 
 
869
<p>kno 6 does not necessarily mean that this level is difficult to
 
870
understand; the unique mechanism or object might also be very
 
871
intuitive, like in &ldquo;Flood Gates&rdquo;.
 
872
</p>
 
873
<p><strong>Speed and speed control (spe)</strong>
 
874
</p>
 
875
<p>The spe-value corresponds not only to the maximum speed a level
 
876
requires (like you need to run away from a rotor), but also the
 
877
degree of control a player has over his mouse while moving it;
 
878
excellent examples for this are &ldquo;Mourning Palace&rdquo; and the middle
 
879
part of &ldquo;Sacrifice&rdquo;. This involves moving the mouse at a constant
 
880
velocity for a long time, as well as correctly estimating the speed
 
881
that&rsquo;s needed in a certain task, like shattering a sheet of glass.
 
882
</p>
 
883
<ol>
 
884
<li>
 
885
No time limit.
 
886
 
 
887
</li><li>
 
888
You shouldn&rsquo;t stop for too long. For example, something slow might
 
889
be chasing you.
 
890
 
 
891
</li><li>
 
892
There is an appropriate time limit or speed control task. This can
 
893
be a single, not-too-fast rotor in an open area.
 
894
 
 
895
</li><li>
 
896
Don&rsquo;t stop! Examples include difficult timing-tasks as well as a single
 
897
fast rotor or several slower ones.
 
898
 
 
899
</li><li>
 
900
Hurry Up! Whereas spe 4 is meant to be difficult, but obviously
 
901
solvable in not too many attempts, spe 5 is everything beyond this.
 
902
 
 
903
</li></ol>
 
904
 
 
905
<p>The spe-rating again is cumulative, since many slow rotors can add up
 
906
to spe 3 or 4, or a combination of many slow time-switches to be
 
907
pressed in a certain order can create a horrible task. In contrast to
 
908
the other categories, for which the average is near 3 (or between 3
 
909
and 4 for kno), most levels are definitely
 
910
spe 1. So, the spe-rating is more a supplement to the three
 
911
core-ratings int, dex and pat.
 
912
</p>
 
913
<p><strong>Combinations of ratings</strong>
 
914
</p>
 
915
<p>Sometimes, it can be interesting to have a single value to measure the difficulty of a level. To
 
916
calculate such a universal rating, a simple possibility is choosing a linear combination of the 5
 
917
single ratings, weighted with appropriate weights. These weights should correspond to the
 
918
difficulty a single category adds to the universal difficulty. Yet you should also choose these
 
919
weights carefully to avoid number-theoretic obstructions (e.g., when all weights are even except
 
920
for the spe-rating, then there will be a visible difference in the distribution of even and odd
 
921
universal ratings, which can be very misleading). A working, and very interesting linear
 
922
combination, is the following, which has been applied in the reordering process:
 
923
</p>
 
924
 
 
925
<table><tr><td>&nbsp;</td><td><pre class="example">universal difficulty  =  7*int + 6*dex + 4*pat + 3*kno + 4*spe - 23
 
926
</pre></td></tr></table>
 
927
 
 
928
<p>This has a special property, in that it takes relatively broad and continuously distributed values
 
929
between 1 (all ratings 1) and 100 (all ratings 5, kno 6) and emphasizes the most difficult
 
930
categories, intelligence and dexterity. However, some very low or very high values cannot
 
931
appear in this combination, such as 2 or 99. Other combinations lead to full but narrow, or to
 
932
broad but noncontinuous spectra.
 
933
</p>
 
934
<hr size="6">
 
935
<a name="Scores"></a>
 
936
<table cellpadding="1" cellspacing="1" border="0">
 
937
<tr><td valign="middle" align="left">[<a href="#Public-Ratings" title="Previous section in reading order"> &lt; </a>]</td>
 
938
<td valign="middle" align="left">[<a href="#Versions" title="Next section in reading order"> &gt; </a>]</td>
 
939
<td valign="middle" align="left"> &nbsp; </td>
 
940
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
941
<td valign="middle" align="left">[<a href="#Level-Info" title="Up section"> Up </a>]</td>
 
942
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
943
<td valign="middle" align="left"> &nbsp; </td>
 
944
<td valign="middle" align="left"> &nbsp; </td>
 
945
<td valign="middle" align="left"> &nbsp; </td>
 
946
<td valign="middle" align="left"> &nbsp; </td>
 
947
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
948
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
949
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
950
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
951
</tr></table>
 
952
<a name="Scores-1"></a>
 
953
<h3 class="subsection">1.5.2 Scores</h3>
 
954
 
 
955
<p>The score columns show your and some comparison values for the difficult and
 
956
for the easy mode, if the levels supports it.
 
957
</p>
 
958
<p>The world record is the best score that was retransmitted to the Enigma team.
 
959
The world record holders are listed below.
 
960
</p>
 
961
<p>The PAR value is the &ldquo;professional average rating&rdquo; of the level. It is the harmonic average of all
 
962
scores that Enigma players have retransmitted. However, we take into account only scores from
 
963
players who have solved a certain number of levels. Opposed to the world record, which will be
 
964
very difficult to gain, the PAR value is a much more realistic aim for an ambitious player. If you
 
965
are equal or better than PAR, the levels are marked with a speeding blackball within the level
 
966
menu.
 
967
</p>
 
968
<p>The author&rsquo;s value is another reference score. Most authors are not keen on holding the world
 
969
record of their own levels. However, they will likely know the fastest way to solve the level. If
 
970
your score is much higher than the author&rsquo;s score, a simpler solution to solve the level may
 
971
exist.
 
972
</p>
 
973
<p>The solved number is the number of players who solved this level in the given
 
974
score version.
 
975
</p>
 
976
<p>The solved percentage is the relation of the number of players who solved this
 
977
level to the number of players who retransmitted scores. Actually, we take into
 
978
account only those players who could have solved the level. For example, players
 
979
who did retransmit scores before the level was written, without updating
 
980
afterwards, are not taken into account. A low percentage is a hint that a level
 
981
is not easy to solve.
 
982
</p>
 
983
<hr size="6">
 
984
<a name="Versions"></a>
 
985
<table cellpadding="1" cellspacing="1" border="0">
 
986
<tr><td valign="middle" align="left">[<a href="#Scores" title="Previous section in reading order"> &lt; </a>]</td>
 
987
<td valign="middle" align="left">[<a href="#Private-Annotations-and-Ratings" title="Next section in reading order"> &gt; </a>]</td>
 
988
<td valign="middle" align="left"> &nbsp; </td>
 
989
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
990
<td valign="middle" align="left">[<a href="#Level-Info" title="Up section"> Up </a>]</td>
 
991
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
992
<td valign="middle" align="left"> &nbsp; </td>
 
993
<td valign="middle" align="left"> &nbsp; </td>
 
994
<td valign="middle" align="left"> &nbsp; </td>
 
995
<td valign="middle" align="left"> &nbsp; </td>
 
996
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
997
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
998
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
999
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
1000
</tr></table>
 
1001
<a name="Versions-1"></a>
 
1002
<h3 class="subsection">1.5.3 Versions</h3>
 
1003
 
 
1004
<p>The version column shows detailed information about the level. Read the chapter Level
 
1005
Basics node see section <a href="#g_t_003cversion_003e">&lt;version&gt;</a> and see section <a href="#g_t_003cmodes_003e">&lt;modes&gt;</a> for an explanation of the
 
1006
values.
 
1007
</p>
 
1008
<p>For you as a player, the &lsquo;<samp>Score</samp>&rsquo; version number can be interesting.
 
1009
A level you had solved with a certain score may appear with a red triangle in the level menu in
 
1010
an updated Enigma release of the level. Although the level menu displays the medals showing
 
1011
that you solved the level, it will not display the score values anymore. This is due to an
 
1012
incompatible level update that requires a new solution with different, incomparable score
 
1013
values. The author will increase the score version number in such a case.
 
1014
</p>
 
1015
<hr size="6">
 
1016
<a name="Private-Annotations-and-Ratings"></a>
 
1017
<table cellpadding="1" cellspacing="1" border="0">
 
1018
<tr><td valign="middle" align="left">[<a href="#Versions" title="Previous section in reading order"> &lt; </a>]</td>
 
1019
<td valign="middle" align="left">[<a href="#Screenshots" title="Next section in reading order"> &gt; </a>]</td>
 
1020
<td valign="middle" align="left"> &nbsp; </td>
 
1021
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
1022
<td valign="middle" align="left">[<a href="#Level-Info" title="Up section"> Up </a>]</td>
 
1023
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
1024
<td valign="middle" align="left"> &nbsp; </td>
 
1025
<td valign="middle" align="left"> &nbsp; </td>
 
1026
<td valign="middle" align="left"> &nbsp; </td>
 
1027
<td valign="middle" align="left"> &nbsp; </td>
 
1028
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
1029
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
1030
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
1031
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
1032
</tr></table>
 
1033
<a name="Private-Annotations-and-Ratings-1"></a>
 
1034
<h3 class="subsection">1.5.4 Private Annotations and Ratings</h3>
 
1035
 
 
1036
<p>This textfield allows you to enter an annotation for a level that you can review
 
1037
on later replays. Note that the current textfield is limited (it may not allow you to enter all
 
1038
characters, and needs the mouse cursor to remain within its boundaries). Yet it should work for
 
1039
entering short annotations that may be very useful later.
 
1040
</p>
 
1041
<p>Enigma stores annotations in your private applications &lsquo;<samp>state.xml</samp>&rsquo; file. It permits one
 
1042
annotation per level, independent of the level version.
 
1043
</p>
 
1044
<p>You may rate the levels, too. Just click on the ratings button. Values go from
 
1045
0 to 10 with an additional &lsquo;<samp>-</samp>&rsquo; for abstention. 0 stands for a poor level
 
1046
that you think is not worth playing, 5 for an average level and 10 for the
 
1047
ultimate, best levels. Try to use all values in your ratings.
 
1048
</p>
 
1049
<p>Enigma stores the ratings with the scores and evaluates them anonymously. Enigma displays
 
1050
the resulting average rating of all users, for your information. Note that different ratings are
 
1051
possible for different score versions of the same level, because levels may improve as a result of
 
1052
suggestions by users. If you do not re-rate a new version of a level, Enigma inherits your rating
 
1053
from a previous version.
 
1054
</p>
 
1055
<hr size="6">
 
1056
<a name="Screenshots"></a>
 
1057
<table cellpadding="1" cellspacing="1" border="0">
 
1058
<tr><td valign="middle" align="left">[<a href="#Private-Annotations-and-Ratings" title="Previous section in reading order"> &lt; </a>]</td>
 
1059
<td valign="middle" align="left">[<a href="#Handicap-and-PAR" title="Next section in reading order"> &gt; </a>]</td>
 
1060
<td valign="middle" align="left"> &nbsp; </td>
 
1061
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
1062
<td valign="middle" align="left">[<a href="#Level-Info" title="Up section"> Up </a>]</td>
 
1063
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
1064
<td valign="middle" align="left"> &nbsp; </td>
 
1065
<td valign="middle" align="left"> &nbsp; </td>
 
1066
<td valign="middle" align="left"> &nbsp; </td>
 
1067
<td valign="middle" align="left"> &nbsp; </td>
 
1068
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
1069
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
1070
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
1071
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
1072
</tr></table>
 
1073
<a name="Screenshots-1"></a>
 
1074
<h3 class="subsection">1.5.5 Screenshots</h3>
 
1075
 
 
1076
<p>While playing a level, you can make screenshots by pressing &lt;F10&gt;. You can make
 
1077
several screenshots in sequence for documentation purposes. Enigma will store each
 
1078
with a unique image filename. Using the level inspector, you can view the screenshots directly
 
1079
from within Enigma. Just click on the screenshot button to
 
1080
view the first image.
 
1081
</p>
 
1082
<p>Because any buttons would disturb the view of a screenshot, all functions are keyboard
 
1083
commands. Press &lt;F1&gt; to get a help screen. &lt;ESC&gt; returns to the level inspector.
 
1084
&lt;Page Up&gt; and &lt;Page Down&gt; will show the previous and next screenshot.
 
1085
If you scroll down behind the last screenshot, the &ldquo;missing&rdquo; screenshot file is named.
 
1086
This may be a useful hint as to where to search the other screenshot files on your
 
1087
&lsquo;<samp>user image path</samp>&rsquo; (see section <a href="#Locating-Resources">Locating Resources</a>).
 
1088
</p>
 
1089
<hr size="6">
 
1090
<a name="Handicap-and-PAR"></a>
 
1091
<table cellpadding="1" cellspacing="1" border="0">
 
1092
<tr><td valign="middle" align="left">[<a href="#Screenshots" title="Previous section in reading order"> &lt; </a>]</td>
 
1093
<td valign="middle" align="left">[<a href="#User-Sound-Sets" title="Next section in reading order"> &gt; </a>]</td>
 
1094
<td valign="middle" align="left"> &nbsp; </td>
 
1095
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
1096
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Up section"> Up </a>]</td>
 
1097
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
1098
<td valign="middle" align="left"> &nbsp; </td>
 
1099
<td valign="middle" align="left"> &nbsp; </td>
 
1100
<td valign="middle" align="left"> &nbsp; </td>
 
1101
<td valign="middle" align="left"> &nbsp; </td>
 
1102
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
1103
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
1104
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
1105
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
1106
</tr></table>
 
1107
<a name="Handicap-and-PAR-1"></a>
 
1108
<h2 class="section">1.6 Handicap and PAR</h2>
 
1109
 
 
1110
<p>As PAR (see section <a href="#Scores">Scores</a>) describes the difficulty of a level, the handicap &lsquo;<samp>hcp</samp>&rsquo;
 
1111
describes your ability to solve levels in PAR. The handicap is always related
 
1112
to a levelpack or group of levelpacks. You can see your handicap for each levelpack in the level
 
1113
menu, if you select the PAR mode by clicking on the lower
 
1114
left button until the speeding black marble appears. The value is displayed in
 
1115
the upper right corner, with the number of levels you solved in PAR.
 
1116
</p>
 
1117
<p>The handicap is similar to the golfer&rsquo;s handicap. A low value is better than a
 
1118
high value. If you solve all levels exactly in PAR, your handicap will be 0. If
 
1119
you are even better than PAR, your handicap will be negative. Players can use
 
1120
this value to compare their overall abilities.
 
1121
</p>
 
1122
<p>Just for those of you that want to know the details of this score rating system
 
1123
of PAR and handicap, here is some additional information, which others may skip and
 
1124
continue with the next chapter <a href="#Levelpack-Basics">Levelpack Basics</a>.
 
1125
</p>
 
1126
<p>We request all users to send their scores. All scores are evaluated for world
 
1127
records and counts of level solution rates and numbers.
 
1128
</p>
 
1129
<p>However, for the PAR calculation, we take into account only scores from users who have solved
 
1130
more than a certain percentage of levels (currently about 10% of the levels). For every level, we
 
1131
calculate the harmonic average of the scores of these
 
1132
&lsquo;<samp>professionals</samp>&rsquo;. We take professionals who did not solve a level into account with the
 
1133
10-fold world record score. The harmonic average calculates as
 
1134
</p>
 
1135
<p>harm.avg. = N / (sum_[j=1..N] 1/score_j) )
 
1136
</p>
 
1137
<p>It weights small (short) times with a greater weight than large (long) solution times.
 
1138
</p>
 
1139
<p>The handicap is a sum of values that describe your scores in relationship to the PAR value of a
 
1140
level. Since it has to take into account that you have no score at all or that no PAR value exists,
 
1141
we apply some exception rules to the addends:
 
1142
</p>
 
1143
<table>
 
1144
<tr><td width="10%">&bull;</td><td width="15%">+ 1.0</td><td width="75%">for each unsolved level</td></tr>
 
1145
<tr><td width="10%">&bull;</td><td width="15%">+ log10(score/par)</td><td width="75%">for each solved level with existing par if score &gt;= par</td></tr>
 
1146
<tr><td width="10%">&bull;</td><td width="15%">+ 0.7</td><td width="75%">as upper limit for each solved level with existing par if score &gt;= par</td></tr>
 
1147
<tr><td width="10%">&bull;</td><td width="15%">+ log2(score/par)</td><td width="75%">for each solved level with existing par if score &lt; par</td></tr>
 
1148
<tr><td width="10%">&bull;</td><td width="15%">- 3.0</td><td width="75%">as lower limit and as value for levels without par</td></tr>
 
1149
</table>
 
1150
 
 
1151
<p>Note that each score that is better than PAR results in a negative addend and
 
1152
thus reduces your handicap. For a levelpack with 100 levels, the handicap will
 
1153
be in the range of +100 to -300. For levelpacks with more or fewer levels, Enigma
 
1154
will scale the sum by a factor 100/size to result in comparable handicap values.
 
1155
Handicaps are stated with one digit behind the decimal point.
 
1156
</p>
 
1157
 
 
1158
<hr size="6">
 
1159
<a name="User-Sound-Sets"></a>
 
1160
<table cellpadding="1" cellspacing="1" border="0">
 
1161
<tr><td valign="middle" align="left">[<a href="#Handicap-and-PAR" title="Previous section in reading order"> &lt; </a>]</td>
 
1162
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Next section in reading order"> &gt; </a>]</td>
 
1163
<td valign="middle" align="left"> &nbsp; </td>
 
1164
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
1165
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Up section"> Up </a>]</td>
 
1166
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
1167
<td valign="middle" align="left"> &nbsp; </td>
 
1168
<td valign="middle" align="left"> &nbsp; </td>
 
1169
<td valign="middle" align="left"> &nbsp; </td>
 
1170
<td valign="middle" align="left"> &nbsp; </td>
 
1171
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
1172
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
1173
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
1174
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
1175
</tr></table>
 
1176
<a name="User-Sound-Sets-1"></a>
 
1177
<h2 class="section">1.7 User Sound Sets</h2>
 
1178
 
 
1179
<p>(The following information accounts only for Enigma 1.01 and above.)
 
1180
Sound effects are triggered by so-called &lsquo;<samp>sound events</samp>&rsquo;. These sound
 
1181
events usually have a name (like &lsquo;<samp>dooropen</samp>&rsquo;) and an associated location
 
1182
(the coordinates of the door) which affects the way a sound effect is
 
1183
played. The collection of all sound files, their assignment to sound events,
 
1184
and some additional information how to play them is called a &lsquo;<samp>sound set</samp>&rsquo;.
 
1185
</p>
 
1186
<p>You can use own sound files to create own sound sets for Enigma, and choose
 
1187
among them in the options menu (entry &lsquo;<samp>Sound set</samp>&rsquo;). You can distribute
 
1188
these sound sets under your own choice of license and install sound sets from
 
1189
other users. There is no internal limit for the number of installed sound sets.
 
1190
</p>
 
1191
<p>The sound event is converted into a real sound effect using tables, you can
 
1192
find such tables in the &lsquo;<samp>data/sound-defaults.lua</samp>&rsquo; file and in the empty
 
1193
sample file at &lsquo;<samp>reference/soundset.lua</samp>&rsquo;. Each entry in these tables is
 
1194
either a string like &lsquo;<samp>enigma/st-coinslot</samp>&rsquo;, which is interpreted as the
 
1195
file &lsquo;<samp>soundsets/enigma/st-coinslot.wav</samp>&rsquo; with some default properties, or a
 
1196
list of sound attributes enclosed in curly braces. Sound events triggered by a
 
1197
<a href="#sound">sound</a> message are converted the same way. Here is an example of such an
 
1198
entry:
 
1199
</p>
 
1200
<table><tr><td>&nbsp;</td><td><pre class="example">dooropen = { file=&quot;my_soundset/open-door&quot;, volume=0.9, priority=4 },
 
1201
</pre></td></tr></table>
 
1202
 
 
1203
<p>The meaning of these attributes is as follows:
 
1204
</p>
 
1205
<ul>
 
1206
<li> &lsquo;<samp>file</samp>&rsquo;
 
1207
Path and name of the sound file for this event, without the &lsquo;<samp>.wav</samp>&rsquo;
 
1208
extension.
 
1209
 
 
1210
</li><li> &lsquo;<samp>volume</samp>&rsquo;
 
1211
The sound volume: 1.0 is default, 0.0 is silent.
 
1212
 
 
1213
</li><li> &lsquo;<samp>priority</samp>&rsquo;
 
1214
If many effects are active at the same time, high-priority
 
1215
effects can replace lower-priority effects. Use an integer
 
1216
between 1 and 10 (default 1). This property does not yet
 
1217
work with Enigma 1.01.
 
1218
 
 
1219
</li><li> &lsquo;<samp>global</samp>&rsquo;
 
1220
Either &lsquo;<samp>true</samp>&rsquo; or &lsquo;<samp>false</samp>&rsquo;.  If true, no stereo effects are
 
1221
applied and there is no attenuation.  Used for menu sound,
 
1222
level end sounds, etc. Default is &lsquo;<samp>false</samp>&rsquo;.
 
1223
 
 
1224
</li><li> &lsquo;<samp>loop</samp>&rsquo;
 
1225
&lsquo;<samp>true</samp>&rsquo; or &lsquo;<samp>false</samp>&rsquo;. If true, the sound repeats infinitely
 
1226
until canceled. Default is &lsquo;<samp>false</samp>&rsquo;.
 
1227
 
 
1228
</li><li> &lsquo;<samp>damp_max</samp>&rsquo;, &lsquo;<samp>damp_inc</samp>&rsquo;, &lsquo;<samp>damp_mult</samp>&rsquo;, &lsquo;<samp>damp_min</samp>&rsquo;, &lsquo;<samp>damp_tick</samp>&rsquo;
 
1229
Parameters for sound damping.  Sounds from noisy objects like light passengers
 
1230
are damped to reduce the noise.  For this, the sound event&rsquo;s frequency is
 
1231
estimated.  &lsquo;<samp>damp_max</samp>&rsquo; calibrates the maximal damping factor (high means
 
1232
quiet), &lsquo;<samp>damp_inc</samp>&rsquo; how fast the damping accumulates, &lsquo;<samp>damp_mult</samp>&rsquo; is an
 
1233
overall factor, &lsquo;<samp>damp_min</samp>&rsquo; defines a lower bound for the damping entries
 
1234
(beyond which they are removed from memory) and &lsquo;<samp>damp_tick</samp>&rsquo; the factor
 
1235
that&rsquo;s applied all 0.1 seconds.  See &lsquo;<samp>sound.hh</samp>&rsquo; for details.
 
1236
Defaults: 10.0, 1.0, 1.0, 0.5, 0.9.
 
1237
 
 
1238
</li></ul>
 
1239
 
 
1240
<p>To design a new sound set, proceed as follows:
 
1241
</p>
 
1242
<ol>
 
1243
<li>
 
1244
Create a new folder containing a copy of the sample file &lsquo;<samp>soundset.lua</samp>&rsquo;
 
1245
and the wav files you want to use.
 
1246
 
 
1247
</li><li>
 
1248
Move this new folder into Enigma&rsquo;s &quot;soundsets&quot; folder in your user path.
 
1249
(Possibly you have to create it.) The directory structure should look
 
1250
something like this:
 
1251
 
 
1252
<table><tr><td>&nbsp;</td><td><pre class="example">(user path)/soundsets/my_sounds/
 
1253
                               /soundset.lua
 
1254
                               /high_pitch.wav
 
1255
                               /soundfile_13.wav
 
1256
                               ...
 
1257
</pre></td></tr></table>
 
1258
 
 
1259
</li><li>
 
1260
Run Enigma and choose &lsquo;<samp>My Soundset</samp>&rsquo; in the options menu.  Since this file&rsquo;s
 
1261
sound set does not map any sound effect to a wav file, you should hear nothing.
 
1262
 
 
1263
</li><li>
 
1264
Edit the contents of &lsquo;<samp>soundset.lua</samp>&rsquo; to your liking.  You can access the
 
1265
default sound files, e.g.:
 
1266
 
 
1267
<table><tr><td>&nbsp;</td><td><pre class="example">...
 
1268
coinsloton = { file=&quot;enigma/st-coinslot&quot; },
 
1269
...
 
1270
</pre></td></tr></table>
 
1271
 
 
1272
<p>When using own sound files, remember to add the subfolder, like in
 
1273
</p>
 
1274
<table><tr><td>&nbsp;</td><td><pre class="example">...
 
1275
coinsloton = { file=&quot;my_sounds/soundfile_13&quot; },
 
1276
...
 
1277
</pre></td></tr></table>
 
1278
 
 
1279
<p>No extension &quot;.wav&quot;! It&rsquo;s added automatically. Make sure that the
 
1280
extension is in lower case letters.
 
1281
</p>
 
1282
</li><li>
 
1283
Replace &lsquo;<samp>MY_SOUNDSET</samp>&rsquo; by a suitable variable name, and &lsquo;<samp>My Soundset</samp>&rsquo;
 
1284
by the name you want to see in the sound options menu.  Remember to
 
1285
make it short enough to fit on the button.  The three identifiers variable,
 
1286
button name, directory name need not have the same names, but it eases the life
 
1287
of other developers to give them similar names that uniquely determine the
 
1288
sound set.
 
1289
 
 
1290
</li></ol>
 
1291
 
 
1292
<p>Remember to choose the sound set in the options menu anew each time you change
 
1293
its name.  And always shut down Enigma before changing sound sets, new sounds
 
1294
are not recognized during runtime.
 
1295
</p>
 
1296
<p>Feel free to zip and distribute the whole directory containing your
 
1297
sounds and the &lsquo;<samp>soundset.lua</samp>&rsquo; file. You can install a downloaded zipped
 
1298
sound set simply by unpacking it and placing it into the
 
1299
&lsquo;<samp>soundsets</samp>&rsquo;-subdirectory of your user path. Make sure that the
 
1300
&lsquo;<samp>soundset.lua</samp>&rsquo; is always exactly one subdirectory below &lsquo;<samp>soundsets</samp>&rsquo;.
 
1301
Deinstall a user sound set simply by deleting its directory. Renaming the
 
1302
directory does not suffice &ndash; you have to rename the &lsquo;<samp>soundset.lua</samp>&rsquo; if you
 
1303
want to hide a sound set from Enigma. This can be advantageous if you use
 
1304
interdependent sound sets (sound sets that share sound files) and want to
 
1305
deactivate just one of them.
 
1306
</p>
 
1307
 
 
1308
<hr size="6">
 
1309
<a name="Levelpack-Basics"></a>
 
1310
<table cellpadding="1" cellspacing="1" border="0">
 
1311
<tr><td valign="middle" align="left">[<a href="#User-Sound-Sets" title="Previous section in reading order"> &lt; </a>]</td>
 
1312
<td valign="middle" align="left">[<a href="#Getting-Started-with-Levelpacks" title="Next section in reading order"> &gt; </a>]</td>
 
1313
<td valign="middle" align="left"> &nbsp; </td>
 
1314
<td valign="middle" align="left">[<a href="#Running-Enigma" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
1315
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
1316
<td valign="middle" align="left">[<a href="#Level-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
1317
<td valign="middle" align="left"> &nbsp; </td>
 
1318
<td valign="middle" align="left"> &nbsp; </td>
 
1319
<td valign="middle" align="left"> &nbsp; </td>
 
1320
<td valign="middle" align="left"> &nbsp; </td>
 
1321
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
1322
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
1323
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
1324
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
1325
</tr></table>
 
1326
<a name="Levelpack-Basics-1"></a>
 
1327
<h1 class="chapter">2. Levelpack Basics</h1>
 
1328
 
 
1329
<p>Knowing the basics of running Enigma, you may wonder how levels are organized in
 
1330
levelpacks and how you can add levels or complete levelpacks to Enigma.
 
1331
</p>
 
1332
<a name="index-crossreference"></a>
 
1333
<a name="index-crossindex"></a>
 
1334
<a name="index-levelpack"></a>
 
1335
<a name="index-index"></a>
 
1336
<p>Levelpacks are sorted collections of levels that consist of an index and optional
 
1337
attached level sources. Not all level sources of a levelpack have to be included
 
1338
within the levelpack itself. A levelpack can crossreference levels stored in
 
1339
other levelpacks. If a levelpack has no level sources of its own and consists only
 
1340
of crossreferences, we speak of a crossindex, since just a single index file represents the
 
1341
levelpack.
 
1342
</p>
 
1343
<p>These definitions suit all versions of Enigma well. However, up to Enigma 0.92, levelpacks
 
1344
needed to be manually edited, and the registration of levelpacks was a little bit cryptic. Thus, we
 
1345
decided to rewrite the complete levelpack system for Enigma 1.0, and tried to make it versatile
 
1346
and easy to use. We did set up the following aims:
 
1347
</p>
 
1348
<ul>
 
1349
<li>
 
1350
an &lsquo;<samp>Auto</samp>&rsquo; levelpack that allows level addition by drag and drop of the
 
1351
level source
 
1352
 
 
1353
</li><li>
 
1354
levelpack addition simply by copying the files to the userpath
 
1355
 
 
1356
</li><li>
 
1357
autodetection of all levelpacks without editing any registration files
 
1358
 
 
1359
</li><li>
 
1360
commandline-supplied levels as a standard levelpack
 
1361
 
 
1362
</li><li>
 
1363
a &lsquo;<samp>History</samp>&rsquo; levelpack with crossreferences of last-played levels
 
1364
 
 
1365
</li><li>
 
1366
level search results as a levelpack of crossreferences
 
1367
 
 
1368
</li><li>
 
1369
zipped levelpacks that are just archives of levelpack directories and their files
 
1370
 
 
1371
</li><li>
 
1372
grouping of levelpacks in the menu
 
1373
 
 
1374
</li><li>
 
1375
integrated composer to create and modify new levelpacks
 
1376
 
 
1377
</li><li>
 
1378
updates of levelpacks without updating Enigma itself
 
1379
 
 
1380
</li><li>
 
1381
automatic conversion of Enigma 0.92 levelpacks
 
1382
 
 
1383
</li></ul>
 
1384
 
 
1385
<p>Some of these features work seamlessly. You can use them immediately from the
 
1386
levelpack menu. For others, you may need to know where to place files. We will
 
1387
explain these details in the following sections:
 
1388
</p>
 
1389
<table class="menu" border="0" cellspacing="0">
 
1390
<tr><td align="left" valign="top"><a href="#Getting-Started-with-Levelpacks">2.1 Getting Started with Levelpacks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1391
</td></tr>
 
1392
<tr><td align="left" valign="top"><a href="#Converting-0_002e92-Levelpacks">2.2 Converting 0.92 Levelpacks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1393
</td></tr>
 
1394
<tr><td align="left" valign="top"><a href="#Zip-Levelpacks">2.3 Zip Levelpacks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1395
</td></tr>
 
1396
<tr><td align="left" valign="top"><a href="#Grouping-and-Sorting-Levelpacks">2.4 Grouping and Sorting Levelpacks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1397
</td></tr>
 
1398
<tr><td align="left" valign="top"><a href="#Creating-New-Levelpacks">2.5 Creating New Levelpacks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1399
</td></tr>
 
1400
<tr><td align="left" valign="top"><a href="#Modifying-and-Deleting-Levelpacks">2.6 Modifying and Deleting Levelpacks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1401
</td></tr>
 
1402
<tr><td align="left" valign="top"><a href="#Composing-Levelpacks">2.7 Composing Levelpacks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1403
</td></tr>
 
1404
</table>
 
1405
 
 
1406
<hr size="6">
 
1407
<a name="Getting-Started-with-Levelpacks"></a>
 
1408
<table cellpadding="1" cellspacing="1" border="0">
 
1409
<tr><td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Previous section in reading order"> &lt; </a>]</td>
 
1410
<td valign="middle" align="left">[<a href="#Converting-0_002e92-Levelpacks" title="Next section in reading order"> &gt; </a>]</td>
 
1411
<td valign="middle" align="left"> &nbsp; </td>
 
1412
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
1413
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Up section"> Up </a>]</td>
 
1414
<td valign="middle" align="left">[<a href="#Level-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
1415
<td valign="middle" align="left"> &nbsp; </td>
 
1416
<td valign="middle" align="left"> &nbsp; </td>
 
1417
<td valign="middle" align="left"> &nbsp; </td>
 
1418
<td valign="middle" align="left"> &nbsp; </td>
 
1419
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
1420
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
1421
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
1422
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
1423
</tr></table>
 
1424
<a name="Getting-Started-with-Levelpacks-1"></a>
 
1425
<h2 class="section">2.1 Getting Started with Levelpacks</h2>
 
1426
 
 
1427
<p>One of the outstanding features of Enigma is its extensibility by new levels.
 
1428
And the community of users usually provides us several new great levels every week.
 
1429
</p>
 
1430
<p>Adding a new level that you receive as an XML file is very simple. Locate the
 
1431
subdirectory &lsquo;<samp>levels/auto</samp>&rsquo; on your &lsquo;<samp>user path</samp>&rsquo; (see section <a href="#Locating-Resources">Locating Resources</a>).
 
1432
Just copy the level file to this folder and restart Enigma. The new level will be
 
1433
part of the &lsquo;<samp>Auto</samp>&rsquo; levelpack, and you can play it like any other level.
 
1434
</p>
 
1435
<p>Please note that Enigma displays erroneous or incompatible levels with an error icon in the level
 
1436
menu. Of course an attempt to run such a level will result in an error message. Look at the level
 
1437
metadata with the levelinspector
 
1438
(see section <a href="#Level-Info">Level Info</a>) to identify the required compatibility version, and contact
 
1439
the author via the address in case of level code errors.
 
1440
</p>
 
1441
<p>A second way to run new levels is to add the address of the level files to the
 
1442
commandline (see section <a href="#Startup-Switches">Startup Switches</a>). This way you can play levels that are stored
 
1443
anywhere, and you may even use url addresses of levels stored on the internet. Levels added to
 
1444
the commandline are accessible via the &lsquo;<samp>Startup Levels</samp>&rsquo;
 
1445
levelpack.
 
1446
</p>
 
1447
<p>If you want to run an old-fashioned Lua level that someone wrote for Enigma 0.92 or earlier,
 
1448
you may try to start it via the commandline. These old levels miss necessary metadata for auto
 
1449
detection. However, commandline-supplied levels are treated as temporary levels available just
 
1450
for a single run of Enigma; reasonable defaults substitute the missing data. The level will
 
1451
probably run, but scoring and copy, paste and linking of such levels is not possible.
 
1452
</p>
 
1453
<p>Besides single new levels, the community may provide you with complete levelpacks, too. These
 
1454
levelpacks may occur as directories with levels, zip archives or single XML files. You can install
 
1455
all of them simply by copying the files, but we have to distinguish the three formats.
 
1456
</p>
 
1457
<p>You must copy levelpacks distributed as directories, with level files and an index file in them, to
 
1458
the subdirectory &lsquo;<samp>levels</samp>&rsquo; on your &lsquo;<samp>user path</samp>&rsquo;
 
1459
(see section <a href="#Locating-Resources">Locating Resources</a>).
 
1460
</p>
 
1461
<p>You must copy levelpacks distributed as zip archives to the subdirectory
 
1462
&lsquo;<samp>levels</samp>&rsquo; on your &lsquo;<samp>user path</samp>&rsquo;. You do not need to unpack the zip,
 
1463
although it is possible, as described in the section <a href="#Zip-Levelpacks">Zip Levelpacks</a>.
 
1464
</p>
 
1465
<p>You must copy levelpacks that are distributed as a single XML index file to the subdirectory
 
1466
&lsquo;<samp>levels/cross</samp>&rsquo; on your &lsquo;<samp>user path</samp>&rsquo;.
 
1467
</p>
 
1468
<p>All new levelpacks should be accessible via the levelpack
 
1469
menu after restarting Enigma.
 
1470
</p>
 
1471
<p>That is all you need to know to be able to add new levels and levelpacks for
 
1472
testing and playing. If your main interest lies in writing your own levels, you may
 
1473
want to proceed directly to chapter <a href="#Level-Basics">Level Basics</a>. The rest of this chapter
 
1474
explains how to arrange and sort existing levels in your own levelpacks.
 
1475
</p>
 
1476
<hr size="6">
 
1477
<a name="Converting-0_002e92-Levelpacks"></a>
 
1478
<table cellpadding="1" cellspacing="1" border="0">
 
1479
<tr><td valign="middle" align="left">[<a href="#Getting-Started-with-Levelpacks" title="Previous section in reading order"> &lt; </a>]</td>
 
1480
<td valign="middle" align="left">[<a href="#Zip-Levelpacks" title="Next section in reading order"> &gt; </a>]</td>
 
1481
<td valign="middle" align="left"> &nbsp; </td>
 
1482
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
1483
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Up section"> Up </a>]</td>
 
1484
<td valign="middle" align="left">[<a href="#Level-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
1485
<td valign="middle" align="left"> &nbsp; </td>
 
1486
<td valign="middle" align="left"> &nbsp; </td>
 
1487
<td valign="middle" align="left"> &nbsp; </td>
 
1488
<td valign="middle" align="left"> &nbsp; </td>
 
1489
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
1490
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
1491
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
1492
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
1493
</tr></table>
 
1494
<a name="Converting-0_002e92-Levelpacks-1"></a>
 
1495
<h2 class="section">2.2 Converting 0.92 Levelpacks</h2>
 
1496
 
 
1497
<p>With the changes of the levelpack index format, converting old levelpacks is necessary. Although
 
1498
the main work is done automatically just by starting Enigma, a few special cases remain that
 
1499
need manual preparation. Further on, after the autoconversion, some cleanup may be useful.
 
1500
</p>
 
1501
<p>If you formerly maintained your levelpacks within the Enigma system levels directory, you
 
1502
should now copy your own levelpacks from the old Enigma version to the &lsquo;<samp>user path</samp>&rsquo;
 
1503
subdir &lsquo;<samp>levels</samp>&rsquo; (see section <a href="#Locating-Resources">Locating Resources</a>). The &lsquo;<samp>user path</samp>&rsquo; exists on all
 
1504
systems, and since Enigma 1.00 will never write to the system levels directory, it will perform
 
1505
updates and conversions only on the &lsquo;<samp>user path</samp>&rsquo;. If you
 
1506
registered your levelpacks on the system levels directory within the &lsquo;<samp>index.lua</samp>&rsquo;
 
1507
file, you need to copy these registration lines to the &lsquo;<samp>index_user.lua</samp>&rsquo; file,
 
1508
which you should store on your &lsquo;<samp>user path</samp>&rsquo;.
 
1509
</p>
 
1510
<p>If you maintained several of your own levelpacks, Enigma 0.92 allowed you to keep them
 
1511
in several subdirectories of the &lsquo;<samp>levels</samp>&rsquo; directory. However, since it also allowed you to
 
1512
keep all level files and different indices in the &lsquo;<samp>levels</samp>&rsquo; directory
 
1513
itself, you will run into trouble with the auto conversion, because Enigma 1.00 allows only one
 
1514
levelpack with attached level files per directory.
 
1515
In this case, we recommend a step-by-step conversion: in every step, provide only one old index
 
1516
for conversion. Enigma will convert this index to a new &lsquo;<samp>index.xml</samp>&rsquo;.
 
1517
Move this new index, together with all levels, to a subdirectory and convert the
 
1518
next levelpack.
 
1519
</p>
 
1520
<p>A last special case occurs if you had an old index stored in &lsquo;<samp>levels</samp>&rsquo; that
 
1521
referenced level files in different subdirectories of &lsquo;<samp>levels</samp>&rsquo;. Since Enigma 0.92 did not
 
1522
have a concept of cross-references, and Enigma 1.00 requires that you store all level files
 
1523
attached to a levelpack in a single subdirectory, the conversion algorithm needs to guess the
 
1524
correct subdirectory. It simply takes the subdirectory of the first level. If this does not fit, you
 
1525
may need to clean up your 0.92 levelpack prior to conversion.
 
1526
</p>
 
1527
<p>Enigma should convert all other standard levelpacks without problems. It only performs the
 
1528
conversion once. As soon as the new &lsquo;<samp>index.xml</samp>&rsquo; exists, only this
 
1529
index is used. Thus, after a careful check, you may remove the old &lsquo;<samp>index.txt</samp>&rsquo;.
 
1530
We recommend keeping a backup of the old index until you have completely switched to
 
1531
Enigma 1.00.
 
1532
</p>
 
1533
<p>If you used a levelpack of your own in the zip format, you will find a subdirectory named with
 
1534
the base name of the zip archive in your user &lsquo;<samp>levels</samp>&rsquo;
 
1535
directory. Enigma stores the converted &lsquo;<samp>index.xml</samp>&rsquo; within this directory. You
 
1536
may want to exchange the old &lsquo;<samp>index.txt</samp>&rsquo; in the zip with the new index.
 
1537
Afterwards you can delete the subdirectory, since Enigma will load the index directly
 
1538
from the zip archive.
 
1539
</p>
 
1540
<p>After converting your levelpacks, we strongly recommend that you update your own
 
1541
levels to the new XML format, as described in <a href="#Level-Basics">Level Basics</a>.
 
1542
</p>
 
1543
<hr size="6">
 
1544
<a name="Zip-Levelpacks"></a>
 
1545
<table cellpadding="1" cellspacing="1" border="0">
 
1546
<tr><td valign="middle" align="left">[<a href="#Converting-0_002e92-Levelpacks" title="Previous section in reading order"> &lt; </a>]</td>
 
1547
<td valign="middle" align="left">[<a href="#Grouping-and-Sorting-Levelpacks" title="Next section in reading order"> &gt; </a>]</td>
 
1548
<td valign="middle" align="left"> &nbsp; </td>
 
1549
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
1550
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Up section"> Up </a>]</td>
 
1551
<td valign="middle" align="left">[<a href="#Level-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
1552
<td valign="middle" align="left"> &nbsp; </td>
 
1553
<td valign="middle" align="left"> &nbsp; </td>
 
1554
<td valign="middle" align="left"> &nbsp; </td>
 
1555
<td valign="middle" align="left"> &nbsp; </td>
 
1556
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
1557
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
1558
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
1559
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
1560
</tr></table>
 
1561
<a name="Zip-Levelpacks-1"></a>
 
1562
<h2 class="section">2.3 Zip Levelpacks</h2>
 
1563
 
 
1564
<p>Besides the classic levelpack format of a subdirectory of &lsquo;<samp>levels</samp>&rsquo; with
 
1565
an &lsquo;<samp>index.xml</samp>&rsquo; and several level files, Enigma 1.00 provides a compatible
 
1566
zip archive format. This zip allows you to reduce resources and to ease distribution
 
1567
of levelpacks.
 
1568
</p>
 
1569
<p>The compatibility is 100%. If you have a classic subdirectory levelpack, you
 
1570
can simply zip the complete subdirectory and name the zip with the name of the
 
1571
subdirectory, plus the standard &lsquo;<samp>.zip</samp>&rsquo; suffix. Now you can completely remove the
 
1572
subdirectory; Enigma autodetects the levelpack and it is fully playable. Even cross-references
 
1573
into this levelpack will not be broken!
 
1574
</p>
 
1575
<p>On the other hand, Enigma allows you to expand every zip levelpack to a subdirectory with
 
1576
index and level files. Again, everything runs and no cross-references are broken.
 
1577
</p>
 
1578
<p>If you keep both, the files contained in the subdirectory precede files in the zip
 
1579
archive. Thus, Enigma stores updates of single files in subdirectories in parallel
 
1580
to existing zip archives.
 
1581
</p>
 
1582
<hr size="6">
 
1583
<a name="Grouping-and-Sorting-Levelpacks"></a>
 
1584
<table cellpadding="1" cellspacing="1" border="0">
 
1585
<tr><td valign="middle" align="left">[<a href="#Zip-Levelpacks" title="Previous section in reading order"> &lt; </a>]</td>
 
1586
<td valign="middle" align="left">[<a href="#Creating-New-Levelpacks" title="Next section in reading order"> &gt; </a>]</td>
 
1587
<td valign="middle" align="left"> &nbsp; </td>
 
1588
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
1589
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Up section"> Up </a>]</td>
 
1590
<td valign="middle" align="left">[<a href="#Level-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
1591
<td valign="middle" align="left"> &nbsp; </td>
 
1592
<td valign="middle" align="left"> &nbsp; </td>
 
1593
<td valign="middle" align="left"> &nbsp; </td>
 
1594
<td valign="middle" align="left"> &nbsp; </td>
 
1595
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
1596
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
1597
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
1598
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
1599
</tr></table>
 
1600
<a name="Grouping-and-Sorting-Levelpacks-1"></a>
 
1601
<h2 class="section">2.4 Grouping and Sorting Levelpacks</h2>
 
1602
 
 
1603
<p>As the number of levelpacks increased, it became necessary to sort and group the
 
1604
levelpacks in the menu. We tried to provide a useful set of default groups
 
1605
and default assignment of the distributed levelpacks to these groups:
 
1606
</p>
 
1607
<ul>
 
1608
<li>
 
1609
<b>Enigma</b> - levels that are written just for Enigma
 
1610
 
 
1611
</li><li>
 
1612
<b>D&eacute;j&agrave;-vu</b> - levels that you may have seen before
 
1613
 
 
1614
</li><li>
 
1615
<b>Sokoban</b>
 
1616
 
 
1617
</li><li>
 
1618
<b>Facets</b> - special sortings and views of the levels above
 
1619
 
 
1620
</li><li>
 
1621
<b>User</b> - personal levels and levelpacks like History, Autofolder generated by the
 
1622
system for the user.
 
1623
 
 
1624
</li><li>
 
1625
<b>Development</b> - templates and unfinished levels from the Enigma Team
 
1626
 
 
1627
</li><li>
 
1628
<b>All Packs</b>
 
1629
 
 
1630
</li></ul>
 
1631
 
 
1632
<p>Still, this is just a proposal. You are free to rename the groups, add new groups and change the
 
1633
assignments of the levelpacks. As in other parts of Enigma, you can right or control click on the
 
1634
group and levelpack buttons.
 
1635
</p>
 
1636
<p>The group configuration menu allows you to rename and reposition a group. You
 
1637
can choose any name that is not a duplicate, that is not enclosed in square brackets
 
1638
and differs from &lsquo;<samp>Every Group</samp>&rsquo;. Note that you may not be able to enter as many
 
1639
characters as you are used to. Sorry for this inconvenience.
 
1640
</p>
 
1641
<p>The levelpack configuration menu allows you to assign a pack to a group. The
 
1642
group list contains two special entries: &lsquo;<samp>[Every Group]</samp>&rsquo; and another name
 
1643
enclosed in square brackets. Selecting the first pseudogroup displays the levelpack in every
 
1644
group. This is the default assignment of the &lsquo;<samp>Startup Levels</samp>&rsquo; group. The second square
 
1645
bracket-enclosed name is the default group of the
 
1646
levelpack itself. It is a hint for you and allows you to reassign a levelpack
 
1647
to the default group even if meanwhile you have deleted the group.
 
1648
</p>
 
1649
<hr size="6">
 
1650
<a name="Creating-New-Levelpacks"></a>
 
1651
<table cellpadding="1" cellspacing="1" border="0">
 
1652
<tr><td valign="middle" align="left">[<a href="#Grouping-and-Sorting-Levelpacks" title="Previous section in reading order"> &lt; </a>]</td>
 
1653
<td valign="middle" align="left">[<a href="#Modifying-and-Deleting-Levelpacks" title="Next section in reading order"> &gt; </a>]</td>
 
1654
<td valign="middle" align="left"> &nbsp; </td>
 
1655
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
1656
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Up section"> Up </a>]</td>
 
1657
<td valign="middle" align="left">[<a href="#Level-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
1658
<td valign="middle" align="left"> &nbsp; </td>
 
1659
<td valign="middle" align="left"> &nbsp; </td>
 
1660
<td valign="middle" align="left"> &nbsp; </td>
 
1661
<td valign="middle" align="left"> &nbsp; </td>
 
1662
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
1663
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
1664
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
1665
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
1666
</tr></table>
 
1667
<a name="Creating-New-Levelpacks-1"></a>
 
1668
<h2 class="section">2.5 Creating New Levelpacks</h2>
 
1669
 
 
1670
<p>To create a new levelpack, you simply select the group to which you want to add
 
1671
the new pack. This is most likely the &lsquo;<samp>User</samp>&rsquo; group. Right or ctrl click on
 
1672
the group and simply click on the &lsquo;<samp>New Levelpack</samp>&rsquo; button. Enigma will call the
 
1673
levelpack configuration menu, which allows you to enter all the important data for the creation
 
1674
of a levelpack.
 
1675
</p>
 
1676
<p>First you should enter a name for the levelpack. You are limited to characters
 
1677
that can be used for filenames, too. You may use alphanumerical characters A-Z, a-z, 0-9 and
 
1678
space, underscore and hyphen. Note that you may rename the pack
 
1679
later for a better or more suitable display name (see section <a href="#Modifying-and-Deleting-Levelpacks">Modifying and Deleting Levelpacks</a>).
 
1680
</p>
 
1681
<p>Later, you should decide whether you want a levelpack that can contain level
 
1682
sources or just a crossreference levelpack. The first one is useful for storing
 
1683
your own self-written levels or levels that you download from the internet.
 
1684
You may use the crossreference levelpacks for your favorite collections, where you simply
 
1685
reference existing levels of other levelpacks with your own personal sorting.
 
1686
You set the selected type with the &lsquo;<samp>Level types</samp>&rsquo; button, which uses symbols
 
1687
for references and carbon copies.
 
1688
</p>
 
1689
<p>The &lsquo;<samp>Default Location</samp>&rsquo; is a number that determines the sorting location
 
1690
within levelpack groups, if you have not resorted the levelpack manually
 
1691
(see section <a href="#Grouping-and-Sorting-Levelpacks">Grouping and Sorting Levelpacks</a>). This default value is relevant only
 
1692
if you distribute your levelpack and want to ensure that the users will find
 
1693
your levelpack at a proper location. The value given after creating a new
 
1694
levelpack should work well in most circumstances.
 
1695
</p>
 
1696
<p>You may declare yourself as owner or creator of the levelpack. This is just a
 
1697
string for identification purposes.
 
1698
</p>
 
1699
<p>Finally, when you have completed the configuration, you can create the levelpack by
 
1700
clicking &lsquo;<samp>OK</samp>&rsquo;. Enigma will create the levelpack on your &lsquo;<samp>userpath</samp>&rsquo;
 
1701
(see section <a href="#Locating-Resources">Locating Resources</a>).
 
1702
</p>
 
1703
<p>If you decide not to create a new levelpack, just click &lsquo;<samp>Undo</samp>&rsquo;. Enigma will not create or
 
1704
change anything in this case.
 
1705
</p>
 
1706
<p>If you want to set up the new levelpack immediately, you can click directly on
 
1707
&lsquo;<samp>Compose Pack</samp>&rsquo;. Enigma will create the levelpack, and you can use the composer to fill
 
1708
it with levels.
 
1709
</p>
 
1710
<hr size="6">
 
1711
<a name="Modifying-and-Deleting-Levelpacks"></a>
 
1712
<table cellpadding="1" cellspacing="1" border="0">
 
1713
<tr><td valign="middle" align="left">[<a href="#Creating-New-Levelpacks" title="Previous section in reading order"> &lt; </a>]</td>
 
1714
<td valign="middle" align="left">[<a href="#Composing-Levelpacks" title="Next section in reading order"> &gt; </a>]</td>
 
1715
<td valign="middle" align="left"> &nbsp; </td>
 
1716
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
1717
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Up section"> Up </a>]</td>
 
1718
<td valign="middle" align="left">[<a href="#Level-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
1719
<td valign="middle" align="left"> &nbsp; </td>
 
1720
<td valign="middle" align="left"> &nbsp; </td>
 
1721
<td valign="middle" align="left"> &nbsp; </td>
 
1722
<td valign="middle" align="left"> &nbsp; </td>
 
1723
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
1724
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
1725
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
1726
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
1727
</tr></table>
 
1728
<a name="Modifying-and-Deleting-Levelpacks-1"></a>
 
1729
<h2 class="section">2.6 Modifying and Deleting Levelpacks</h2>
 
1730
 
 
1731
<p>To modify a levelpack, right or ctrl click on its button in the levelpack menu.
 
1732
You will see the metadata for all levelpacks. However, an &lsquo;<samp>Edit Metadata</samp>&rsquo; button will
 
1733
appear only for your own levelpacks, which Enigma stores on your &lsquo;<samp>userpath</samp>&rsquo;.
 
1734
Clicking on it allows you to edit the metadata.
 
1735
</p>
 
1736
<p>Renaming the levelpack is possible, but Enigma will not change the filenames anymore. It will
 
1737
use the new name as the logical levelpack name that shows up in Enigma.
 
1738
</p>
 
1739
<p>Other attributes that you can modify include the &lsquo;<samp>Default Location</samp>&rsquo; and the
 
1740
&lsquo;<samp>Owner</samp>&rsquo;.
 
1741
</p>
 
1742
<p>Note that changing the levelpack type later is not possible. You must create a new levelpack of
 
1743
the proper type and copy the levels by using
 
1744
<a href="#Composing-Levelpacks">Composing Levelpacks</a>.
 
1745
</p>
 
1746
<p>We do not provide a levelpack deletion function to avoid unintended loss of levelsources.
 
1747
Still, the deletion of a levelpack is as simple as deleting the complete levelpack
 
1748
directory on your &lsquo;<samp>userpath</samp>&rsquo;. For crossreference levelpacks, you simply need to
 
1749
delete the index XML file on the &lsquo;<samp>levels/cross</samp>&rsquo; subdirectory of your
 
1750
&lsquo;<samp>userpath</samp>&rsquo;.
 
1751
</p>
 
1752
<hr size="6">
 
1753
<a name="Composing-Levelpacks"></a>
 
1754
<table cellpadding="1" cellspacing="1" border="0">
 
1755
<tr><td valign="middle" align="left">[<a href="#Modifying-and-Deleting-Levelpacks" title="Previous section in reading order"> &lt; </a>]</td>
 
1756
<td valign="middle" align="left">[<a href="#Level-Basics" title="Next section in reading order"> &gt; </a>]</td>
 
1757
<td valign="middle" align="left"> &nbsp; </td>
 
1758
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
1759
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Up section"> Up </a>]</td>
 
1760
<td valign="middle" align="left">[<a href="#Level-Basics" title="Next chapter"> &gt;&gt; </a>]</td>
 
1761
<td valign="middle" align="left"> &nbsp; </td>
 
1762
<td valign="middle" align="left"> &nbsp; </td>
 
1763
<td valign="middle" align="left"> &nbsp; </td>
 
1764
<td valign="middle" align="left"> &nbsp; </td>
 
1765
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
1766
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
1767
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
1768
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
1769
</tr></table>
 
1770
<a name="Composing-Levelpacks-1"></a>
 
1771
<h2 class="section">2.7 Composing Levelpacks</h2>
 
1772
 
 
1773
<p>You can change the levels of a levelpack by using the levelpack composer. You call it
 
1774
by right or ctrl clicking on the levelpack button in the levelpack menu, then
 
1775
clicking on the &lsquo;<samp>Compose Pack</samp>&rsquo; button in the levelpack configuration menu.
 
1776
</p>
 
1777
<p>The composer looks similar to the levelmenu, but it provides other functionality. Enigma lists
 
1778
all commands in the F1 help menu. First, if you compose your own levelpacks, you may note
 
1779
that the levels are bordered red. This is a warning, since you can modify these levelpacks.
 
1780
System levelpacks (the distributed Enigma levelpacks) will border the levels in gray, since you
 
1781
can use the composer only for copying levels to the clipboard.
 
1782
</p>
 
1783
<p>The clipboard allows you to select levels in one or several levelpacks and to
 
1784
insert these levels as reference or as copy to your own levelpacks. First, clear
 
1785
the clipboard by &lsquo;<samp>Shift delete</samp>&rsquo;. Then select any levelpack you want from within the
 
1786
composer levels. Add them by &lsquo;<samp>Shift click</samp>&rsquo;. They will appear
 
1787
in the upper text lines in the composer. Return to the levelpack where you want
 
1788
to add the levels. Select the level behind which you want to add the levels. Use
 
1789
&lsquo;<samp>F8</samp>&rsquo; to insert the levels of the clipboard as references. If you edit a
 
1790
levelpack that can take level copies, you may use &lsquo;<samp>F9</samp>&rsquo; to insert the levels
 
1791
of the clipboard as file copies.
 
1792
</p>
 
1793
<p>As soon as you modify the levelpack, a small red triangle in the upper left corner
 
1794
signals the modification. Leaving the composer via the &lsquo;<samp>OK</samp>&rsquo; button finalizes all
 
1795
changes. Leaving the composer via the&lsquo;<samp>Undo</samp>&rsquo; button reverts all changes.
 
1796
</p>
 
1797
<p>Besides adding levels, you can delete levels by using the &lsquo;<samp>delete</samp>&rsquo;
 
1798
button. Note that Enigma will delete the level files themselves if you delete a level
 
1799
that is not just a reference. Be careful with all levels that have the document
 
1800
icon on their preview. You can revert deletions with the &lsquo;<samp>Undo</samp>&rsquo; button.
 
1801
</p>
 
1802
<p>You can resort all levels with the &lsquo;<samp>alt left arrow</samp>&rsquo; and &lsquo;<samp>alt right arrow</samp>&rsquo;.
 
1803
The new sorting appears immediately, and you can save it by using the &lsquo;<samp>OK</samp>&rsquo; button.
 
1804
</p>
 
1805
<p>You can use the &lsquo;<samp>F5</samp>&rsquo; button to update the index from the levels. This is very useful if
 
1806
you edit levels yourself. The levelpack will notice changes in title, revision, easy mode support
 
1807
etc. Enigma updates all levels of the levelpack at once.
 
1808
</p>
 
1809
<p>By using the Auto levelpack and the composer, you can set up levelpacks of your own levels, as
 
1810
follows: Create a new levelpack, add the level files to the &lsquo;<samp>auto</samp>&rsquo;
 
1811
folder, restart Enigma, add the levels from the &lsquo;<samp>auto</samp>&rsquo; folder to the clipboard,
 
1812
use the composer to insert the levelpack to your levelpack as a copy, and delete the
 
1813
unused level file copies from the &lsquo;<samp>auto</samp>&rsquo; folder.
 
1814
</p>
 
1815
 
 
1816
<hr size="6">
 
1817
<a name="Level-Basics"></a>
 
1818
<table cellpadding="1" cellspacing="1" border="0">
 
1819
<tr><td valign="middle" align="left">[<a href="#Composing-Levelpacks" title="Previous section in reading order"> &lt; </a>]</td>
 
1820
<td valign="middle" align="left">[<a href="#Getting-Started-with-Levels" title="Next section in reading order"> &gt; </a>]</td>
 
1821
<td valign="middle" align="left"> &nbsp; </td>
 
1822
<td valign="middle" align="left">[<a href="#Levelpack-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
1823
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
1824
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
1825
<td valign="middle" align="left"> &nbsp; </td>
 
1826
<td valign="middle" align="left"> &nbsp; </td>
 
1827
<td valign="middle" align="left"> &nbsp; </td>
 
1828
<td valign="middle" align="left"> &nbsp; </td>
 
1829
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
1830
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
1831
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
1832
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
1833
</tr></table>
 
1834
<a name="Level-Basics-1"></a>
 
1835
<h1 class="chapter">3. Level Basics</h1>
 
1836
 
 
1837
<p>Now that you have played some levels of Enigma, you may have noticed that Enigma is quite a
 
1838
dynamic game with versatile levels. Thus, it is not astonishing that it is impossible to describe
 
1839
such levels with a static approach of a simple object map like Sokoban. Some levels, like mazes,
 
1840
generate their layout and look different each time you play them. Other levels provide a dynamic
 
1841
behavior during the play; i.e., switches may open doors only in certain circumstances. To
 
1842
comply with these demands, we have integrated the powerful lightweight C extension language
 
1843
<a href="http://www.lua.org">Lua</a> as of version 5.1.4 into Enigma.
 
1844
</p>
 
1845
<p>Up to Enigma 0.92, two different level formats did exist. One was a XML-like format, primarily
 
1846
designed for external level editor programs. Because its static object map description part was
 
1847
inconvenient for manual editing, many authors never used it. The second format was plain Lua
 
1848
code that used an interface of Enigma Lua functions to add objects and callback functions.
 
1849
Nearly all authors used this second format, but it had a small drawback:
 
1850
you could store metadata for the level (like the author name, license info, and last but not least,
 
1851
the level name itself) only as unformatted Lua comments, and you had
 
1852
to reinsert it manually into the level-package indices.
 
1853
</p>
 
1854
<p>With the post-0.92 XMLification of Enigma, we achieved full XML support by integrating
 
1855
Apache Xerces, and were wondering how to get rid of the old level format drawbacks and how to
 
1856
add some compelling new features:
 
1857
</p>
 
1858
<ul>
 
1859
<li>
 
1860
a single format with optional parts - use only those parts you need
 
1861
 
 
1862
</li><li>
 
1863
no major changes or any limitations for Lua level authors
 
1864
 
 
1865
</li><li>
 
1866
keep all author-supplied metadata in the level
 
1867
 
 
1868
</li><li>
 
1869
enable plug &amp; play for users - copy the level from the author and play it
 
1870
without manual index edition
 
1871
 
 
1872
</li><li>
 
1873
support of various encodings, such as US-ASCII, UTF-8, UTF-16, Windows-1252
 
1874
 
 
1875
</li><li>
 
1876
internationalization of levels - allow authors to add strings in their native
 
1877
language and supply translators with all translatable level strings and comments
 
1878
from the authors&rsquo; how-to-translate.
 
1879
 
 
1880
</li><li>
 
1881
add a release and dependency management for levels and libraries
 
1882
 
 
1883
</li><li>
 
1884
add level update and upgrade support for levels and libraries
 
1885
 
 
1886
</li><li>
 
1887
substitute the old XML format with a versatile editor interface
 
1888
 
 
1889
</li><li>
 
1890
keep the format open to future extensions
 
1891
 
 
1892
</li></ul>
 
1893
 
 
1894
<p>Let us have a first view on complete simple &lsquo;<samp>Hello World</samp>&rsquo; level in the new format:
 
1895
</p>
 
1896
<table><tr><td>&nbsp;</td><td><pre class="example">&lt;?xml version=&quot;1.0&quot; encoding=&quot;<var>UTF-8</var>&quot; standalone=&quot;no&quot; ?&gt;
 
1897
&lt;<i>el</i>:<b>level</b> xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;<i>http://enigma-game.org/schema/level/1 level.xsd</i>&quot; xmlns:<i>el</i>=&quot;<i>http://enigma-game.org/schema/level/1</i>&quot;&gt;
 
1898
  &lt;<i>el</i>:<b>protected</b> &gt;
 
1899
    &lt;<i>el</i>:<b>info</b> <i>el</i>:<b>type</b>=&quot;<var>level</var>&quot;&gt;
 
1900
      &lt;<i>el</i>:<b>identity</b> <i>el</i>:<b>title</b>=&quot;<var>Demo Simple</var>&quot; <i>el</i>:<b>id</b>=&quot;<var>20060210ral001</var>&quot;/&gt;
 
1901
      &lt;<i>el</i>:<b>version</b> <i>el</i>:<b>score</b>=&quot;<var>1</var>&quot; <i>el</i>:<b>release</b>=&quot;<var>1</var>&quot; <i>el</i>:<b>revision</b>=&quot;<var>2</var>&quot; <i>el</i>:<b>status</b>=&quot;<var>stable</var>&quot;/&gt;
 
1902
      &lt;<i>el</i>:<b>author</b>  <i>el</i>:<b>name</b>=&quot;<var>Ronald Lamprecht</var>&quot;/&gt;
 
1903
      &lt;<i>el</i>:<b>copyright</b>&gt;<var>Copyright &copy; 2006,2009 Ronald Lamprecht</var>&lt;/<i>el</i>:<b>copyright</b>&gt;
 
1904
      &lt;<i>el</i>:<b>license</b> <i>el</i>:<b>type</b>=&quot;<var>GPL v2.0 or above</var>&quot; <i>el</i>:<b>open</b>=&quot;<var>true</var>&quot;/&gt;
 
1905
      &lt;<i>el</i>:<b>compatibility</b> <i>el</i>:<b>enigma</b>=&quot;<var>1.10</var>&quot;/&gt;
 
1906
      &lt;<i>el</i>:<b>modes</b> <i>el</i>:<b>easy</b>=&quot;<var>false</var>&quot; <i>el</i>:<b>single</b>=&quot;<var>true</var>&quot; <i>el</i>:<b>network</b>=&quot;<var>false</var>&quot;/&gt;
 
1907
      &lt;<i>el</i>:<b>score</b> <i>el</i>:<b>easy</b>=&quot;<var>-</var>&quot; <i>el</i>:<b>difficult</b>=&quot;<var>-</var>&quot;/&gt;
 
1908
    &lt;/<i>el</i>:<b>info</b>&gt;
 
1909
    &lt;<i>el</i>:<b>luamain</b>&gt;&lt;![CDATA[
 
1910
<i>ti</i>[&quot;<var> </var>&quot;] = {&quot;<b>fl_lawn_b</b>&quot;}
 
1911
<i>ti</i>[&quot;<var>#</var>&quot;] = {&quot;<b>st_box</b>&quot;}
 
1912
<i>ti</i>[&quot;<var>o</var>&quot;] = {&quot;<b>st_oxyd</b>&quot;}
 
1913
<i>ti</i>[&quot;<var>@</var>&quot;] = {&quot;#<b>ac_marble</b>&quot;}
 
1914
 
 
1915
<i>wo</i>(<i>ti</i>, &quot; &quot;, {
 
1916
    &quot;<var>####################</var>&quot;,
 
1917
    &quot;<var>#                  #</var>&quot;,
 
1918
    &quot;<var>#  o      @     o  #</var>&quot;,
 
1919
    &quot;<var>#                  #</var>&quot;,
 
1920
    &quot;<var>####################</var>&quot;,
 
1921
})
 
1922
    ]]&gt;&lt;/<i>el</i>:<b>luamain</b>&gt;
 
1923
    &lt;<i>el</i>:<b>i18n</b>/&gt;
 
1924
  &lt;/<i>el</i>:<b>protected</b>&gt;
 
1925
&lt;/<i>el</i>:<b>level</b>&gt;
 
1926
</pre></td></tr></table>
 
1927
 
 
1928
<p>You may notice that the XML portion contains all the metadata that the level author is
 
1929
accustomed to supplying with a level. The XML part is like a formula that you can copy from a
 
1930
template and fill out.
 
1931
</p>
 
1932
<p>The Lua code is embedded in the XML. The only limitation to the Lua portion is that it reserves
 
1933
&lsquo;<samp>]]&gt;</samp>&rsquo; for the end mark, and you would have to substitute it with
 
1934
&lsquo;<samp>]] &gt;</samp>&rsquo;. No further restrictions.
 
1935
</p>
 
1936
<p>Since the example above includes all mandatory XML parts, we should achieve our aim to avoid
 
1937
major changes for Lua level authors.
 
1938
</p>
 
1939
<p>You can find the example above in the &lsquo;<samp>Exp</samp>&rsquo; levelpack grouped in
 
1940
&lsquo;<samp>Development</samp>&rsquo;.
 
1941
The source code is located on the system path subdirectory
 
1942
&lsquo;<samp>levels/enigma_experimental</samp>&rsquo;
 
1943
(see section <a href="#Locating-Resources">Locating Resources</a>).
 
1944
</p>
 
1945
<p>If you make your first coding experiments on a copy of this level, either add your
 
1946
copy to the auto folder (see section <a href="#Getting-Started-with-Levelpacks">Getting Started with Levelpacks</a>), or use it as
 
1947
an argument on the command line (see section <a href="#Startup-Switches">Startup Switches</a>).
 
1948
</p>
 
1949
<p>Of course we must look at the details of the format and explain the optional
 
1950
parts:
 
1951
</p>
 
1952
<table class="menu" border="0" cellspacing="0">
 
1953
<tr><td align="left" valign="top"><a href="#Getting-Started-with-Levels">3.1 Getting Started with Levels</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1954
</td></tr>
 
1955
<tr><td align="left" valign="top"><a href="#XML-Level-structure">3.2 XML Level structure</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1956
</td></tr>
 
1957
<tr><td align="left" valign="top"><a href="#Info-metadata">3.3 Info metadata</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1958
</td></tr>
 
1959
<tr><td align="left" valign="top"><a href="#LUA-code">3.4 LUA code</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1960
</td></tr>
 
1961
<tr><td align="left" valign="top"><a href="#Internationalization-_0028i18n_0029">3.5 Internationalization (i18n)</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1962
</td></tr>
 
1963
<tr><td align="left" valign="top"><a href="#Usage">3.6 Usage</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1964
</td></tr>
 
1965
<tr><td align="left" valign="top"><a href="#Update-and-Upgrade">3.7 Update and Upgrade</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1966
</td></tr>
 
1967
<tr><td align="left" valign="top"><a href="#Library-Files">3.8 Library Files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1968
</td></tr>
 
1969
<tr><td align="left" valign="top"><a href="#Multilevel-Files">3.9 Multilevel Files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
1970
</td></tr>
 
1971
</table>
 
1972
 
 
1973
<hr size="6">
 
1974
<a name="Getting-Started-with-Levels"></a>
 
1975
<table cellpadding="1" cellspacing="1" border="0">
 
1976
<tr><td valign="middle" align="left">[<a href="#Level-Basics" title="Previous section in reading order"> &lt; </a>]</td>
 
1977
<td valign="middle" align="left">[<a href="#XML-Level-structure" title="Next section in reading order"> &gt; </a>]</td>
 
1978
<td valign="middle" align="left"> &nbsp; </td>
 
1979
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
1980
<td valign="middle" align="left">[<a href="#Level-Basics" title="Up section"> Up </a>]</td>
 
1981
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
1982
<td valign="middle" align="left"> &nbsp; </td>
 
1983
<td valign="middle" align="left"> &nbsp; </td>
 
1984
<td valign="middle" align="left"> &nbsp; </td>
 
1985
<td valign="middle" align="left"> &nbsp; </td>
 
1986
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
1987
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
1988
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
1989
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
1990
</tr></table>
 
1991
<a name="Getting-Started-with-Levels-1"></a>
 
1992
<h2 class="section">3.1 Getting Started with Levels</h2>
 
1993
 
 
1994
<p>Most likely you are keen on understanding the basic principles of placing
 
1995
objects in a level. Here is a very simple level description that can also serve
 
1996
as a starting-point for new landscapes.  (In fact, this is the first welcome
 
1997
level in levelpack Enigma I, so you can try it out right away.)
 
1998
</p>
 
1999
<table><tr><td>&nbsp;</td><td><pre class="example"> 1    <i>ti</i>[&quot;<var> </var>&quot;] = {&quot;<b>fl_gravel</b>&quot;}
 
2000
 2    <i>ti</i>[&quot;<var>#</var>&quot;] = {&quot;<b>st_box</b>&quot;}
 
2001
 3    <i>ti</i>[&quot;<var>O</var>&quot;] = {&quot;<b>st_oxyd</b>&quot;}
 
2002
 4    if <i>wo</i>[&quot;<b>IsDifficult</b>&quot;] then
 
2003
 5        <i>ti</i>[&quot;<var>Q</var>&quot;] = {&quot;<b>st_quake</b>&quot;, <b>name</b>=&quot;<var>quake</var>&quot;}
 
2004
 6        <i>ti</i>[&quot;<var>T</var>&quot;] = {&quot;<b>st_timer</b>&quot;, <b>interval</b>=<var>10.0</var>, <b>target</b>=&quot;<var>quake</var>&quot;}
 
2005
 7    else
 
2006
 8        <i>ti</i>[&quot;<var>Q</var>&quot;] = <i>ti</i>[&quot; &quot;]
 
2007
 9        <i>ti</i>[&quot;<var>T</var>&quot;] = <i>ti</i>[&quot; &quot;]
 
2008
10    end
 
2009
11    <i>ti</i>[&quot;<var>@</var>&quot;] = {&quot;<b>ac_marble_black</b>&quot;, <var>0.0</var>, <var>0.5</var>}
 
2010
11
 
2011
12    <i>wo</i>(<i>ti</i>, &quot; &quot;, {
 
2012
13      &quot;<var>####################</var>&quot;,
 
2013
14      &quot;<var>#                  #</var>&quot;,
 
2014
15      &quot;<var>#                  #</var>&quot;,
 
2015
16      &quot;<var>#  O            O  #</var>&quot;,
 
2016
17      &quot;<var>#         @        #</var>&quot;,
 
2017
18      &quot;<var>#                  #</var>&quot;,
 
2018
19      &quot;<var>#        QT        #</var>&quot;,
 
2019
20      &quot;<var>#                  #</var>&quot;,
 
2020
21      &quot;<var>#                  #</var>&quot;,
 
2021
22      &quot;<var>#  O            O  #</var>&quot;,
 
2022
23      &quot;<var>#                  #</var>&quot;,
 
2023
24      &quot;<var>#                  #</var>&quot;,
 
2024
25      &quot;<var>####################</var>&quot;})
 
2025
</pre></td></tr></table>
 
2026
 
 
2027
<p>The resulting level looks like this inside the game:
 
2028
</p>
 
2029
<img src="images/first_level.png" alt="images/first_level">
 
2030
 
 
2031
<p>Let&rsquo;s now turn to a line-by-line analysis of this program:
 
2032
</p>
 
2033
<table><tr><td>&nbsp;</td><td><pre class="example"> 1    <i>ti</i>[&quot;<var> </var>&quot;] = {&quot;<b>fl_gravel</b>&quot;}
 
2034
 2    <i>ti</i>[&quot;<var>#</var>&quot;] = {&quot;<b>st_box</b>&quot;}
 
2035
 3    <i>ti</i>[&quot;<var>O</var>&quot;] = {&quot;<b>st_oxyd</b>&quot;}
 
2036
</pre></td></tr></table>
 
2037
 
 
2038
<p>First we declare some keys for objects we like to use in our level map. We
 
2039
just add each key to our <i>ti</i> tiles repository and assign an object tile
 
2040
description that consists of the object kind name in these simple cases. The
 
2041
two character prefix of the kind name shows us the basic object type like floor,
 
2042
item, stone, actor, etc.
 
2043
</p>
 
2044
<table><tr><td>&nbsp;</td><td><pre class="example"> 4    if <i>wo</i>[&quot;<b>IsDifficult</b>&quot;] then
 
2045
 5        <i>ti</i>[&quot;<var>Q</var>&quot;] = {&quot;<b>st_quake</b>&quot;, <b>name</b>=&quot;<var>quake</var>&quot;}
 
2046
 6        <i>ti</i>[&quot;<var>T</var>&quot;] = {&quot;<b>st_timer</b>&quot;, <b>interval</b>=<var>10.0</var>, <b>target</b>=&quot;<var>quake</var>&quot;}
 
2047
 7    else
 
2048
 8        <i>ti</i>[&quot;<var>Q</var>&quot;] = <i>ti</i>[&quot; &quot;]
 
2049
 9        <i>ti</i>[&quot;<var>T</var>&quot;] = <i>ti</i>[&quot; &quot;]
 
2050
10    end
 
2051
</pre></td></tr></table>
 
2052
 
 
2053
<p>The welcome level provides two modes, the regular difficult one and an easy one.
 
2054
As the regular difficult one differs just in two additional stones we add two
 
2055
mode specific tile declarations.
 
2056
</p>
 
2057
<p>In the difficult mode we assign two stone definitions. Each provides the
 
2058
stone kind and additional attributes. The &lsquo;<samp>st_quake</samp>&rsquo; is the stone that
 
2059
closes oxyd stones when being hit or toggled. We just name it, to be able to
 
2060
reference it later on. The second stone is a timer that should get active
 
2061
every 10 seconds and should send a toggle message to its target, our oxyd
 
2062
closing &lsquo;<samp>st_quake</samp>&rsquo;. As we did name this stone we can reference it here
 
2063
as target by its name.
 
2064
</p>
 
2065
<table><tr><td>&nbsp;</td><td><pre class="example">11    <i>ti</i>[&quot;<var>@</var>&quot;] = {&quot;<b>ac_marble_black</b>&quot;, <var>0.0</var>, <var>0.5</var>}
 
2066
</pre></td></tr></table>
 
2067
 
 
2068
<p>Now we just need to declare our actor. It is a black marble that should not
 
2069
be placed at the left upper corner of a grid but in the mid of the left
 
2070
border of a tile grid. Actually we just want to center it within the level.
 
2071
As a one screen sized level has the extension of 20 x 13 we need the offsets
 
2072
given above.
 
2073
</p>
 
2074
<table><tr><td>&nbsp;</td><td><pre class="example">12    <i>wo</i>(<i>ti</i>, &quot; &quot;, {
 
2075
13        &quot;<var>####################</var>&quot;,
 
2076
14        &quot;<var>#                  #</var>&quot;,
 
2077
15        &quot;<var>#                  #</var>&quot;,
 
2078
16        &quot;<var>#  O            O  #</var>&quot;,
 
2079
17        &quot;<var>#         @        #</var>&quot;,
 
2080
18        &quot;<var>#                  #</var>&quot;,
 
2081
19        &quot;<var>#        QT        #</var>&quot;,
 
2082
20        &quot;<var>#                  #</var>&quot;,
 
2083
21        &quot;<var>#                  #</var>&quot;,
 
2084
22        &quot;<var>#  O            O  #</var>&quot;,
 
2085
23        &quot;<var>#                  #</var>&quot;,
 
2086
24        &quot;<var>#                  #</var>&quot;,
 
2087
25        &quot;<var>####################</var>&quot;})
 
2088
</pre></td></tr></table>
 
2089
 
 
2090
<p>Now we can create the world simply by providing a map. We just need to call
 
2091
&lsquo;<samp>wo</samp>&rsquo;, our world handle, provide it our tile resolver, the key of the
 
2092
default floor and a map of tile keys.
 
2093
</p>
 
2094
<p>You will find all conceptional background information in chapter
 
2095
<a href="#Enigma-Paradigm">Enigma Paradigm</a> and more examples and syntax information in chapter
 
2096
<a href="#Lua-API">Lua API</a>. But first you should take the time to get aware of the XML
 
2097
based level metadata.
 
2098
</p>
 
2099
 
 
2100
<hr size="6">
 
2101
<a name="XML-Level-structure"></a>
 
2102
<table cellpadding="1" cellspacing="1" border="0">
 
2103
<tr><td valign="middle" align="left">[<a href="#Getting-Started-with-Levels" title="Previous section in reading order"> &lt; </a>]</td>
 
2104
<td valign="middle" align="left">[<a href="#Info-metadata" title="Next section in reading order"> &gt; </a>]</td>
 
2105
<td valign="middle" align="left"> &nbsp; </td>
 
2106
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
2107
<td valign="middle" align="left">[<a href="#Level-Basics" title="Up section"> Up </a>]</td>
 
2108
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
2109
<td valign="middle" align="left"> &nbsp; </td>
 
2110
<td valign="middle" align="left"> &nbsp; </td>
 
2111
<td valign="middle" align="left"> &nbsp; </td>
 
2112
<td valign="middle" align="left"> &nbsp; </td>
 
2113
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
2114
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
2115
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
2116
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
2117
</tr></table>
 
2118
<a name="XML-Level-structure-1"></a>
 
2119
<h2 class="section">3.2 XML Level structure</h2>
 
2120
 
 
2121
<p>Let us start with a complete overview of all existing top XML element nodes. The
 
2122
following level skeleton contains optional elements that are beyond level basics.
 
2123
We include these elements for completeness:
 
2124
</p>
 
2125
<table><tr><td>&nbsp;</td><td><pre class="example">&lt;?xml version=&quot;1.0&quot; encoding=&quot;<var>UTF-8</var>&quot; standalone=&quot;no&quot; ?&gt;
 
2126
&lt;<i>el</i>:<b>level</b> xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;<i>http://enigma-game.org/schema/level/1 level.xsd http://enigma-game.org/schema/editor editor.xsd</i>&quot; xmlns:<i>el</i>=&quot;<i>http://enigma-game.org/schema/level/1</i>&quot; xmlns:<i>ee</i>=&quot;<i>http://enigma-game.org/schema/editor</i>&quot;&gt;
 
2127
  &lt;<i>el</i>:<b>protected</b>&gt;
 
2128
    &lt;<i>el</i>:<b>info</b> <i>el</i>:<b>type</b>=&quot;<var>level</var>&quot;&gt;
 
2129
      &lt;!-- required elements omitted --&gt;
 
2130
    &lt;/<i>el</i>:<b>info</b>&gt;
 
2131
    &lt;<i>el</i>:<b>elements</b>/&gt;
 
2132
    &lt;<i>el</i>:<b>luamain</b>&gt;&lt;![CDATA[
 
2133
    ]]&gt;&lt;/<i>el</i>:<b>luamain</b>&gt;
 
2134
    &lt;<i>ee</i>:<b>editor</b>/&gt;
 
2135
    &lt;<i>el</i>:<b>i18n</b>/&gt;
 
2136
  &lt;/<i>el</i>:<b>protected</b>&gt;
 
2137
  &lt;<i>el</i>:<b>public</b>&gt;
 
2138
    &lt;<i>el</i>:<b>i18n</b>/&gt;
 
2139
    &lt;<i>el</i>:<b>upgrade</b>/&gt;
 
2140
  &lt;/<i>el</i>:<b>public</b>&gt;
 
2141
&lt;/<i>el</i>:<b>level</b>&gt;
 
2142
</pre></td></tr></table>
 
2143
 
 
2144
<p>The first line is the XML declaration. It is fixed besides the encoding
 
2145
specification. Enigma supports on all platforms, at least &lsquo;<samp>US-ASCII</samp>&rsquo;,
 
2146
&lsquo;<samp>UTF-8</samp>&rsquo;, &lsquo;<samp>UTF-16</samp>&rsquo;, &lsquo;<samp>ISO-8859-1</samp>&rsquo;, &lsquo;<samp>windows-1252</samp>&rsquo;.
 
2147
Enter your encoding and make sure that your editor saves the level in this encoding.
 
2148
On some editors, you can start in ASCII mode, copy the level skeleton with a
 
2149
different encoding declaration, like UTF-8, save the level still in ASCII mode
 
2150
and reopen the file.  The editor may then detect the XML declaration and switch
 
2151
automatically to the given encoding. Note that unless you enter
 
2152
international strings in the level, you do not have to bother with the encoding
 
2153
at all. You can choose UTF-8 in this case.
 
2154
</p>
 
2155
<p>Some additional remarks for XML newbies: The XML markup tags are quite similar
 
2156
to HTML. But XML requires a corresponding
 
2157
end tag &lsquo;<samp>&lt;/element&gt;</samp>&rsquo; for each start tag &lsquo;<samp>&lt;element&gt;</samp>&rsquo;. For elements that have
 
2158
only attributes and no content,
 
2159
you can and should use the alternative empty element notation &lsquo;<samp>&lt;element/&gt;</samp>&rsquo;.
 
2160
Note that when we define an element as empty or state that no content is allowed,
 
2161
not a single whitespace, not even a linebreak is allowed between start and end tag. Use the
 
2162
empty element notation to avoid mistakes.
 
2163
</p>
 
2164
<p>We use a pretty printing format with an indentation of 2. Each element starts on a separate line.
 
2165
Elements with text content have the end tag on the same line. Only elements with subelements
 
2166
have the end tag on a separate line with the same indentation.
 
2167
</p>
 
2168
<p>This format is not mandatory. You can even insert linebreaks in text contents, within the marks,
 
2169
and even within attribute values. But note: The basic rule is that each linebreak will be
 
2170
substituted by a space during the XML parsing. Take this space into account to avoid mistakes,
 
2171
or simply live with the long lines.
 
2172
</p>
 
2173
<p>A namespace identifier prefixes all tag names and attribute names.  We
 
2174
use &lsquo;<samp>el</samp>&rsquo; as an abbreviation for Enigma levels. All tag names you can
 
2175
manually edit use this prefix.
 
2176
</p>
 
2177
<p>Finally, a short comment on the XML reserved characters, &lsquo;<samp>&amp;</samp>&rsquo; and &lsquo;<samp>&lt;</samp>&rsquo;.
 
2178
These two characters are reserved as tag and entity starting characters. If you
 
2179
need them in text contents or in attribute values, you must substitute
 
2180
them by the entity sequences &lsquo;<samp>&amp;amp;</samp>&rsquo; and &lsquo;<samp>&amp;lt;</samp>&rsquo;. Additionally, you must enclose
 
2181
attribute values with either &lsquo;<samp>&quot;</samp>&rsquo; or &lsquo;<samp>'</samp>&rsquo;. Of course, you must substitute the
 
2182
enclosing character used in attribute values, too. Use &lsquo;<samp>&amp;quot</samp>&rsquo;
 
2183
and &lsquo;<samp>&amp;apos</samp>&rsquo;.
 
2184
</p>
 
2185
<p><b>Elements:</b>
 
2186
</p>
 
2187
<dl compact="compact">
 
2188
<dt> <b>/level</b>, <i>required, single occurrence</i></dt>
 
2189
<dd><p>This is the root node. Only one instance of this node occurs per file. Like the first XML
 
2190
declaration line, this second line is quite fixed. There are two versions. The simple 3-attribute
 
2191
version, as used in the first example, and only level editor programs use the 4-attribute version
 
2192
as above. For manual level
 
2193
editing, just copy the simple version as the second line to your level file.
 
2194
</p>
 
2195
<p><b>Attributes:</b>
 
2196
</p>
 
2197
<dl compact="compact">
 
2198
<dt> <b>xmlns:xsi</b>, <i>required, contents fixed</i></dt>
 
2199
<dd><p>Namespace definition for the schema. The contents are fixed to
 
2200
&ldquo;http://www.w3.org/2001/XMLSchema-instance&rdquo;. The attribute tag &lsquo;<samp>xsi</samp>&rsquo; must
 
2201
match the prefix of the next attribute tag, and is standard.
 
2202
</p>
 
2203
</dd>
 
2204
<dt> <b>xsi:schemaLocation</b>, <i>required, contents fixed</i></dt>
 
2205
<dd><p>Location of the schemas used. The contents are the fixed Enigma level
 
2206
namespace, followed by the schema location URL. Level editor programs will add
 
2207
their namespace and their schema location URL, as in the second example above.
 
2208
</p>
 
2209
</dd>
 
2210
<dt> <b>xmlns:el</b>, <i>required, contents fixed</i></dt>
 
2211
<dd><p>Namespace definition for &ldquo;Enigma level&rdquo;. We use &lsquo;<samp>el</samp>&rsquo; as the namespace prefix
 
2212
for all level element and attribute tags, as standard. The prefix used can be
 
2213
arbitrary, but must match this attributes tag. The contents of the attribute is
 
2214
fixed to the Enigma level namespace.
 
2215
</p>
 
2216
</dd>
 
2217
<dt> <b>xmlns:ee</b>, <i>optional</i></dt>
 
2218
<dd><p>Only level editor programs use this last namespace definition. For
 
2219
example, we declared &lsquo;<samp>ee</samp>&rsquo; as the namespace prefix for all editor element and
 
2220
attribute tags.  The prefix you use can be arbitrary, but must match this attributes
 
2221
tag. The contents of the attribute are the editor&rsquo;s namespace.
 
2222
</p>
 
2223
</dd>
 
2224
</dl>
 
2225
 
 
2226
</dd>
 
2227
<dt> <b>/level/protected</b>, <i>required, single occurrence</i></dt>
 
2228
<dd>
 
2229
<p>The protected node section contains all level data that derive from the author and
 
2230
should not be modified by anyone else.
 
2231
</p>
 
2232
</dd>
 
2233
<dt> <b>/level/protected/info</b>, <i>required, single occurrence</i></dt>
 
2234
<dd>
 
2235
<p>The info node section contains all level metadata. It is mandatory and described in
 
2236
detail at section <a href="#Info-metadata">Info metadata</a>.
 
2237
</p>
 
2238
</dd>
 
2239
<dt> <b>/level/protected/elements</b>, <i>optional, single occurrence</i></dt>
 
2240
<dd>
 
2241
<p>The elements node section is optional. It contains level description parts that
 
2242
are given in a data-driven manner. Though the driving force is the support
 
2243
for level editor programs, a level author may use any parts of this section he or she
 
2244
likes.
 
2245
</p>
 
2246
</dd>
 
2247
<dt> <b>/level/protected/luamain</b>, <i>optional, single occurrence</i></dt>
 
2248
<dd>
 
2249
<p>The luamain node section is the part to insert manually Lua level descriptions.
 
2250
It is described in detail at section <a href="#LUA-code">LUA code</a>.
 
2251
</p>
 
2252
</dd>
 
2253
<dt> <b>/level/protected/editor</b>, <i>optional, single occurrence</i></dt>
 
2254
<dd>
 
2255
<p>The editor node section is an open extension area for level editor programs.
 
2256
They can add any additional information in this section that they need.
 
2257
Enigma simply ignores this node section.
 
2258
</p>
 
2259
</dd>
 
2260
<dt> <b>/level/protected/i18n</b>, <i>required, single occurrence</i></dt>
 
2261
<dd>
 
2262
<p>The i18n node section contains English strings, native translations and comments
 
2263
supplied by the author for the translators. This node section is mandatory
 
2264
and described in detail at section <a href="#Internationalization-_0028i18n_0029">Internationalization (i18n)</a>.
 
2265
</p>
 
2266
</dd>
 
2267
<dt> <b>/level/public</b>, <i>optional, single occurrence</i></dt>
 
2268
<dd>
 
2269
<p>This public node section is an optional extension to the protected part. It
 
2270
contains information that the author has not validated and may even be added
 
2271
after the last author&rsquo;s review.
 
2272
</p>
 
2273
</dd>
 
2274
<dt> <b>/level/public/i18n</b>, <i>optional, single occurrence</i></dt>
 
2275
<dd>
 
2276
<p>This public i18n section contains further translations supplied for the level. They
 
2277
may derive from the author or other sources. The translators will
 
2278
validate these translations, and they continue in use if the translators do not
 
2279
supply corrected versions. See <a href="#Internationalization-_0028i18n_0029">Internationalization (i18n)</a>.
 
2280
</p>
 
2281
</dd>
 
2282
<dt> <b>/level/public/upgrade</b>, <i>optional, single occurrence</i></dt>
 
2283
<dd>
 
2284
<p>This upgrade node is part of the <a href="#Update-and-Upgrade">Update and Upgrade</a> system.
 
2285
</p>
 
2286
</dd>
 
2287
</dl>
 
2288
 
 
2289
<hr size="6">
 
2290
<a name="Info-metadata"></a>
 
2291
<table cellpadding="1" cellspacing="1" border="0">
 
2292
<tr><td valign="middle" align="left">[<a href="#XML-Level-structure" title="Previous section in reading order"> &lt; </a>]</td>
 
2293
<td valign="middle" align="left">[<a href="#g_t_003cidentity_003e" title="Next section in reading order"> &gt; </a>]</td>
 
2294
<td valign="middle" align="left"> &nbsp; </td>
 
2295
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
2296
<td valign="middle" align="left">[<a href="#Level-Basics" title="Up section"> Up </a>]</td>
 
2297
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
2298
<td valign="middle" align="left"> &nbsp; </td>
 
2299
<td valign="middle" align="left"> &nbsp; </td>
 
2300
<td valign="middle" align="left"> &nbsp; </td>
 
2301
<td valign="middle" align="left"> &nbsp; </td>
 
2302
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
2303
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
2304
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
2305
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
2306
</tr></table>
 
2307
<a name="Info-metadata-1"></a>
 
2308
<h2 class="section">3.3 Info metadata</h2>
 
2309
 
 
2310
<p>The Info node contains all author-supplied metadata for the level. This is the
 
2311
source of these data. All other parts of Enigma, such as level indices, simply contain
 
2312
copies that will be automatically updated to the level&rsquo;s original data.
 
2313
</p>
 
2314
<p>Let us look at all supported subnodes of info with typically used attributes:
 
2315
</p>
 
2316
<table><tr><td>&nbsp;</td><td><pre class="example">&lt;<i>el</i>:<b>info</b> <i>el</i>:<b>type</b>=&quot;<var>level</var>&quot;&gt;
 
2317
  &lt;<i>el</i>:<b>identity</b> <i>el</i>:<b>title</b>=&quot;<var>Demo I18N</var>&quot; <i>el</i>:<b>subtitle</b>=&quot;<var>Translate or let it be translated</var>&quot; <i>el</i>:<b>id</b>=&quot;<var>20060211ral002</var>&quot;/&gt;
 
2318
  &lt;<i>el</i>:<b>version</b> <i>el</i>:<b>score</b>=&quot;<var>1</var>&quot; <i>el</i>:<b>release</b>=&quot;<var>1</var>&quot; <i>el</i>:<b>revision</b>=&quot;<var>0</var>&quot; <i>el</i>:<b>status</b>=&quot;<var>experimental</var>&quot;/&gt;
 
2319
  &lt;<i>el</i>:<b>author</b>  <i>el</i>:<b>name</b>=&quot;<var>Ronald Lamprecht</var>&quot; <i>el</i>:<b>email</b>=&quot;<var>ral@users.berlios.de</var>&quot;/&gt;
 
2320
  &lt;<i>el</i>:<b>copyright</b>&gt;<var>Copyright &copy; 2006 Ronald Lamprecht</var>&lt;/<i>el</i>:<b>copyright</b>&gt;
 
2321
  &lt;<i>el</i>:<b>license</b> <i>el</i>:<b>type</b>=&quot;<var>GPL v2.0 or above</var>&quot; <i>el</i>:<b>open</b>=&quot;<var>true</var>&quot;/&gt;
 
2322
  &lt;<i>el</i>:<b>compatibility</b> <i>el</i>:<b>enigma</b>=&quot;<var>0.92</var>&quot;/&gt;
 
2323
  &lt;<i>el</i>:<b>modes</b> <i>el</i>:<b>easy</b>=&quot;<var>false</var>&quot; <i>el</i>:<b>single</b>=&quot;<var>true</var>&quot; <i>el</i>:<b>network</b>=&quot;<var>false</var>&quot;/&gt;
 
2324
  &lt;<i>el</i>:<b>comments</b>/&gt;
 
2325
  &lt;<i>el</i>:<b>update</b> <i>el</i>:<b>url</b>=&quot;<var>http://&hellip;</var>&quot;/&gt;
 
2326
  &lt;<i>el</i>:<b>upgrade</b> <i>el</i>:<b>url</b>=&quot;<var>http://&hellip;</var>&quot; <i>el</i>:<b>release</b>=&quot;<var>2</var>&quot;/&gt;
 
2327
  &lt;<i>el</i>:<b>score</b> <i>el</i>:<b>easy</b>=&quot;<var>-</var>&quot; <i>el</i>:<b>difficult</b>=&quot;<var>-</var>&quot;/&gt;
 
2328
&lt;/<i>el</i>:<b>info</b>&gt;
 
2329
</pre></td></tr></table>
 
2330
 
 
2331
<p><b>Attributes:</b>
 
2332
</p>
 
2333
<dl compact="compact">
 
2334
<dt> <b>type</b>, <i>required</i>, values = <code>&quot;level&quot;</code>, <code>&quot;library&quot;</code>, <code>&quot;multilevel&quot;</code></dt>
 
2335
<dd><p>You may use the schema for single Enigma levels, libraries that contain level
 
2336
description parts for reuse, and descriptions for multiple levels at once.
 
2337
</p>
 
2338
<p>&lsquo;<samp>level</samp>&rsquo; are all single level descriptions. It does not matter if you
 
2339
edit them manually or with a level editor program, or which description elements you
 
2340
use.
 
2341
</p>
 
2342
<p>&lsquo;<samp>library</samp>&rsquo; are level description parts that may be included in levels.
 
2343
<a href="#Library-Files">Library Files</a> consist simply of Lua code in the luamain node. Libraries
 
2344
may make use of nearly all nodes besides the &lsquo;<samp>/level/protected/info/score</samp>&rsquo;
 
2345
and &lsquo;<samp>/level/*/i18n</samp>&rsquo;, which both must be provided, but will not be evaluated.
 
2346
Libraries are included in levels via the dependency node-element. See
 
2347
<a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a>.
 
2348
</p>
 
2349
<p>&lsquo;<samp>multilevel</samp>&rsquo; are descriptions for multiple levels at once. The main purpose
 
2350
is to support foreign game level formats, like the Sokoban level format, which
 
2351
usually describes a whole set of level maps in a single file (see section <a href="#Multilevel-Files">Multilevel Files</a>).
 
2352
</p>
 
2353
</dd>
 
2354
<dt> <b>quantity</b>, <i>optional</i></dt>
 
2355
<dd><p>The number of levels contained in a multilevel file (see section <a href="#Multilevel-Files">Multilevel Files</a>).
 
2356
</p>
 
2357
</dd>
 
2358
</dl>
 
2359
 
 
2360
<p><b>Contents - Elements:</b>
 
2361
</p>
 
2362
<dl compact="compact">
 
2363
<dt> <b>identity</b>, <i>required</i></dt>
 
2364
<dd><p>The title, subtitle and the main level identification string. See <a href="#g_t_003cidentity_003e">&lt;identity&gt;</a>.
 
2365
</p>
 
2366
</dd>
 
2367
<dt> <b>version</b>, <i>required</i></dt>
 
2368
<dd><p>All aspects of the level <a href="#g_t_003cversion_003e">&lt;version&gt;</a>.
 
2369
</p>
 
2370
</dd>
 
2371
<dt> <b>author</b>, <i>required</i></dt>
 
2372
<dd><p>All information provided about the author him- or herself. See <a href="#g_t_003cauthor_003e">&lt;author&gt;</a>.
 
2373
</p>
 
2374
</dd>
 
2375
<dt> <b>copyright</b>, <i>required</i></dt>
 
2376
<dd><p>The <a href="#g_t_003ccopyright_003e">&lt;copyright&gt;</a> message for the level.
 
2377
</p>
 
2378
</dd>
 
2379
<dt> <b>license</b>, <i>required</i></dt>
 
2380
<dd><p>Information about the <a href="#g_t_003clicense_003e">&lt;license&gt;</a> conditions.
 
2381
</p>
 
2382
</dd>
 
2383
<dt> <b>compatibility</b>, <i>required</i></dt>
 
2384
<dd><p>All information about <a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a> to Enigma releases, dependencies
 
2385
from libraries, external data and the editor program that generated the level.
 
2386
</p>
 
2387
</dd>
 
2388
<dt> <b>modes</b>, <i>required</i></dt>
 
2389
<dd><p>The <a href="#g_t_003cmodes_003e">&lt;modes&gt;</a> that the level supports, such as difficulty, network and control.
 
2390
</p>
 
2391
</dd>
 
2392
<dt> <b>comments</b>, <i>optional</i></dt>
 
2393
<dd><p>Optional comments, such as credits, dedication and code comments. See <a href="#g_t_003ccomments_003e">&lt;comments&gt;</a>.
 
2394
</p>
 
2395
</dd>
 
2396
<dt> <b>update</b>, <i>optional</i></dt>
 
2397
<dd><p><a href="#Update-and-Upgrade">Update and Upgrade</a>
 
2398
</p>
 
2399
</dd>
 
2400
<dt> <b>upgrade</b>, <i>optional</i></dt>
 
2401
<dd><p><a href="#Update-and-Upgrade">Update and Upgrade</a>
 
2402
</p>
 
2403
</dd>
 
2404
<dt> <b>score</b>, <i>required</i></dt>
 
2405
<dd><p>The author&rsquo;s own <a href="#g_t_003cscore_003e">&lt;score&gt;</a> of this level.
 
2406
</p>
 
2407
</dd>
 
2408
</dl>
 
2409
 
 
2410
<table class="menu" border="0" cellspacing="0">
 
2411
<tr><td align="left" valign="top"><a href="#g_t_003cidentity_003e">3.3.1 &lt;identity&gt;</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
2412
</td></tr>
 
2413
<tr><td align="left" valign="top"><a href="#g_t_003cversion_003e">3.3.2 &lt;version&gt;</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
2414
</td></tr>
 
2415
<tr><td align="left" valign="top"><a href="#g_t_003cauthor_003e">3.3.3 &lt;author&gt;</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
2416
</td></tr>
 
2417
<tr><td align="left" valign="top"><a href="#g_t_003ccopyright_003e">3.3.4 &lt;copyright&gt;</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
2418
</td></tr>
 
2419
<tr><td align="left" valign="top"><a href="#g_t_003clicense_003e">3.3.5 &lt;license&gt;</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
2420
</td></tr>
 
2421
<tr><td align="left" valign="top"><a href="#g_t_003ccompatibility_003e">3.3.6 &lt;compatibility&gt;</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
2422
</td></tr>
 
2423
<tr><td align="left" valign="top"><a href="#g_t_003cmodes_003e">3.3.7 &lt;modes&gt;</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
2424
</td></tr>
 
2425
<tr><td align="left" valign="top"><a href="#g_t_003ccomments_003e">3.3.8 &lt;comments&gt;</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
2426
</td></tr>
 
2427
<tr><td align="left" valign="top"><a href="#g_t_003cscore_003e">3.3.9 &lt;score&gt;</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
2428
</td></tr>
 
2429
</table>
 
2430
 
 
2431
 
 
2432
<hr size="6">
 
2433
<a name="g_t_003cidentity_003e"></a>
 
2434
<table cellpadding="1" cellspacing="1" border="0">
 
2435
<tr><td valign="middle" align="left">[<a href="#Info-metadata" title="Previous section in reading order"> &lt; </a>]</td>
 
2436
<td valign="middle" align="left">[<a href="#g_t_003cversion_003e" title="Next section in reading order"> &gt; </a>]</td>
 
2437
<td valign="middle" align="left"> &nbsp; </td>
 
2438
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
2439
<td valign="middle" align="left">[<a href="#Info-metadata" title="Up section"> Up </a>]</td>
 
2440
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
2441
<td valign="middle" align="left"> &nbsp; </td>
 
2442
<td valign="middle" align="left"> &nbsp; </td>
 
2443
<td valign="middle" align="left"> &nbsp; </td>
 
2444
<td valign="middle" align="left"> &nbsp; </td>
 
2445
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
2446
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
2447
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
2448
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
2449
</tr></table>
 
2450
<a name="g_t_003cidentity_003e-1"></a>
 
2451
<h3 class="subsection">3.3.1 &lt;identity&gt;</h3>
 
2452
 
 
2453
<p>The &lsquo;<samp><b>identity</b></samp>&rsquo; element is required, since it provides the information for human
 
2454
and system identification of the level.
 
2455
</p>
 
2456
<table><tr><td>&nbsp;</td><td><pre class="example">&lt;<i>el</i>:<b>identity</b> <i>el</i>:<b>title</b>=&quot;<var>Demo I18N</var>&quot; <i>el</i>:<b>subtitle</b>=&quot;<var>Translate or let it be translated</var>&quot; <i>el</i>:<b>id</b>=&quot;<var>20060211ral002</var>&quot;/&gt;
 
2457
</pre></td></tr></table>
 
2458
 
 
2459
<p><b>Attributes:</b>
 
2460
</p>
 
2461
<dl compact="compact">
 
2462
<dt> <b>title</b>, <i>required</i></dt>
 
2463
<dd><p>The English title of the level. The string can contain arbitrary characters
 
2464
that are displayable by Enigma&rsquo;s font and XML conformant. Just in case of
 
2465
<a href="#Multilevel-Files">Multilevel Files</a> a trailing hash sign has a special meaning. Anyway please
 
2466
make sure that the title is not too long, since Enigma will use it on the level
 
2467
selection menu. Translations of the title can be provided in the
 
2468
<a href="#Internationalization-_0028i18n_0029">Internationalization (i18n)</a> sections.
 
2469
</p>
 
2470
</dd>
 
2471
<dt> <b>subtitle</b>, <i>optional</i></dt>
 
2472
<dd><p>An optional English subtitle. Used for title parts that are too long for the
 
2473
main title, or for a short first hint. Enigma displays the subtitle on the level info
 
2474
page and on the start of the level. Translations of the subtitle can be provided
 
2475
in the <a href="#Internationalization-_0028i18n_0029">Internationalization (i18n)</a> sections.
 
2476
</p>
 
2477
</dd>
 
2478
<dt> <b>id</b>, <i>required</i></dt>
 
2479
<dd><p>This is the central system identification string of the level that remains valid
 
2480
for all time, independent of upcoming release updates. The id string should not
 
2481
contain spaces, braces and wildcard characters, that means no character out
 
2482
of &lsquo;<samp>*? ()[]{}</samp>&rsquo;. Enigma&rsquo;s main demand on the id is that it is unique among
 
2483
all levels created by all authors around the world and that it does not end on a
 
2484
closing square bracket.
 
2485
</p>
 
2486
<p>Since you can edit levels with any text editor or different special Enigma level
 
2487
editors, there is no control about the uniqueness. Thus, we have to provide a
 
2488
simple convention to avoid any possible id clashes:
 
2489
</p>
 
2490
<p><var><b>YYYYMMDDuserNNN</b></var>
 
2491
</p>
 
2492
<p>Where &lsquo;<samp>YYYY</samp>&rsquo;,&lsquo;<samp>MM</samp>&rsquo;,&lsquo;<samp>DD</samp>&rsquo; is the date of the creation of the first
 
2493
experimental version, &lsquo;<samp>user</samp>&rsquo; stands for a user-specific name and &lsquo;<samp>NNN</samp>&rsquo;
 
2494
for a random number. For example, my level called &lsquo;<samp>Houdini</samp>&rsquo; has the id
 
2495
&lsquo;<samp>20060816ral719</samp>&rsquo;. Of course all levels created on the same day have to
 
2496
differ in the random number part. The id is an Enigma level system id, and is
 
2497
never exposed to users.
 
2498
</p>
 
2499
<p>For backward compatibility, legacy levels keep their former filename as the
 
2500
new level id, and do not fit in the name schema given above. Still, that does
 
2501
not harm since the only requirement is the uniqueness.
 
2502
</p>
 
2503
</dd>
 
2504
</dl>
 
2505
 
 
2506
<p><b>Contents:</b>
 
2507
</p>
 
2508
<p>The element itself is empty - no content is allowed.
 
2509
</p>
 
2510
<hr size="6">
 
2511
<a name="g_t_003cversion_003e"></a>
 
2512
<table cellpadding="1" cellspacing="1" border="0">
 
2513
<tr><td valign="middle" align="left">[<a href="#g_t_003cidentity_003e" title="Previous section in reading order"> &lt; </a>]</td>
 
2514
<td valign="middle" align="left">[<a href="#g_t_003cauthor_003e" title="Next section in reading order"> &gt; </a>]</td>
 
2515
<td valign="middle" align="left"> &nbsp; </td>
 
2516
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
2517
<td valign="middle" align="left">[<a href="#Info-metadata" title="Up section"> Up </a>]</td>
 
2518
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
2519
<td valign="middle" align="left"> &nbsp; </td>
 
2520
<td valign="middle" align="left"> &nbsp; </td>
 
2521
<td valign="middle" align="left"> &nbsp; </td>
 
2522
<td valign="middle" align="left"> &nbsp; </td>
 
2523
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
2524
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
2525
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
2526
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
2527
</tr></table>
 
2528
<a name="g_t_003cversion_003e-1"></a>
 
2529
<h3 class="subsection">3.3.2 &lt;version&gt;</h3>
 
2530
 
 
2531
<p>This element provides the versioning information for the system.
 
2532
</p>
 
2533
<table><tr><td>&nbsp;</td><td><pre class="example">&lt;<i>el</i>:<b>version</b> <i>el</i>:<b>score</b>=&quot;<var>1</var>&quot; <i>el</i>:<b>release</b>=&quot;<var>1</var>&quot; <i>el</i>:<b>revision</b>=&quot;<var>0</var>&quot; <i>el</i>:<b>status</b>=&quot;<var>experimental</var>&quot;/&gt;
 
2534
</pre></td></tr></table>
 
2535
 
 
2536
<p><b>Attributes:</b>
 
2537
</p>
 
2538
<dl compact="compact">
 
2539
<dt> <b>score</b>, <i>required</i></dt>
 
2540
<dd><p>The score version is given as a positive integer number. New levels start with
 
2541
score version &ldquo;1&rdquo;. New level versions need to increase the
 
2542
score version number if the level modifications cause different solutions with
 
2543
incomparable score values. Of course, level authors should be very restrictive
 
2544
with such modifications.
 
2545
</p>
 
2546
<p>During the development of a level, you should use the attribute &lsquo;<samp><b>status</b></samp>&rsquo; to mark a
 
2547
level as not released. When the author changes the &lsquo;<samp><b>status</b></samp>&rsquo; to
 
2548
&lsquo;<samp>released</samp>&rsquo;, he has to check scoring compatibility and increase the score
 
2549
version if necessary.
 
2550
</p>
 
2551
<p>This attribute is the logical equivalence to the Enigma 0.92 &lsquo;<samp>index.txt</samp>&rsquo; attribute
 
2552
&lsquo;<samp>revision</samp>&rsquo;.
 
2553
</p>
 
2554
</dd>
 
2555
<dt> <b>release</b>, <i>required</i></dt>
 
2556
<dd><p>The technical release version is given as a positive integer number. New levels
 
2557
start with release version &ldquo;1&rdquo;. You must increase the release version number if
 
2558
the level modifications cause either technical incompatibilities with previous Enigma releases,
 
2559
or the scoring version has been increased.
 
2560
</p>
 
2561
<p>The primary cause for technical incompatibilities should be the compensation
 
2562
of Enigma engine changes. Since such compensations will not run on the old Enigma
 
2563
version, the level versions must be distinguished by a different release number.
 
2564
</p>
 
2565
<p>In both cases, technical and scoring incompatibilities, the level file name must
 
2566
be changed, too. This is necessary since different Enigma versions may be installed on some
 
2567
systems at the same time. They have the need for both level versions at the same time. Internet
 
2568
servers providing Enigma levels need to offer the different level release at the same time, too.
 
2569
</p>
 
2570
<p>To enable people to assign different level release files to a level itself, we
 
2571
strongly recommend the name convention for levels
 
2572
<var>AuthoridentifierLevelnumber_Releasenumber.Suffix</var>, where the levelnumber is at
 
2573
least 2 digits; for example, &lsquo;<samp>ral01_2.xml</samp>&rsquo;
 
2574
</p>
 
2575
</dd>
 
2576
<dt> <b>revision</b>, <i>required</i></dt>
 
2577
<dd><p>The revision number is a simple, ever-increasing version number. Every published
 
2578
version of the level should have a new revision number. The revision number is
 
2579
independent from the scoring and release version number.
 
2580
</p>
 
2581
<p>If Enigma finds two levelfiles in its data search paths with identical filenames,
 
2582
id, score and release version, it will load the one with the higher revision number.
 
2583
This feature guarantees that an older level revision stored on the user&rsquo;s
 
2584
home level directory cannot supersede a new revision of a level distributed with a new
 
2585
Enigma release. Online updates will check the level revision numbers, too.
 
2586
</p>
 
2587
<p>Although the revision evaluates to a number, the attribute can take a second
 
2588
string format as the literal keyword &lsquo;<samp>$Revision$</samp>&rsquo;. This
 
2589
<a href="http://subversion.tigris.org/">Subversion</a> format allows level authors to
 
2590
let their Subversion repository automatically insert the level revision number. They must simply
 
2591
set &lsquo;<samp>svn propset svn:keywords &quot;Revision&quot; level.xml</samp>&rsquo;
 
2592
at their repository for every level file. Since the Subversion revision number is
 
2593
ever-increasing, it fulfills our criteria. Note that Enigma does not require that revision
 
2594
numbers be consecutive.
 
2595
</p>
 
2596
</dd>
 
2597
<dt> <b>status</b>, <i>required</i>, values = &ldquo;released&rdquo;, &ldquo;stable&rdquo;, &ldquo;test&rdquo;, &ldquo;experimental&rdquo;</dt>
 
2598
<dd><p>This attribute describes the quality of the level during development. Enigma
 
2599
uses the status to protect the score database from being spoiled by unplanned solution
 
2600
scores. It will record scores only for levels marked as &lsquo;<samp>released</samp>&rsquo;.
 
2601
</p>
 
2602
<p>As a level author, if you start to change a released level, you should first change the
 
2603
status back to &lsquo;<samp>experimental</samp>&rsquo;. Then make your changes and test
 
2604
the level. When you are definitively sure that you did not introduce any spoilers,
 
2605
you can release the level again with a new revision and perhaps a new release or
 
2606
score version number.
 
2607
</p>
 
2608
</dd>
 
2609
</dl>
 
2610
 
 
2611
<p><b>Contents:</b>
 
2612
</p>
 
2613
<p>The element itself is empty - no content is allowed.
 
2614
</p>
 
2615
<hr size="6">
 
2616
<a name="g_t_003cauthor_003e"></a>
 
2617
<table cellpadding="1" cellspacing="1" border="0">
 
2618
<tr><td valign="middle" align="left">[<a href="#g_t_003cversion_003e" title="Previous section in reading order"> &lt; </a>]</td>
 
2619
<td valign="middle" align="left">[<a href="#g_t_003ccopyright_003e" title="Next section in reading order"> &gt; </a>]</td>
 
2620
<td valign="middle" align="left"> &nbsp; </td>
 
2621
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
2622
<td valign="middle" align="left">[<a href="#Info-metadata" title="Up section"> Up </a>]</td>
 
2623
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
2624
<td valign="middle" align="left"> &nbsp; </td>
 
2625
<td valign="middle" align="left"> &nbsp; </td>
 
2626
<td valign="middle" align="left"> &nbsp; </td>
 
2627
<td valign="middle" align="left"> &nbsp; </td>
 
2628
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
2629
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
2630
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
2631
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
2632
</tr></table>
 
2633
<a name="g_t_003cauthor_003e-1"></a>
 
2634
<h3 class="subsection">3.3.3 &lt;author&gt;</h3>
 
2635
 
 
2636
<p>The information about the author him/herself. Enigma requires the author element itself, but
 
2637
all attributes are optional to allow an author to be anonymous. Please remember that level
 
2638
administrators and translators may need to contact you as the author. So please provide a way
 
2639
for them to contact you.
 
2640
</p>
 
2641
<p>The author element node may look like:
 
2642
</p>
 
2643
<table><tr><td>&nbsp;</td><td><pre class="example">&lt;<i>el</i>:<b>author</b>  <i>el</i>:<b>name</b>=&quot;<var>Ronald Lamprecht</var>&quot; <i>el</i>:<b>email</b>=&quot;<var>ral@users.berlios.de</var>&quot; <i>el</i>:<b>homepage</b>=&quot;<var>http://myhomepage.domain</var>&quot;/&gt;
 
2644
</pre></td></tr></table>
 
2645
 
 
2646
<p><b>Attributes:</b>
 
2647
</p>
 
2648
<dl compact="compact">
 
2649
<dt> <b>name</b>, <i>optional</i>, default = &ldquo;anonymous&rdquo;</dt>
 
2650
<dd><p>The author&rsquo;s name as it will be displayed on the level info page and on the start
 
2651
of the level. The name defaults to &lsquo;<samp>anonymous</samp>&rsquo;.
 
2652
</p>
 
2653
</dd>
 
2654
<dt> <b>email</b>, <i>optional</i></dt>
 
2655
<dd><p>The author&rsquo;s email address or a newsgroup or forum he monitors. In general, this is a
 
2656
hint as to how to communicate with him or her. The value will simply be displayed as a string on
 
2657
the level info page.
 
2658
</p>
 
2659
</dd>
 
2660
<dt> <b>homepage</b>, <i>optional</i></dt>
 
2661
<dd><p>An address for the author or where the author publishes additional Enigma levels.
 
2662
The value will simply be displayed as a string on the level info page.
 
2663
</p>
 
2664
</dd>
 
2665
</dl>
 
2666
 
 
2667
<p><b>Contents:</b>
 
2668
</p>
 
2669
<p>The element itself is empty; no content is allowed.
 
2670
</p>
 
2671
<hr size="6">
 
2672
<a name="g_t_003ccopyright_003e"></a>
 
2673
<table cellpadding="1" cellspacing="1" border="0">
 
2674
<tr><td valign="middle" align="left">[<a href="#g_t_003cauthor_003e" title="Previous section in reading order"> &lt; </a>]</td>
 
2675
<td valign="middle" align="left">[<a href="#g_t_003clicense_003e" title="Next section in reading order"> &gt; </a>]</td>
 
2676
<td valign="middle" align="left"> &nbsp; </td>
 
2677
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
2678
<td valign="middle" align="left">[<a href="#Info-metadata" title="Up section"> Up </a>]</td>
 
2679
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
2680
<td valign="middle" align="left"> &nbsp; </td>
 
2681
<td valign="middle" align="left"> &nbsp; </td>
 
2682
<td valign="middle" align="left"> &nbsp; </td>
 
2683
<td valign="middle" align="left"> &nbsp; </td>
 
2684
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
2685
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
2686
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
2687
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
2688
</tr></table>
 
2689
<a name="g_t_003ccopyright_003e-1"></a>
 
2690
<h3 class="subsection">3.3.4 &lt;copyright&gt;</h3>
 
2691
 
 
2692
<p>The standardized location for the author&rsquo;s copyright message:
 
2693
</p><table><tr><td>&nbsp;</td><td><pre class="example">&lt;<i>el</i>:<b>copyright</b>&gt;<var>Copyright &copy; 2006 Ronald Lamprecht</var>&lt;/<i>el</i>:<b>copyright</b>&gt;
 
2694
</pre></td></tr></table>
 
2695
 
 
2696
<p><b>Attributes:</b>
 
2697
</p>
 
2698
<p>none
 
2699
</p>
 
2700
<p><b>Contents:</b>
 
2701
</p>
 
2702
<p>The author&rsquo;s copyright notice.
 
2703
</p>
 
2704
<hr size="6">
 
2705
<a name="g_t_003clicense_003e"></a>
 
2706
<table cellpadding="1" cellspacing="1" border="0">
 
2707
<tr><td valign="middle" align="left">[<a href="#g_t_003ccopyright_003e" title="Previous section in reading order"> &lt; </a>]</td>
 
2708
<td valign="middle" align="left">[<a href="#g_t_003ccompatibility_003e" title="Next section in reading order"> &gt; </a>]</td>
 
2709
<td valign="middle" align="left"> &nbsp; </td>
 
2710
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
2711
<td valign="middle" align="left">[<a href="#Info-metadata" title="Up section"> Up </a>]</td>
 
2712
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
2713
<td valign="middle" align="left"> &nbsp; </td>
 
2714
<td valign="middle" align="left"> &nbsp; </td>
 
2715
<td valign="middle" align="left"> &nbsp; </td>
 
2716
<td valign="middle" align="left"> &nbsp; </td>
 
2717
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
2718
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
2719
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
2720
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
2721
</tr></table>
 
2722
<a name="g_t_003clicense_003e-1"></a>
 
2723
<h3 class="subsection">3.3.5 &lt;license&gt;</h3>
 
2724
 
 
2725
<p>Of course, every author is free to choose the license conditions for his/her levels.
 
2726
However, the author must state the conditions. Thus, this node element and its
 
2727
attributes are required:
 
2728
</p>
 
2729
<table><tr><td>&nbsp;</td><td><pre class="example">&lt;<i>el</i>:<b>license</b> <i>el</i>:<b>type</b>=&quot;<var>GPL v2.0 or above</var>&quot; <i>el</i>:<b>open</b>=&quot;<var>true</var>&quot;/&gt;
 
2730
</pre></td></tr></table>
 
2731
 
 
2732
<p><b>Attributes:</b>
 
2733
</p>
 
2734
<dl compact="compact">
 
2735
<dt> <b>type</b>, <i>required</i></dt>
 
2736
<dd><p>A short license identifier of the license type, with an optional link address to
 
2737
the license text or the string &lsquo;<samp>special</samp>&rsquo;, if the author supplies his/her own
 
2738
license as the content of this element.
 
2739
</p>
 
2740
</dd>
 
2741
<dt> <b>open</b>, <i>required</i></dt>
 
2742
<dd><p>A boolean statement, whether the chosen license fulfills the criteria of the
 
2743
<a href="http://www.opensource.org/">Open Source Initiative (OSI)</a>. Please note
 
2744
that a value of &lsquo;<samp>false</samp>&rsquo; may prevent your level from being distributed
 
2745
with Enigma.
 
2746
</p>
 
2747
</dd>
 
2748
</dl>
 
2749
 
 
2750
<p><b>Contents:</b>
 
2751
</p>
 
2752
<p>You may add a complete license text as the contents of this element. Please
 
2753
use the type attribute to identify the level.
 
2754
</p>
 
2755
<hr size="6">
 
2756
<a name="g_t_003ccompatibility_003e"></a>
 
2757
<table cellpadding="1" cellspacing="1" border="0">
 
2758
<tr><td valign="middle" align="left">[<a href="#g_t_003clicense_003e" title="Previous section in reading order"> &lt; </a>]</td>
 
2759
<td valign="middle" align="left">[<a href="#g_t_003cmodes_003e" title="Next section in reading order"> &gt; </a>]</td>
 
2760
<td valign="middle" align="left"> &nbsp; </td>
 
2761
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
2762
<td valign="middle" align="left">[<a href="#Info-metadata" title="Up section"> Up </a>]</td>
 
2763
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
2764
<td valign="middle" align="left"> &nbsp; </td>
 
2765
<td valign="middle" align="left"> &nbsp; </td>
 
2766
<td valign="middle" align="left"> &nbsp; </td>
 
2767
<td valign="middle" align="left"> &nbsp; </td>
 
2768
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
2769
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
2770
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
2771
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
2772
</tr></table>
 
2773
<a name="g_t_003ccompatibility_003e-1"></a>
 
2774
<h3 class="subsection">3.3.6 &lt;compatibility&gt;</h3>
 
2775
 
 
2776
<table><tr><td>&nbsp;</td><td><pre class="example">&lt;<i>el</i>:<b>compatibility</b> <i>el</i>:<b>enigma</b>=&quot;<var>0.92</var>&quot; <i>el</i>:<b>engine</b>=&quot;<var>enigma</var>&quot;&gt;
 
2777
  &lt;<i>el</i>:<b>dependency</b> <i>el</i>:<b>path</b>=&quot;<var>lib/natmaze</var>&quot; <i>el</i>:<b>id</b>=&quot;<var>lib/natmaze</var>&quot; <i>el</i>:<b>release</b>=&quot;<var>1</var>&quot; <i>el</i>:<b>preload</b>=&quot;<var>true</var>&quot; <i>el</i>:<b>url</b>=&quot;<var>http://anywhere.xxx/mypage/natmaze.xml</var>&quot;/&gt;
 
2778
  &lt;<i>el</i>:<b>externaldata</b> <i>el</i>:<b>path</b>=&quot;<var>./extfile</var>&quot; <i>el</i>:<b>url</b>=&quot;<var>http://anywhere.xxx/mypage/extdata.xml</var>&quot;/&gt;
 
2779
  &lt;<i>el</i>:<b>editor</b> <i>el</i>:<b>name</b>=&quot;<var>none</var>&quot; <i>el</i>:<b>version</b>=&quot;<var></var>&quot;/&gt;
 
2780
&lt;/<i>el</i>:<b>compatibility</b>&gt;
 
2781
</pre></td></tr></table>
 
2782
 
 
2783
<p><b>Attributes:</b>
 
2784
</p>
 
2785
<dl compact="compact">
 
2786
<dt> <b>enigma</b>, <i>required</i></dt>
 
2787
<dd><p>The minimal Enigma release number required for compatibility.
 
2788
</p>
 
2789
</dd>
 
2790
<dt> <b>engine</b>, <i>optional</i>, values = &ldquo;enigma&rdquo;, &ldquo;oxyd1&rdquo;, &ldquo;per.oxyd&rdquo;, &ldquo;oxyd.extra&rdquo;, &ldquo;oxyd.magnum&rdquo;; default = &ldquo;enigma&rdquo;</dt>
 
2791
<dd><p>The required engine compatibility mode that influences the behavior of various
 
2792
objects. This attribute is evaluated only for levels. Libraries ignore this
 
2793
attribute.
 
2794
</p></dd>
 
2795
</dl>
 
2796
 
 
2797
<p><b>Contents - Elements:</b>
 
2798
</p>
 
2799
<p>The compatibility element itself contains only subelements as content.
 
2800
</p>
 
2801
<dl compact="compact">
 
2802
<dt> <b>dependency</b>, <i>optional, multiple occurrence</i></dt>
 
2803
<dd><p>You can use this element to specify any Enigma-Lua library this level depends on. You can
 
2804
specify several libraries by multiple occurrence of this element. If you configure a library to be
 
2805
preloaded, the engine will load it before it loads or executes any level Lua code. The load
 
2806
sequence of several libraries conforms strictly to the sequence of their dependencies elements.
 
2807
</p>
 
2808
<p><b>Attributes:</b>
 
2809
</p><dl compact="compact">
 
2810
<dt> <b>path</b>, <i>required</i></dt>
 
2811
<dd><p>The resource path of the library without its suffix or any release extension.
 
2812
Enigma stores most libraries in the &lsquo;<samp>lib</samp>&rsquo; subdirectory of its
 
2813
&lsquo;<samp>levels</samp>&rsquo; directory, in most cases the resource path will be like the one in
 
2814
the example above: &lsquo;<samp>lib/ant</samp>&rsquo;. This is the valid path for the library file
 
2815
that may be either &lsquo;<samp>levels/lib/ant.xml</samp>&rsquo; or &lsquo;<samp>levels/lib/ant.lua</samp>&rsquo; or
 
2816
&lsquo;<samp>levels/lib/ant_1.xml</samp>&rsquo;.
 
2817
</p>
 
2818
<p>However, libraries can also be totally level pack-specific. In this case, you may use
 
2819
a relative resource path, such as &lsquo;<samp>./mylib</samp>&rsquo; and store the library in the level
 
2820
pack directory itself.
 
2821
</p>
 
2822
</dd>
 
2823
<dt> <b>id</b>, <i>required</i></dt>
 
2824
<dd><p>The version independent id of the library, as specified in the library metadata.
 
2825
Enigma will check it on load of the library to avoid problems, and may use
 
2826
it with the release number to detect relocated libraries.
 
2827
</p>
 
2828
</dd>
 
2829
<dt> <b>release</b>, <i>required</i></dt>
 
2830
<dd><p>Although different release versions of libraries must have different filenames, we require to
 
2831
specify the library version.  Enigma will check it on load of the library to avoid problems, and
 
2832
may use it with the release number to detect relocated libraries.
 
2833
</p>
 
2834
</dd>
 
2835
<dt> <b>preload</b>, <i>required</i></dt>
 
2836
<dd><p>A boolean statement that specifies whether the library should be preloaded. If
 
2837
the library is not preloaded, you can still load it via Lua code statements. Yet
 
2838
even those libraries must be declared since Enigma will checked them on conformance.
 
2839
You should always preload your libraries if you make use of the &lsquo;<samp>elements</samp>&rsquo;
 
2840
section.
 
2841
</p>
 
2842
</dd>
 
2843
<dt> <b>url</b>, <i>optional</i></dt>
 
2844
<dd><p>This optional attribute allows you to specify a backup address for the library.
 
2845
This will be useful for using new libraries that are not yet distributed
 
2846
with the system.
 
2847
</p>
 
2848
<p>For the development and test phase of new libraries themselves, a developer can hand out test
 
2849
levels with an empty &lsquo;<samp>library</samp>&rsquo; resource path
 
2850
attribute. The test levels will load the newest library version as published
 
2851
at the given url.
 
2852
</p>
 
2853
</dd>
 
2854
</dl>
 
2855
 
 
2856
<p><b>Contents:</b>
 
2857
</p>
 
2858
<p>none.
 
2859
</p>
 
2860
</dd>
 
2861
<dt> <b>externaldata</b>, <i>optional, multiple occurrence</i></dt>
 
2862
<dd><p>You can use this element to specify any external text data file this level
 
2863
depends on. You can specify several files by multiple occurrences of this
 
2864
element. Files declared can be read via the Lua interface.
 
2865
</p>
 
2866
<p>This feature should support levels that simulate foreign games like Sokoban
 
2867
within Enigma. Due to copyrights and license conditions, the inclusion of such
 
2868
data within a level or even the distribution with Enigma may not be possible.
 
2869
However, distributing or downloading the data in the original unmodified format
 
2870
may be legal.
 
2871
</p>
 
2872
<p><b>Attributes:</b>
 
2873
</p><dl compact="compact">
 
2874
<dt> <b>path</b>, <i>required</i></dt>
 
2875
<dd><p>The resource path of the external data file without its suffix &lsquo;<samp>.txt</samp>&rsquo;. The
 
2876
path has to be either of the format <code>&quot;./name&quot;</code> for an external data file
 
2877
that is locally stored in the same folder as the level file, or will be saved
 
2878
at this position when it gets downloaded. Or the path can be of the format
 
2879
<code>&quot;externaldata/name&quot;</code> for shared external data files, that are referenced
 
2880
by multiple level files stored at different folders. The external data file will
 
2881
be locally stored or gets saved in the folder <code>&quot;levels/externaldata&quot;</code>. In any
 
2882
case the local name of the external data file will have the suffix &lsquo;<samp>.txt</samp>&rsquo;
 
2883
to mark it readable but not executable for the local operating system.
 
2884
</p>
 
2885
</dd>
 
2886
<dt> <b>url</b>, <i>optional</i></dt>
 
2887
<dd><p>This optional attribute allows you to specify an internet download address for
 
2888
the external data file. On first access a missing external data file will be
 
2889
downloaded and a copy will be stored locally for further access.
 
2890
</p></dd>
 
2891
</dl>
 
2892
 
 
2893
<p><b>Contents:</b>
 
2894
</p>
 
2895
<p>none.
 
2896
</p>
 
2897
</dd>
 
2898
<dt> <b>editor</b>, <i>optional, single occurrence</i></dt>
 
2899
<dd><p>Special level editor programs use this element to store information about themselves.
 
2900
</p>
 
2901
<p><b>Attributes:</b>
 
2902
</p>
 
2903
<dl compact="compact">
 
2904
<dt> <b>name</b>, <i>required</i></dt>
 
2905
<dd><p>The name of the level editor.
 
2906
</p>
 
2907
</dd>
 
2908
<dt> <b>version</b>, <i>required</i></dt>
 
2909
<dd><p>A version number of the editor, given as a string.
 
2910
.
 
2911
</p></dd>
 
2912
</dl>
 
2913
 
 
2914
<p><b>Contents:</b>
 
2915
</p>
 
2916
<p>none
 
2917
</p>
 
2918
</dd>
 
2919
</dl>
 
2920
 
 
2921
<p><b>Contents:</b>
 
2922
</p>
 
2923
<p>none
 
2924
</p>
 
2925
<hr size="6">
 
2926
<a name="g_t_003cmodes_003e"></a>
 
2927
<table cellpadding="1" cellspacing="1" border="0">
 
2928
<tr><td valign="middle" align="left">[<a href="#g_t_003ccompatibility_003e" title="Previous section in reading order"> &lt; </a>]</td>
 
2929
<td valign="middle" align="left">[<a href="#g_t_003ccomments_003e" title="Next section in reading order"> &gt; </a>]</td>
 
2930
<td valign="middle" align="left"> &nbsp; </td>
 
2931
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
2932
<td valign="middle" align="left">[<a href="#Info-metadata" title="Up section"> Up </a>]</td>
 
2933
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
2934
<td valign="middle" align="left"> &nbsp; </td>
 
2935
<td valign="middle" align="left"> &nbsp; </td>
 
2936
<td valign="middle" align="left"> &nbsp; </td>
 
2937
<td valign="middle" align="left"> &nbsp; </td>
 
2938
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
2939
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
2940
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
2941
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
2942
</tr></table>
 
2943
<a name="g_t_003cmodes_003e-1"></a>
 
2944
<h3 class="subsection">3.3.7 &lt;modes&gt;</h3>
 
2945
 
 
2946
<p>The modes element allows the author to declare the supported and the default
 
2947
modes of his level. Enigma&rsquo;s engine checks that the level is used in supported
 
2948
modes.
 
2949
</p>
 
2950
<table><tr><td>&nbsp;</td><td><pre class="example">&lt;<i>el</i>:<b>modes</b> <i>el</i>:<b>easy</b>=&quot;<var>false</var>&quot; <i>el</i>:<b>single</b>=&quot;<var>true</var>&quot; <i>el</i>:<b>network</b>=&quot;<var>false</var>&quot; <i>el</i>:<b>control</b>=&quot;<var>force</var>&quot; <i>el</i>:<b>scoreunit</b>=&quot;<var>duration</var>&quot; <i>el</i>:<b>scoretarget</b>=&quot;<var>time</var>&quot;/&gt;
 
2951
</pre></td></tr></table>
 
2952
 
 
2953
<p><b>Attributes:</b>
 
2954
</p>
 
2955
<dl compact="compact">
 
2956
<dt> <b>easy</b>, <i>required</i>, values = &ldquo;true&rdquo;, &ldquo;false&rdquo;</dt>
 
2957
<dd><p>If a level provides a second easy-difficulty mode, set this attribute to &lsquo;<samp>true</samp>&rsquo;.
 
2958
If only a one difficulty mode is supported, set this attribute to &lsquo;<samp>false</samp>&rsquo;.
 
2959
</p>
 
2960
</dd>
 
2961
<dt> <b>single</b>, <i>required</i>, values = &ldquo;true&rdquo;, &ldquo;false&rdquo;</dt>
 
2962
<dd><p>If a level provides a single player game as it is standard, set this attribute to
 
2963
&lsquo;<samp>true</samp>&rsquo;. Set this attribute to &lsquo;<samp>false</samp>&rsquo; only if the level is a 2-player-network game.
 
2964
</p>
 
2965
</dd>
 
2966
<dt> <b>network</b>, <i>required</i>, values = &ldquo;true&rdquo;, &ldquo;false&rdquo;</dt>
 
2967
<dd><p>If a level provides a 2-player-network game, set this attribute to &lsquo;<samp>true</samp>&rsquo;.
 
2968
If not, set this attribute to &lsquo;<samp>false</samp>&rsquo;.
 
2969
</p>
 
2970
</dd>
 
2971
<dt> <b>control</b>, <i>optional</i>, values = &ldquo;force&rdquo;, &ldquo;balance&rdquo;, &ldquo;key&rdquo;, &ldquo;other&rdquo;; default = &ldquo;force&rdquo;</dt>
 
2972
<dd><p>This attribute defines the standard control mode of the level. You can play a level by using the
 
2973
mouse to generate forces on the marbles, since it is the standard and was the only way up to
 
2974
Enigma 0.92. Or you can play a level using the mouse, or other input devices to balance the
 
2975
level-world with the marbles. Or you may use the keyboard with its cursor keys to move the
 
2976
actor like in classic Sokoban games.
 
2977
</p>
 
2978
<p>Although the user has always the last choice to define the input method he/she
 
2979
currently wants to use, the author must define the standard control-mode that
 
2980
the scoring system uses. Enigma will save and evaluate only scores achieved in the defined
 
2981
control mode for high score lists.
 
2982
</p>
 
2983
</dd>
 
2984
<dt> <b>scoreunit</b>, <i>optional</i>, values = &ldquo;duration&rdquo;, &ldquo;number&rdquo;; default = &ldquo;duration&rdquo;</dt>
 
2985
<dd><p>This attribute defines the evaluation and display mode of score values. By the
 
2986
default &lsquo;<samp>duration</samp>&rsquo;, the score is interpreted as level solution time and displayed
 
2987
in a <b>MM:SS</b> format. The &lsquo;<samp>number</samp>&rsquo; mode displays scores as plain
 
2988
numbers and lower numbers will be evaluated as better scores. This mode is appropriate
 
2989
for counting pushes and moves.
 
2990
</p>
 
2991
</dd>
 
2992
<dt> <b>scoretarget</b>, <i>optional</i>, values = &ldquo;time&rdquo;, &ldquo;pushes&rdquo;, &ldquo;moves&rdquo;, *; default = &ldquo;time&rdquo;</dt>
 
2993
<dd><p>The score target triggers the measuring of score values. &lsquo;<samp>time</samp>&rsquo; will take the
 
2994
solution time, &lsquo;<samp>pushes</samp>&rsquo; counts the pushes of stones, &lsquo;<samp>moves</samp>&rsquo; counts the
 
2995
moves of the actor. Any other value will call a Lua function for score values.
 
2996
The target is used as a short title for the score in user interface displays.
 
2997
</p>
 
2998
</dd>
 
2999
</dl>
 
3000
 
 
3001
<p><b>Contents:</b>
 
3002
</p>
 
3003
<p>none
 
3004
</p>
 
3005
<hr size="6">
 
3006
<a name="g_t_003ccomments_003e"></a>
 
3007
<table cellpadding="1" cellspacing="1" border="0">
 
3008
<tr><td valign="middle" align="left">[<a href="#g_t_003cmodes_003e" title="Previous section in reading order"> &lt; </a>]</td>
 
3009
<td valign="middle" align="left">[<a href="#g_t_003cscore_003e" title="Next section in reading order"> &gt; </a>]</td>
 
3010
<td valign="middle" align="left"> &nbsp; </td>
 
3011
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
3012
<td valign="middle" align="left">[<a href="#Info-metadata" title="Up section"> Up </a>]</td>
 
3013
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
3014
<td valign="middle" align="left"> &nbsp; </td>
 
3015
<td valign="middle" align="left"> &nbsp; </td>
 
3016
<td valign="middle" align="left"> &nbsp; </td>
 
3017
<td valign="middle" align="left"> &nbsp; </td>
 
3018
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
3019
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
3020
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
3021
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
3022
</tr></table>
 
3023
<a name="g_t_003ccomments_003e-1"></a>
 
3024
<h3 class="subsection">3.3.8 &lt;comments&gt;</h3>
 
3025
 
 
3026
<p>The optional comments node allows the author to add a few comments and to determine how
 
3027
they should be processed. Please note that internationalization support will not translate
 
3028
comments.
 
3029
</p>
 
3030
<table><tr><td>&nbsp;</td><td><pre class="example">&lt;<i>el</i>:<b>comments</b>&gt;
 
3031
    &lt;<i>el</i>:<b>credits</b> <i>el</i>:<b>showinfo</b>=&quot;<var>true</var>&quot; <i>el</i>:<b>showstart</b>=&quot;<var>false</var>&quot;&gt;<var>Thanks to the author of my favorite libs</var>&lt;/<i>el</i>:<b>credits</b>&gt;
 
3032
    &lt;<i>el</i>:<b>dedication</b> <i>el</i>:<b>showinfo</b>=&quot;<var>true</var>&quot; <i>el</i>:<b>showstart</b>=&quot;<var>false</var>&quot;&gt;<var>To a honorable or a beloved person</var>&lt;/<i>el</i>:<b>dedication</b>&gt;
 
3033
    &lt;<i>el</i>:<b>code</b>&gt;<var>some important general notes</var>&lt;/<i>el</i>:<b>code</b>&gt;
 
3034
&lt;/<i>el</i>:<b>comments</b>&gt;
 
3035
</pre></td></tr></table>
 
3036
 
 
3037
<p><b>Attributes:</b>
 
3038
none
 
3039
</p>
 
3040
<p><b>Contents - Elements:</b>
 
3041
</p>
 
3042
<p>The comments element itself contains only subelements as content.
 
3043
</p>
 
3044
<dl compact="compact">
 
3045
<dt> <b>credits</b>, <i>optional, single occurrence</i></dt>
 
3046
<dd><p>The place to honor people who helped to make your level run.
 
3047
</p>
 
3048
<p><b>Attributes:</b>
 
3049
</p><dl compact="compact">
 
3050
<dt> <b>showinfo</b>, <i>optional</i>, default = &ldquo;false&rdquo;</dt>
 
3051
<dd><p>A value of &lsquo;<samp>true</samp>&rsquo; will display the message on the level info
 
3052
page
 
3053
</p>
 
3054
</dd>
 
3055
<dt> <b>showstart</b>, <i>optional</i>, default = &ldquo;false&rdquo;</dt>
 
3056
<dd><p>A value of &lsquo;<samp>true</samp>&rsquo; will display the message on startup of the
 
3057
level. Please use this feature only in rare cases.
 
3058
</p></dd>
 
3059
</dl>
 
3060
 
 
3061
<p><b>Contents:</b>
 
3062
</p>
 
3063
<p>The credits message itself. It may be broken into several lines. Whitespace will
 
3064
be collapsed before display.
 
3065
</p>
 
3066
</dd>
 
3067
<dt> <b>dedication</b>, <i>optional, single occurrence</i></dt>
 
3068
<dd><p>The place to dedicate the level to a honorable or a beloved person. Please use
 
3069
this place instead of adding document-items within the level.
 
3070
</p>
 
3071
<p><b>Attributes:</b>
 
3072
</p><dl compact="compact">
 
3073
<dt> <b>showinfo</b>, <i>optional</i>, default = &ldquo;false&rdquo;</dt>
 
3074
<dd><p>A value of &lsquo;<samp>true</samp>&rsquo; will display the message on the level info
 
3075
page
 
3076
</p>
 
3077
</dd>
 
3078
<dt> <b>showstart</b>, <i>optional</i>, default = &ldquo;false&rdquo;</dt>
 
3079
<dd><p>A value of &lsquo;<samp>true</samp>&rsquo; will display the message on startup of the
 
3080
level. Please use this feature only in rare cases.
 
3081
</p></dd>
 
3082
</dl>
 
3083
 
 
3084
<p><b>Contents:</b>
 
3085
</p>
 
3086
<p>The dedication message itself. It may be broken into several lines. Whitespace will
 
3087
be collapsed before display.
 
3088
</p>
 
3089
</dd>
 
3090
<dt> <b>code</b>, <i>optional, single occurrence</i></dt>
 
3091
<dd>
 
3092
<p><b>Attributes:</b>
 
3093
</p>
 
3094
<p>none.
 
3095
</p>
 
3096
<p><b>Contents:</b>
 
3097
</p>
 
3098
<p>The main code comment, which may be an explanation of the <a href="#g_t_003cversion_003e">&lt;version&gt;</a> status
 
3099
or a to-do list. It may be broken into several lines. This comment will not be
 
3100
processed.
 
3101
</p>
 
3102
</dd>
 
3103
</dl>
 
3104
 
 
3105
<hr size="6">
 
3106
<a name="g_t_003cscore_003e"></a>
 
3107
<table cellpadding="1" cellspacing="1" border="0">
 
3108
<tr><td valign="middle" align="left">[<a href="#g_t_003ccomments_003e" title="Previous section in reading order"> &lt; </a>]</td>
 
3109
<td valign="middle" align="left">[<a href="#LUA-code" title="Next section in reading order"> &gt; </a>]</td>
 
3110
<td valign="middle" align="left"> &nbsp; </td>
 
3111
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
3112
<td valign="middle" align="left">[<a href="#Info-metadata" title="Up section"> Up </a>]</td>
 
3113
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
3114
<td valign="middle" align="left"> &nbsp; </td>
 
3115
<td valign="middle" align="left"> &nbsp; </td>
 
3116
<td valign="middle" align="left"> &nbsp; </td>
 
3117
<td valign="middle" align="left"> &nbsp; </td>
 
3118
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
3119
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
3120
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
3121
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
3122
</tr></table>
 
3123
<a name="g_t_003cscore_003e-1"></a>
 
3124
<h3 class="subsection">3.3.9 &lt;score&gt;</h3>
 
3125
 
 
3126
<p>In this node, the author should provide his own scoring values as hints and
 
3127
a challenge for other players. All values are related to the control mode defined
 
3128
in <a href="#g_t_003cmodes_003e">&lt;modes&gt;</a>.
 
3129
</p>
 
3130
<table><tr><td>&nbsp;</td><td><pre class="example">&lt;<i>el</i>:<b>score</b> <i>el</i>:<b>easy</b>=&quot;<var>01:07</var>&quot; <i>el</i>:<b>difficult</b>=&quot;<var>-</var>&quot;/&gt;
 
3131
</pre></td></tr></table>
 
3132
 
 
3133
<p><b>Attributes:</b>
 
3134
</p>
 
3135
<dl compact="compact">
 
3136
<dt> <b>easy</b>, <i>required</i></dt>
 
3137
<dd><p>The solution time for the easy mode. The format is either <var><b>MM:SS</b></var>, where
 
3138
MM stands for the minutes, and SS for the seconds, or <var><b>-</b></var> if the author did
 
3139
not yet solve the level him/herself. For levels with a score unit mode &lsquo;<samp>number</samp>&rsquo;,
 
3140
the value would be the number of marble moves or pushes.
 
3141
</p>
 
3142
</dd>
 
3143
<dt> <b>difficult</b>, <i>required</i></dt>
 
3144
<dd><p>The solution time for the difficult mode. The format is either <var><b>MM:SS</b></var>, where
 
3145
MM stands for the minutes, and SS for the seconds, or <var><b>-</b></var> if the author did
 
3146
not yet solve the level him/herself. For levels with a score unit mode &lsquo;<samp>number</samp>&rsquo;,
 
3147
the value would be the number of marble moves or pushes.
 
3148
</p>
 
3149
</dd>
 
3150
</dl>
 
3151
 
 
3152
<p><b>Contents:</b>
 
3153
</p>
 
3154
<hr size="6">
 
3155
<a name="LUA-code"></a>
 
3156
<table cellpadding="1" cellspacing="1" border="0">
 
3157
<tr><td valign="middle" align="left">[<a href="#g_t_003cscore_003e" title="Previous section in reading order"> &lt; </a>]</td>
 
3158
<td valign="middle" align="left">[<a href="#Internationalization-_0028i18n_0029" title="Next section in reading order"> &gt; </a>]</td>
 
3159
<td valign="middle" align="left"> &nbsp; </td>
 
3160
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
3161
<td valign="middle" align="left">[<a href="#Level-Basics" title="Up section"> Up </a>]</td>
 
3162
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
3163
<td valign="middle" align="left"> &nbsp; </td>
 
3164
<td valign="middle" align="left"> &nbsp; </td>
 
3165
<td valign="middle" align="left"> &nbsp; </td>
 
3166
<td valign="middle" align="left"> &nbsp; </td>
 
3167
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
3168
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
3169
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
3170
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
3171
</tr></table>
 
3172
<a name="LUA-code-1"></a>
 
3173
<h2 class="section">3.4 LUA code</h2>
 
3174
 
 
3175
<p>This element takes any Lua code as a single chunk with nearly no limitations:
 
3176
</p>
 
3177
<table><tr><td>&nbsp;</td><td><pre class="example">    &lt;<i>el</i>:<b>luamain</b>&gt;&lt;![CDATA[
 
3178
levelw = 20
 
3179
levelh = 13
 
3180
 
 
3181
create_world( levelw, levelh)
 
3182
draw_border(&quot;st-wood&quot;)
 
3183
fill_floor(&quot;fl-leavesb&quot;, 0,0,levelw,levelh)
 
3184
 
 
3185
oxyd( 4,4)
 
3186
oxyd( 14,4)
 
3187
 
 
3188
document(5,10,&quot;hint1&quot;)
 
3189
document(10,10,&quot;hint2&quot;)
 
3190
document(10,5,&quot;Heureka!&quot;)
 
3191
set_actor(&quot;ac-blackball&quot;, 4, 11)
 
3192
    ]]&gt;&lt;/<i>el</i>:<b>luamain</b>&gt;
 
3193
</pre></td></tr></table>
 
3194
 
 
3195
<p><b>Attributes:</b>
 
3196
</p>
 
3197
<p>none
 
3198
</p>
 
3199
<p><b>Contents:</b>
 
3200
</p>
 
3201
<p>This element takes the main Lua code as its contents.
 
3202
</p>
 
3203
<p>All other possible libraries that are declared as dependencies, and Lua chunks
 
3204
supplied by XML elements are preloaded as described in <a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a>.
 
3205
Generally there is no more need to use Lua functions like &lsquo;<samp>Require</samp>&rsquo; to load
 
3206
libraries. Just in case you need to control the point of execution were the
 
3207
library must be loaded, you can declare the library with the attribute
 
3208
&lsquo;<samp>el:preload=&quot;false&quot;</samp>&rsquo;. You should use the new function @ref{enigma.LoadLib}
 
3209
to load the library.
 
3210
</p>
 
3211
<p>The Lua code that is enclosed in a XML CDATA section. This limits the
 
3212
Lua code not to use the reserved end marker &lsquo;<samp>]]&gt;</samp>&rsquo;. Any occurrence must be
 
3213
substituted by &lsquo;<samp>]] &gt;</samp>&rsquo;.
 
3214
</p>
 
3215
<p>On the other hand, the XML format extends the Lua capabilities to the use of
 
3216
encodings. You may use Lua strings and comments with Umlauts, but Lua identifiers are still
 
3217
limited to pure US-ASCII. The benefit is that you can use Umlauts and
 
3218
other non-ASCII characters within it-document hints.
 
3219
</p>
 
3220
<hr size="6">
 
3221
<a name="Internationalization-_0028i18n_0029"></a>
 
3222
<table cellpadding="1" cellspacing="1" border="0">
 
3223
<tr><td valign="middle" align="left">[<a href="#LUA-code" title="Previous section in reading order"> &lt; </a>]</td>
 
3224
<td valign="middle" align="left">[<a href="#Usage" title="Next section in reading order"> &gt; </a>]</td>
 
3225
<td valign="middle" align="left"> &nbsp; </td>
 
3226
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
3227
<td valign="middle" align="left">[<a href="#Level-Basics" title="Up section"> Up </a>]</td>
 
3228
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
3229
<td valign="middle" align="left"> &nbsp; </td>
 
3230
<td valign="middle" align="left"> &nbsp; </td>
 
3231
<td valign="middle" align="left"> &nbsp; </td>
 
3232
<td valign="middle" align="left"> &nbsp; </td>
 
3233
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
3234
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
3235
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
3236
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
3237
</tr></table>
 
3238
<a name="Internationalization-_0028i18n_0029-1"></a>
 
3239
<h2 class="section">3.5 Internationalization (i18n)</h2>
 
3240
 
 
3241
<p>The internationalization of levels is a driving force behind the level
 
3242
format changes. As you may have noticed, there are two &lsquo;<samp>i18n</samp>&rsquo; elements, one
 
3243
in the author&rsquo;s protected section and one in the public. Let us review how to use
 
3244
them for internationalization of the three documents of our &lsquo;<samp>demo_i18n.xml</samp>&rsquo;
 
3245
level:
 
3246
</p>
 
3247
<table><tr><td>&nbsp;</td><td><pre class="example">  &lt;<i>el</i>:<b>protected</b> &gt;
 
3248
    &lt;!-- elements omitted --&gt;
 
3249
    &lt;<i>el</i>:<b>i18n</b>&gt;
 
3250
      &lt;<i>el</i>:<b>string</b> <i>el</i>:<b>key</b>=&quot;<var>title</var>&quot;&gt;
 
3251
        &lt;<i>el</i>:<b>english</b> <i>el</i>:<b>translate</b>=&quot;<var>false</var>&quot;/&gt;
 
3252
      &lt;/<i>el</i>:<b>string</b>&gt;
 
3253
      &lt;<i>el</i>:<b>string</b> <i>el</i>:<b>key</b>=&quot;<var>subtitle</var>&quot;&gt;
 
3254
        &lt;<i>el</i>:<b>english</b> <i>el</i>:<b>translate</b>=&quot;<var>true</var>&quot;/&gt;
 
3255
        &lt;<i>el</i>:<b>translation</b> <i>el</i>:<b>lang</b>=&quot;<var>de</var>&quot;&gt;<var>&Uuml;bersetzten oder &uuml;bersetzten lassen</var>&lt;/<i>el</i>:<b>translation</b>&gt;
 
3256
      &lt;/<i>el</i>:<b>string</b>&gt;
 
3257
      &lt;<i>el</i>:<b>string</b> <i>el</i>:<b>key</b>=&quot;<var>hint1</var>&quot;&gt;
 
3258
        &lt;<i>el</i>:<b>english</b> <i>el</i>:<b>comment</b>=&quot;<var>Let 'right' be ambiguous: correct and opposite of left - if not possible choose correct&quot;&gt;Read the right document</var>&lt;/<i>el</i>:<b>english</b>&gt;
 
3259
        &lt;<i>el</i>:<b>translation</b> <i>el</i>:<b>lang</b>=&quot;<var>de</var>&quot;&gt;<var>Lies das rechte Dokument</var>&lt;/<i>el</i>:<b>translation</b>&gt;
 
3260
      &lt;/<i>el</i>:<b>string</b>&gt;
 
3261
      &lt;<i>el</i>:<b>string</b> <i>el</i>:<b>key</b>=&quot;<var>hint2</var>&quot;&gt;
 
3262
        &lt;<i>el</i>:<b>english</b> <i>el</i>:<b>comment</b>=&quot;<var>the correct one and not the right positioned one</var>&quot;&gt;<var>The right one, not the right one!</var>&lt;/<i>el</i>:<b>english</b>&gt;
 
3263
        &lt;<i>el</i>:<b>translation</b> <i>el</i>:<b>lang</b>=&quot;<var>de</var>&quot;&gt;<var>Das rechte, nicht das rechte</var>&lt;/<i>el</i>:<b>translation</b>&gt;
 
3264
      &lt;/<i>el</i>:<b>string</b>&gt;
 
3265
      &lt;<i>el</i>:<b>string</b> <i>el</i>:<b>key</b>=&quot;<var>Heureka!</var>&quot;&gt;
 
3266
        &lt;<i>el</i>:<b>english</b> <i>el</i>:<b>translate</b>=&quot;<var>false</var>&quot;&gt;<var>Heureka!</var>&lt;/<i>el</i>:<b>english</b>&gt;
 
3267
      &lt;/<i>el</i>:<b>string</b>&gt;
 
3268
    &lt;/<i>el</i>:<b>i18n</b>&gt;
 
3269
  &lt;/<i>el</i>:<b>protected</b>&gt;
 
3270
  &lt;<i>el</i>:<b>public</b>&gt;
 
3271
    &lt;<i>el</i>:<b>i18n</b>&gt;
 
3272
      &lt;<i>el</i>:<b>string</b> <i>el</i>:<b>key</b>=&quot;<var>hint1</var>&quot;&gt;
 
3273
        &lt;<i>el</i>:<b>translation</b> <i>el</i>:<b>lang</b>=&quot;<var>fr</var>&quot;&gt;<var>Lisez la document de droite</var>&lt;/<i>el</i>:<b>translation</b>&gt;
 
3274
      &lt;/<i>el</i>:<b>string</b>&gt;
 
3275
    &lt;/<i>el</i>:<b>i18n</b>&gt;
 
3276
  &lt;/<i>el</i>:<b>public</b>&gt;
 
3277
</pre></td></tr></table>
 
3278
 
 
3279
<p>Two of the documents use key words to reference a string. The last one uses the
 
3280
English string itself as the key. There are two additional reserved keys,
 
3281
&lsquo;<samp>title</samp>&rsquo; and &lsquo;<samp>subtitle</samp>&rsquo;.
 
3282
</p>
 
3283
<p>For each string we like to translate or have translated, we define a &lsquo;<samp>string</samp>&rsquo;
 
3284
subelement of the protected section and add a &lsquo;<samp>english</samp>&rsquo; subelement to the
 
3285
&lsquo;<samp>string</samp>&rsquo; element itself. The &lsquo;<samp>string</samp>&rsquo; element just takes a single
 
3286
mandatory attribute, the key of the string. The &lsquo;<samp>english</samp>&rsquo; element has a
 
3287
single mandatory attribute &lsquo;<samp>translate</samp>&rsquo; that defaults to &lsquo;<samp>true</samp>&rsquo;, stating
 
3288
the author&rsquo;s decision whether the string should be translated. If the author
 
3289
does not want a string to be translated, he can and must simply add no &lsquo;<samp>string</samp>&rsquo;
 
3290
element for this string at all. Thus, the elements for the strings with the keys
 
3291
&lsquo;<samp>title</samp>&rsquo; and &lsquo;<samp>Heureka!</samp>&rsquo; are optional and quite unusual.
 
3292
</p>
 
3293
<p>&lsquo;<samp>title</samp>&rsquo; and &lsquo;<samp>subtitle</samp>&rsquo; display the English text in the <a href="#g_t_003cidentity_003e">&lt;identity&gt;</a>
 
3294
element. All other strings referenced by keys need to add the
 
3295
English text as the content of the &lsquo;<samp>english</samp>&rsquo; element. &lsquo;<samp>hint1</samp>&rsquo; and
 
3296
&lsquo;<samp>hint2</samp>&rsquo; are examples.
 
3297
</p>
 
3298
<p>Because we chose quite ambiguous English texts, it is very likely that translators
 
3299
who do not play the game but just translate the text, may deliver a wrong
 
3300
translation. To avoid mistakes, a level author may add a &lsquo;<samp>comment</samp>&rsquo; attribute
 
3301
to the &lsquo;<samp>english</samp>&rsquo; element. The translator receives this comment with
 
3302
the English string as we will see later.
 
3303
</p>
 
3304
<p>If the author is not native English-speaking, he should add his own &lsquo;<samp>translation</samp>&rsquo;
 
3305
subelement to the &lsquo;<samp>string</samp>&rsquo; element. The &lsquo;<samp>translation</samp>&rsquo; element has a
 
3306
single mandatory attribute &lsquo;<samp>lang</samp>&rsquo; that takes the 2-character language
 
3307
abbreviation. The contents of the element is the translation itself.
 
3308
</p>
 
3309
<p>All translations added in the protected section take precedence over any translator&rsquo;s
 
3310
translation and will work directly after addition without waiting for a translator&rsquo;s
 
3311
translation.
 
3312
</p>
 
3313
<p>Last but not least, we have an &lsquo;<samp>i18n</samp>&rsquo; element in the public section. This element
 
3314
takes translation suggestions. The author may add them him/herself for other
 
3315
languages he/she knows. They may be added by others on the way to the user,
 
3316
or even by the user himself.
 
3317
</p>
 
3318
<p>Translations in this section will work immediately after addition without
 
3319
waiting for a translator&rsquo;s translation. However, available translations, provided by translators,
 
3320
will precede them.
 
3321
</p>
 
3322
<p>The format is identical to the protected section, with the exception that no
 
3323
&lsquo;<samp>english</samp>&rsquo; element may be provided. The &lsquo;<samp>key</samp>&rsquo; attribute in the
 
3324
&lsquo;<samp>string</samp>&rsquo; element must match exactly the &lsquo;<samp>key</samp>&rsquo; attribute in the corresponding
 
3325
&lsquo;<samp>string</samp>&rsquo; element in the protected section. One subtle difference exists,
 
3326
due to technical and practical reasons. &lsquo;<samp>key</samp>&rsquo; attributes in the public
 
3327
section need to be XML identifiers; thus, you cannot provide public translations
 
3328
for strings that use the English phrase as the key. Choose a keyword and provide
 
3329
the English string in the public &lsquo;<samp>i18n</samp>&rsquo; section to avoid these troubles.
 
3330
</p>
 
3331
<p>The &lsquo;<samp>string</samp>&rsquo; element in protected section and in the public section
 
3332
must be unique concerning the attribute &lsquo;<samp>key</samp>&rsquo; within the section. This means
 
3333
you should add translations for all known languages for a string in &lsquo;<samp>string</samp>&rsquo;
 
3334
element in the protected and in the public section. The sequence does not matter.
 
3335
</p>
 
3336
<p>Let us review what the translator receives for each string. Let us
 
3337
start with &lsquo;<samp>hint2</samp>&rsquo; for the German translator:
 
3338
</p>
 
3339
<table><tr><td>&nbsp;</td><td><pre class="example">#  <i>level</i>: &quot;<var>Demo Internationalization</var>&quot;
 
3340
#  <i>author</i>: &quot;<var>Ronald Lamprecht</var>&quot; <i>email</i> &quot;<var>ral@users.berlios.de</var>&quot;
 
3341
#  <i>comment</i>: &quot;<var>the correct one and not the right positioned one</var>&quot;
 
3342
#  <i>use</i>: &quot;<var>Das rechte, nicht das rechte</var>&quot;
 
3343
#: po/level_i18n.cc:17
 
3344
<b>msgid</b> &quot;<var>The right one, not the right one!</var>&quot;
 
3345
<b>msgstr</b> &quot;&quot;
 
3346
</pre></td></tr></table>
 
3347
 
 
3348
<p>&lsquo;<samp>msgid</samp>&rsquo; is the English string. &lsquo;<samp>msgstr</samp>&rsquo; takes the German translation.
 
3349
But the translator does not need to translate since the author provided the German translation
 
3350
in the &lsquo;<samp>#  use:</samp>&rsquo; line
 
3351
</p>
 
3352
<p>As another example, &lsquo;<samp>hint1</samp>&rsquo; for the French translator:
 
3353
</p><table><tr><td>&nbsp;</td><td><pre class="example">#  <i>level</i>: &quot;<var>Demo Internationalization</var>&quot;
 
3354
#  <i>author</i>: &quot;<var>Ronald Lamprecht</var>&quot; <i>email</i> &quot;<var>ral@users.berlios.de</var>&quot;
 
3355
#  <i>comment</i>: &quot;<var>Let 'right' be ambiguous: correct and opposite of left - if not possible choose correct</var>&quot;
 
3356
#  <i>check</i>: &quot;<var>Lisez la document de droite</var>&quot;
 
3357
#: po/level_i18n.cc:14
 
3358
<b>msgid</b> &quot;<var>Read the right document</var>&quot;
 
3359
<b>msgstr</b> &quot;<var>Lisez le document de droite</var>&quot;
 
3360
</pre></td></tr></table>
 
3361
 
 
3362
<p>Here the author gives the public translation in the &lsquo;<samp>#  check:</samp>&rsquo; line. Since it
 
3363
contains at least one mistake, the translator will correct it, as shown in the &lsquo;<samp>msgstr</samp>&rsquo;
 
3364
string.
 
3365
</p>
 
3366
<hr size="6">
 
3367
<a name="Usage"></a>
 
3368
<table cellpadding="1" cellspacing="1" border="0">
 
3369
<tr><td valign="middle" align="left">[<a href="#Internationalization-_0028i18n_0029" title="Previous section in reading order"> &lt; </a>]</td>
 
3370
<td valign="middle" align="left">[<a href="#Update-and-Upgrade" title="Next section in reading order"> &gt; </a>]</td>
 
3371
<td valign="middle" align="left"> &nbsp; </td>
 
3372
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
3373
<td valign="middle" align="left">[<a href="#Level-Basics" title="Up section"> Up </a>]</td>
 
3374
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
3375
<td valign="middle" align="left"> &nbsp; </td>
 
3376
<td valign="middle" align="left"> &nbsp; </td>
 
3377
<td valign="middle" align="left"> &nbsp; </td>
 
3378
<td valign="middle" align="left"> &nbsp; </td>
 
3379
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
3380
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
3381
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
3382
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
3383
</tr></table>
 
3384
<a name="Usage-1"></a>
 
3385
<h2 class="section">3.6 Usage</h2>
 
3386
 
 
3387
<p>After all the theory, let&rsquo;s look at how to deal with the XML levelformat in
 
3388
practice. Of course, you will not assemble all XML metadata from scratch for
 
3389
every new level you write. You should use templates. You can start with any
 
3390
existing level, for example, the &lsquo;<samp>demo_i18n.xml</samp>&rsquo; supplied with this
 
3391
documentation. Add your personal data to your template and store it as the basis for all new
 
3392
levels you write.
 
3393
</p>
 
3394
<p>Some level authors are very familiar with the Lua file format since their favorite editor supports
 
3395
Lua files with syntax coloring. The XML file name and the XML elements will cause
 
3396
their editor to use XML syntax coloring. Nevertheless, these authors are used
 
3397
to supplying metadata in the header of their Lua levels as non-standardized Lua
 
3398
comments; we decided to support a similar Lua-compatible XML format. We call it
 
3399
&ldquo;Lua commented XML&rdquo; since it simply comments out all XML lines with the Lua comment
 
3400
&lsquo;<samp>--xml-- </samp>&rsquo;. For example:
 
3401
</p>
 
3402
<table><tr><td>&nbsp;</td><td><pre class="example">--xml-- &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot; ?&gt;
 
3403
--xml-- &lt;el:level xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://enigma-game.org/schema/level/1 level.xsd&quot; xmlns:el=&quot;http://enigma-game.org/schema/level/1&quot;&gt;
 
3404
--xml--   &lt;el:protected &gt;
 
3405
--xml--     &lt;el:info el:type=&quot;level&quot;&gt;
 
3406
--xml--       &lt;el:identity el:title=&quot;Demo Simple&quot; el:id=&quot;20060210ral001&quot;/&gt;
 
3407
--xml--       &lt;el:version el:score=&quot;1&quot; el:release=&quot;1&quot; el:revision=&quot;0&quot; el:status=&quot;stable&quot;/&gt;
 
3408
--xml--       &lt;el:author el:name=&quot;Ronald Lamprecht&quot;/&gt;
 
3409
--xml--       &lt;el:copyright&gt;Copyright &copy; 2006 Ronald Lamprecht&lt;/el:copyright&gt;
 
3410
--xml--       &lt;el:license el:type=&quot;GPL2&quot; el:open=&quot;true&quot;&gt;GPL v2.0 or above&lt;/el:license&gt;
 
3411
--xml--       &lt;el:compatibility el:enigma=&quot;0.92&quot;/&gt;
 
3412
--xml--       &lt;el:modes el:easy=&quot;false&quot; el:single=&quot;true&quot; el:network=&quot;false&quot;/&gt;
 
3413
--xml--       &lt;el:score el:easy=&quot;-&quot; el:difficult=&quot;-&quot;/&gt;
 
3414
--xml--     &lt;/el:info&gt;
 
3415
--xml--     &lt;el:luamain&gt;&lt;![CDATA[
 
3416
levelw = 20
 
3417
levelh = 13
 
3418
 
 
3419
<b>create_world</b>( levelw, levelh)
 
3420
<b>draw_border</b>(&quot;<i>st-wood</i>&quot;)
 
3421
<b>fill_floor</b>(&quot;<i>fl-leavesb</i>&quot;, 0,0,levelw,levelh)
 
3422
 
 
3423
<b>oxyd</b>( 4,4)
 
3424
<b>oxyd</b>( 14,4)
 
3425
 
 
3426
<b>set_actor</b>(&quot;<i>ac-blackball</i>&quot;, 4, 11)
 
3427
--xml--     ]]&gt;&lt;/el:luamain&gt;
 
3428
--xml--     &lt;el:i18n/&gt;
 
3429
--xml--   &lt;/el:protected&gt;
 
3430
--xml-- &lt;/el:level&gt;
 
3431
</pre></td></tr></table>
 
3432
 
 
3433
<p>Please note that each XML metadata line must start exactly with &lsquo;<samp>--xml-- </samp>&rsquo;,
 
3434
8 characters, including the space at the end! An additional limitation of the
 
3435
Lua-commented XML format arises from Lua&rsquo;s capability of handling character
 
3436
encodings. You need to limit yourself to &lsquo;<samp>UTF-8</samp>&rsquo; or, of course &lsquo;<samp>US-ASCII</samp>&rsquo;
 
3437
to successfully use the Lua-commented XML format. Please remember, that
 
3438
although the XML part is Lua-commented, it must still be evaluated and thus must be
 
3439
valid.
 
3440
</p>
 
3441
<p>Every level stored in this Lua-commented XML format as a file with extension
 
3442
&lsquo;<samp>.lua</samp>&rsquo; can be used locally for command line use as well as in any level
 
3443
package that is stored on the Enigma user&rsquo;s home directory. However, Lua-commented XML
 
3444
levels cannot be stored on Internet servers or be updated online. Thus,
 
3445
this format is good for level development, but you should convert the levels
 
3446
to the pure XML format for distribution. Please note that Enigma looks for XML levels
 
3447
first, and uses Lua levels only if it can&rsquo;t find an XML level.
 
3448
</p>
 
3449
<p>Another use of Lua-commented XML levels is the format backward compatibility to
 
3450
Enigma 0.92. If levels do not use new Enigma features, you can include
 
3451
your levels in Enigma 0.92 level packages in this format.
 
3452
</p>
 
3453
<p>Since you may need to convert levels several times between the XML and the Lua format,
 
3454
we do provide tools for conversion: &lsquo;<samp>xml2lua</samp>&rsquo; and &lsquo;<samp>lua2xml</samp>&rsquo;. Both are
 
3455
very simple Lua 5 scripts that you can execute as
 
3456
&lsquo;<samp>lua xml2lua demo_simple.xml &gt; demo_simple.lua</samp>&rsquo; with a properly installed
 
3457
Lua 5 version. On Unix systems, you can mark the scripts as executable and
 
3458
simply call &lsquo;<samp>xml2lua demo_simple.xml &gt; demo_simple.lua</samp>&rsquo;.
 
3459
</p>
 
3460
<p>Of course you can add the conversion algorithms as simple macros for your favorite
 
3461
editor. Please publish any editor macros you write.
 
3462
</p>
 
3463
<p>As you fiddle with the XML metadata, you may produce syntactical errors, of course.
 
3464
You can validate your level by trying to start it with Enigma. XML errors are
 
3465
output as Lua errors are. If the error messages are too long to read, you may
 
3466
want to start Enigma from the command line with the option &lsquo;<samp>--log</samp>&rsquo; and read the
 
3467
messages printed to the command line or written to the file &lsquo;<samp>stdout.txt</samp>&rsquo; on
 
3468
the current working directory for Windows systems.
 
3469
</p>
 
3470
<p>Of course, you can use any external XML validation tool, too. You just need to
 
3471
copy the schema file &lsquo;<samp>level.xsd</samp>&rsquo; on the same directory as the level itself.
 
3472
Possible validation tools are the Xerces-C sample application
 
3473
&lsquo;<samp>DOMPrint.exe -n -s -f -v=always level.xml</samp>&rsquo; or validating editors, such as
 
3474
<a href="http://www.freexmleditor.com/">Exchanger XML Lite</a>. Such editors will provide
 
3475
you with selections of all possible elements and attributes at each position.
 
3476
</p>
 
3477
<hr size="6">
 
3478
<a name="Update-and-Upgrade"></a>
 
3479
<table cellpadding="1" cellspacing="1" border="0">
 
3480
<tr><td valign="middle" align="left">[<a href="#Usage" title="Previous section in reading order"> &lt; </a>]</td>
 
3481
<td valign="middle" align="left">[<a href="#Library-Files" title="Next section in reading order"> &gt; </a>]</td>
 
3482
<td valign="middle" align="left"> &nbsp; </td>
 
3483
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
3484
<td valign="middle" align="left">[<a href="#Level-Basics" title="Up section"> Up </a>]</td>
 
3485
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
3486
<td valign="middle" align="left"> &nbsp; </td>
 
3487
<td valign="middle" align="left"> &nbsp; </td>
 
3488
<td valign="middle" align="left"> &nbsp; </td>
 
3489
<td valign="middle" align="left"> &nbsp; </td>
 
3490
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
3491
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
3492
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
3493
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
3494
</tr></table>
 
3495
<a name="Update-and-Upgrade-1"></a>
 
3496
<h2 class="section">3.7 Update and Upgrade</h2>
 
3497
 
 
3498
<p>Enigma is able to load new level versions since we provide all necessary
 
3499
attributes in the <a href="#g_t_003cversion_003e">&lt;version&gt;</a> element.
 
3500
</p>
 
3501
<p>If Enigma loads a new level version, which differs just in the &lsquo;<samp><b>revision</b></samp>&rsquo;, we speak of
 
3502
an &lsquo;<samp><b>update</b></samp>&rsquo;. You can perform updates automatically and replace old versions with
 
3503
the updates, since the author guarantees them to be compatible in scoring and
 
3504
dependencies. The author should provide a download address for automatic updates in the
 
3505
protected info element:
 
3506
</p>
 
3507
<table><tr><td>&nbsp;</td><td><pre class="example">&lt;<i>el</i>:<b>update</b> <i>el</i>:<b>url</b>=&quot;<var>http://myLevelServer.org/path/level_1.xml</var>&quot;/&gt;
 
3508
</pre></td></tr></table>
 
3509
 
 
3510
<p><b>Attributes:</b>
 
3511
</p>
 
3512
<dl compact="compact">
 
3513
<dt> <b>url</b>, <i>required</i></dt>
 
3514
<dd><p>A long-term valid, complete address for update downloads of this level in the same score and
 
3515
release version.
 
3516
</p>
 
3517
</dd>
 
3518
</dl>
 
3519
 
 
3520
<p>If the author of a level introduces incompatibilities into the level, he increases the release
 
3521
version of the level and stores it with a new filename. We call the download of such a new level
 
3522
version an &lsquo;<samp><b>upgrade</b></samp>&rsquo;.
 
3523
</p>
 
3524
<p>To publish the availability of an upgrade release, the author should update the previous release
 
3525
with a final revision that simply adds an upgrade element that announces the new release:
 
3526
</p>
 
3527
<table><tr><td>&nbsp;</td><td><pre class="example">&lt;<i>el</i>:<b>upgrade</b> <i>el</i>:<b>url</b>=&quot;<var>http://myLevelServer.org/path/level_2.xml</var>&quot; <i>el</i>:<b>release</b>=&quot;<var>2</var>&quot;/&gt;
 
3528
</pre></td></tr></table>
 
3529
 
 
3530
<p><b>Attributes:</b>
 
3531
</p>
 
3532
<dl compact="compact">
 
3533
<dt> <b>url</b>, <i>required</i></dt>
 
3534
<dd><p>A long-term valid, complete address for upgrade downloads of this level. A path
 
3535
to the new file.
 
3536
</p>
 
3537
</dd>
 
3538
<dt> <b>release</b>, <i>required</i></dt>
 
3539
<dd><p>The release version of the upgrade.
 
3540
</p>
 
3541
</dd>
 
3542
</dl>
 
3543
 
 
3544
<p>Since the author cannot update all distributed levels himself to announce the availability of the
 
3545
new release, we added another upgrade element in the public section. Level administrators can
 
3546
use this element for the same purpose, with the same syntax, without modifying the author&rsquo;s
 
3547
protected section.
 
3548
</p>
 
3549
<hr size="6">
 
3550
<a name="Library-Files"></a>
 
3551
<table cellpadding="1" cellspacing="1" border="0">
 
3552
<tr><td valign="middle" align="left">[<a href="#Update-and-Upgrade" title="Previous section in reading order"> &lt; </a>]</td>
 
3553
<td valign="middle" align="left">[<a href="#Writing-a-Library" title="Next section in reading order"> &gt; </a>]</td>
 
3554
<td valign="middle" align="left"> &nbsp; </td>
 
3555
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
3556
<td valign="middle" align="left">[<a href="#Level-Basics" title="Up section"> Up </a>]</td>
 
3557
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
3558
<td valign="middle" align="left"> &nbsp; </td>
 
3559
<td valign="middle" align="left"> &nbsp; </td>
 
3560
<td valign="middle" align="left"> &nbsp; </td>
 
3561
<td valign="middle" align="left"> &nbsp; </td>
 
3562
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
3563
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
3564
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
3565
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
3566
</tr></table>
 
3567
<a name="Library-Files-1"></a>
 
3568
<h2 class="section">3.8 Library Files</h2>
 
3569
 
 
3570
<p>Libraries are collections of Lua functions for reuse in many levels. To use a library, you must
 
3571
declare it as a dependency, as described in <a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a>. Preloading the library is all
 
3572
you have to do to use the library. Otherwise, you can use the function @ref{enigma.LoadLib} to
 
3573
load the library at a certain point of execution.
 
3574
</p>
 
3575
<p>Enigma provides several very useful <a href="#Libraries">Libraries</a>. You will find them on the system
 
3576
path in the subdirectory &lsquo;<samp>levels/lib</samp>&rsquo;. Most of them are documented in-line.
 
3577
You will find a separate documentation file
 
3578
&lsquo;<samp>doc/ant_lua.txt</samp>&rsquo; for &lsquo;<samp>ant</samp>&rsquo;.
 
3579
</p>
 
3580
<p>In this section, we will concentrate on the aspects of writing and maintaining
 
3581
libraries:
 
3582
</p>
 
3583
<table class="menu" border="0" cellspacing="0">
 
3584
<tr><td align="left" valign="top"><a href="#Writing-a-Library">3.8.1 Writing a Library</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
3585
</td></tr>
 
3586
<tr><td align="left" valign="top"><a href="#Maintaining-a-Library">3.8.2 Maintaining a Library</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
3587
</td></tr>
 
3588
</table>
 
3589
 
 
3590
<hr size="6">
 
3591
<a name="Writing-a-Library"></a>
 
3592
<table cellpadding="1" cellspacing="1" border="0">
 
3593
<tr><td valign="middle" align="left">[<a href="#Library-Files" title="Previous section in reading order"> &lt; </a>]</td>
 
3594
<td valign="middle" align="left">[<a href="#Maintaining-a-Library" title="Next section in reading order"> &gt; </a>]</td>
 
3595
<td valign="middle" align="left"> &nbsp; </td>
 
3596
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
3597
<td valign="middle" align="left">[<a href="#Library-Files" title="Up section"> Up </a>]</td>
 
3598
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
3599
<td valign="middle" align="left"> &nbsp; </td>
 
3600
<td valign="middle" align="left"> &nbsp; </td>
 
3601
<td valign="middle" align="left"> &nbsp; </td>
 
3602
<td valign="middle" align="left"> &nbsp; </td>
 
3603
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
3604
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
3605
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
3606
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
3607
</tr></table>
 
3608
<a name="Writing-a-Library-1"></a>
 
3609
<h3 class="subsection">3.8.1 Writing a Library</h3>
 
3610
 
 
3611
<p>Library files are nearly identical to level files. The main difference is the
 
3612
attribute &lsquo;<samp>el:type</samp>&rsquo; in the &lsquo;<samp>info</samp>&rsquo; element, which you should set to
 
3613
&lsquo;<samp>library</samp>&rsquo;. You must provide all other elements and attributes as you
 
3614
must for levels. Of course no scoring related attributes will ever be
 
3615
evaluated and you should set them to default.
 
3616
</p>
 
3617
<p>Libraries may depend on others, so you must provide an id and a release number.
 
3618
Several releases of a library can coexist and you can update and upgrade them
 
3619
if you provide the necessary information. Of course, libraries may contain document
 
3620
strings that can be localized if you provide the &lsquo;<samp>i18n</samp>&rsquo; elements.
 
3621
</p>
 
3622
<p>The &lsquo;<samp>el:luamain</samp>&rsquo; element takes the complete Lua code as it does for levels.
 
3623
Let&rsquo;s look at the essential XML parts of a library:
 
3624
</p>
 
3625
<table><tr><td>&nbsp;</td><td><pre class="example">&lt;?xml version=&quot;1.0&quot; encoding=&quot;<var>UTF-8</var>&quot; standalone=&quot;no&quot; ?&gt;
 
3626
&lt;<i>el</i>:<b>level</b> xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;<i>http://enigma-game.org/schema/level/1 level.xsd</i>&quot; xmlns:<i>el</i>=&quot;<i>http://enigma-game.org/schema/level/1</i>&quot;&gt;
 
3627
  &lt;<i>el</i>:<b>protected</b> &gt;
 
3628
    &lt;<i>el</i>:<b>info</b> <i>el</i>:<b>type</b>=&quot;<var>library</var>&quot;&gt;
 
3629
      &lt;<i>el</i>:<b>identity</b> <i>el</i>:<b>title</b>=&quot;&quot; <i>el</i>:<b>id</b>=&quot;<var>lib/ant</var>&quot;/&gt;
 
3630
      &lt;<i>el</i>:<b>version</b> <i>el</i>:<b>score</b>=&quot;<var>1</var>&quot; <i>el</i>:<b>release</b>=&quot;<var>1</var>&quot; <i>el</i>:<b>revision</b>=&quot;<var>0</var>&quot; <i>el</i>:<b>status</b>=&quot;<var>released</var>&quot;/&gt;
 
3631
      &lt;<i>el</i>:<b>author</b>  <i>el</i>:<b>name</b>=&quot;<var>Petr Machata</var>&quot;/&gt;
 
3632
      &lt;<i>el</i>:<b>copyright</b>&gt;<var>Copyright &copy; 2002-2003 Petr Machata</var>&lt;/<i>el</i>:<b>copyright</b>&gt;
 
3633
      &lt;<i>el</i>:<b>license</b> <i>el</i>:<b>type</b>=&quot;<var>GPL v2.0 or above</var>&quot; <i>el</i>:<b>open</b>=&quot;<var>true</var>&quot;/&gt;
 
3634
      &lt;<i>el</i>:<b>compatibility</b> <i>el</i>:<b>enigma</b>=&quot;<var>0.92</var>&quot;&gt;
 
3635
        &lt;<i>el</i>:<b>dependency</b> <i>el</i>:<b>path</b>=&quot;<var>lib/natmaze</var>&quot; <i>el</i>:<b>id</b>=&quot;<var>lib/natmaze</var>&quot; <i>el</i>:<b>release</b>=&quot;<var>1</var>&quot; <i>el</i>:<b>preload</b>=&quot;<var>false</var>&quot;&gt;
 
3636
      &lt;/<i>el</i>:<b>compatibility</b>&gt;
 
3637
      &lt;<i>el</i>:<b>modes</b> <i>el</i>:<b>easy</b>=&quot;<var>false</var>&quot; <i>el</i>:<b>single</b>=&quot;<var>false</var>&quot; <i>el</i>:<b>network</b>=&quot;<var>false</var>&quot;/&gt;
 
3638
      &lt;<i>el</i>:<b>score</b> <i>el</i>:<b>easy</b>=&quot;<var>-</var>&quot; <i>el</i>:<b>difficult</b>=&quot;<var>-</var>&quot;/&gt;
 
3639
    &lt;/<i>el</i>:<b>info</b>&gt;
 
3640
    &lt;<i>el</i>:<b>luamain</b>&gt;&lt;![CDATA[
 
3641
    &hellip;
 
3642
    ]]&gt;&lt;/<i>el</i>:<b>luamain</b>&gt;
 
3643
    &lt;<i>el</i>:<b>i18n</b>/&gt;
 
3644
  &lt;/<i>el</i>:<b>protected</b>&gt;
 
3645
&lt;/<i>el</i>:<b>level</b>&gt;
 
3646
</pre></td></tr></table>
 
3647
 
 
3648
<hr size="6">
 
3649
<a name="Maintaining-a-Library"></a>
 
3650
<table cellpadding="1" cellspacing="1" border="0">
 
3651
<tr><td valign="middle" align="left">[<a href="#Writing-a-Library" title="Previous section in reading order"> &lt; </a>]</td>
 
3652
<td valign="middle" align="left">[<a href="#Multilevel-Files" title="Next section in reading order"> &gt; </a>]</td>
 
3653
<td valign="middle" align="left"> &nbsp; </td>
 
3654
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
3655
<td valign="middle" align="left">[<a href="#Library-Files" title="Up section"> Up </a>]</td>
 
3656
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
3657
<td valign="middle" align="left"> &nbsp; </td>
 
3658
<td valign="middle" align="left"> &nbsp; </td>
 
3659
<td valign="middle" align="left"> &nbsp; </td>
 
3660
<td valign="middle" align="left"> &nbsp; </td>
 
3661
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
3662
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
3663
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
3664
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
3665
</tr></table>
 
3666
<a name="Maintaining-a-Library-1"></a>
 
3667
<h3 class="subsection">3.8.2 Maintaining a Library</h3>
 
3668
 
 
3669
<p>Libraries may exist in different releases and revisions. Library versions that differ simply in the
 
3670
revision, denote compatible versions. Library versions that introduce incompatibilities must
 
3671
differ in the release number. However, since existing levels may depend on the legacy behavior
 
3672
of the older release, you must maintain both library release versions and distribute them with
 
3673
Enigma at the same time.
 
3674
</p>
 
3675
<p>To coexist, these different library releases must follow a strict naming scheme. Every library has
 
3676
a base name. In the example above it is &lsquo;<samp>lib/ant</samp>&rsquo;.
 
3677
The filename of a given release is the basename with the addition of an underscore and the
 
3678
release number plus the suffix &lsquo;<samp>xml</samp>&rsquo;. Thus, you must store release &lsquo;<samp>lib/ant</samp>&rsquo; as
 
3679
&lsquo;<samp>lib/ant_2.xml</samp>&rsquo;.
 
3680
</p>
 
3681
<p>If you look at the lib directory, you may wonder that Enigma stores most library files without
 
3682
release number addition to the basename. This is due to 0.92 Lua level format compatibility
 
3683
support. You can store one, and of course only one, release of each library without release
 
3684
number addition to the basename. Enigma will load this version from pure Lua levels that do
 
3685
not provide any information of the required library release.
 
3686
</p>
 
3687
<p>If a library file with a complete filename is not present, the default library file without release
 
3688
number addition will be loaded for XML load requests, too. Yet the future belongs to the new
 
3689
naming scheme, and every new library should follow it from the beginning.
 
3690
</p>
 
3691
<hr size="6">
 
3692
<a name="Multilevel-Files"></a>
 
3693
<table cellpadding="1" cellspacing="1" border="0">
 
3694
<tr><td valign="middle" align="left">[<a href="#Maintaining-a-Library" title="Previous section in reading order"> &lt; </a>]</td>
 
3695
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next section in reading order"> &gt; </a>]</td>
 
3696
<td valign="middle" align="left"> &nbsp; </td>
 
3697
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
3698
<td valign="middle" align="left">[<a href="#Level-Basics" title="Up section"> Up </a>]</td>
 
3699
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Next chapter"> &gt;&gt; </a>]</td>
 
3700
<td valign="middle" align="left"> &nbsp; </td>
 
3701
<td valign="middle" align="left"> &nbsp; </td>
 
3702
<td valign="middle" align="left"> &nbsp; </td>
 
3703
<td valign="middle" align="left"> &nbsp; </td>
 
3704
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
3705
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
3706
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
3707
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
3708
</tr></table>
 
3709
<a name="Multilevel-Files-1"></a>
 
3710
<h2 class="section">3.9 Multilevel Files</h2>
 
3711
 
 
3712
<p>Another concept of code reusage besides <a href="#Library-Files">Library Files</a> are multilevel files.
 
3713
The code contained in a single file generates several levels, called sublevels,
 
3714
that appear as autonomous levels in a levelpack. Of course this concept is much
 
3715
less flexible than the library concept as other level files can not reuse the
 
3716
code. But you can write a multilevel if you wrote a lot of specific code for a
 
3717
complex level that provides more than just two variants, which would be
 
3718
otherwise presented as &lsquo;<samp>difficult</samp>&rsquo; and &lsquo;<samp>easy</samp>&rsquo; <a href="#g_t_003cmodes_003e">&lt;modes&gt;</a>.
 
3719
</p>
 
3720
<p>But the main reason for multilevel files is the support of foreign game level
 
3721
formats like Sokoban, which describe a whole set of levels in a single file.
 
3722
Enigma imports these original files with just a few lines of code. It would be
 
3723
inefficient, even though being possible, to write an Enigma level stub for
 
3724
every level imported from a single foreign file.
 
3725
</p>
 
3726
<p>But multilevel files have some restrictions. They use a single set of XML
 
3727
level metadata. Thus these metadata must fit to all levels. The
 
3728
<a href="#g_t_003cversion_003e">&lt;version&gt;</a> will be identical as it reflects either the code version of the
 
3729
native level or the version of the imported foreign file. But the other data
 
3730
like <a href="#g_t_003cauthor_003e">&lt;author&gt;</a>, <a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a> and <a href="#g_t_003cmodes_003e">&lt;modes&gt;</a> have to match, too.
 
3731
If they do not, you can not use a multilevel file.
 
3732
</p>
 
3733
<p>Just the values for &lsquo;<samp>title</samp>&rsquo; and &lsquo;<samp>id</samp>&rsquo; will and have to differ for all
 
3734
levels described by a single multilevel file. There exists special support for
 
3735
multilevels to handle these attributes.
 
3736
</p>
 
3737
<p>Let us look at all attributes and features of multilevels that differ from
 
3738
standard level files.
 
3739
</p>
 
3740
<p>First you have to declare in the <a href="#Info-metadata">Info metadata</a> element the type as
 
3741
<code>&quot;multilevel&quot;</code> and to provide the quantity of generated levels. The
 
3742
sublevels will be numbered from 1 to the given quantity.
 
3743
</p>
 
3744
<p>In the element <a href="#g_t_003cidentity_003e">&lt;identity&gt;</a> you have to provide just one unique level id
 
3745
value. Enigma will automatically append the string <code>&quot;[1]&quot;</code> for the first
 
3746
sublevel, <code>&quot;[2]&quot;</code> for the second and so on. Thus every sublevel has an
 
3747
unique id.
 
3748
</p>
 
3749
<p>Additionally you should provide a base title for the levels in this metadata
 
3750
<a href="#g_t_003cidentity_003e">&lt;identity&gt;</a> element. If your title ends with a hash &lsquo;<samp>#</samp>&rsquo; sign Enigma
 
3751
will autogenerate titles for the sublevels by appending the sublevel number to
 
3752
the given common title string.
 
3753
</p>
 
3754
<p>For individual sublevel titles the <a href="#LUA-code">LUA code</a> has to provide the titles.
 
3755
The title in the <a href="#g_t_003cidentity_003e">&lt;identity&gt;</a> element may not end on a hash sign and will
 
3756
only be used as a default title base in case the <a href="#LUA-code">LUA code</a> fails to
 
3757
provide a sublevel title. Prior execution of the Lua code the global
 
3758
attribute <a href="#SublevelNumber">SublevelNumber</a> gets initialized. The Lua part has either way to
 
3759
load the appropriate sublevel based on this number. Now it has additionally the
 
3760
task to set the second special multilevel global attribute <a href="#SublevelTitle">SublevelTitle</a>.
 
3761
</p>
 
3762
 
 
3763
<p><a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a> externaldata
 
3764
</p>
 
3765
 
 
3766
 
 
3767
<hr size="6">
 
3768
<a name="Enigma-Paradigm"></a>
 
3769
<table cellpadding="1" cellspacing="1" border="0">
 
3770
<tr><td valign="middle" align="left">[<a href="#Multilevel-Files" title="Previous section in reading order"> &lt; </a>]</td>
 
3771
<td valign="middle" align="left">[<a href="#The-World_0027s-Structure" title="Next section in reading order"> &gt; </a>]</td>
 
3772
<td valign="middle" align="left"> &nbsp; </td>
 
3773
<td valign="middle" align="left">[<a href="#Level-Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
3774
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
3775
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
3776
<td valign="middle" align="left"> &nbsp; </td>
 
3777
<td valign="middle" align="left"> &nbsp; </td>
 
3778
<td valign="middle" align="left"> &nbsp; </td>
 
3779
<td valign="middle" align="left"> &nbsp; </td>
 
3780
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
3781
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
3782
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
3783
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
3784
</tr></table>
 
3785
<a name="Enigma-Paradigm-1"></a>
 
3786
<h1 class="chapter">4. Enigma Paradigm</h1>
 
3787
 
 
3788
<p>Now that you have learned about the formal declarative XML part of a level you
 
3789
should be eager to understand the basic principles of the participants of an
 
3790
Enigma level world. In this chapter we explain all the fundamental concepts and
 
3791
the terms used in the following chapters that describe the level author&rsquo;s view
 
3792
of a level.
 
3793
</p>
 
3794
<p>Please note that we describe the features of the new API of Enigma 1.10. The
 
3795
API of the earlier releases does not provide all the features and differs in
 
3796
several aspects.
 
3797
</p>
 
3798
<table class="menu" border="0" cellspacing="0">
 
3799
<tr><td align="left" valign="top"><a href="#The-World_0027s-Structure">4.1 The World&rsquo;s Structure</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
3800
</td></tr>
 
3801
<tr><td align="left" valign="top"><a href="#Object-Description">4.2 Object Description</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
3802
</td></tr>
 
3803
<tr><td align="left" valign="top"><a href="#Methods-of-Interaction">4.3 Methods of Interaction</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
3804
</td></tr>
 
3805
<tr><td align="left" valign="top"><a href="#The-Lifecycle-of-a-Level">4.4 The Lifecycle of a Level</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
3806
</td></tr>
 
3807
</table>
 
3808
 
 
3809
<hr size="6">
 
3810
<a name="The-World_0027s-Structure"></a>
 
3811
<table cellpadding="1" cellspacing="1" border="0">
 
3812
<tr><td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Previous section in reading order"> &lt; </a>]</td>
 
3813
<td valign="middle" align="left">[<a href="#World_0027s-Shape-and-Coordinates" title="Next section in reading order"> &gt; </a>]</td>
 
3814
<td valign="middle" align="left"> &nbsp; </td>
 
3815
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
3816
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Up section"> Up </a>]</td>
 
3817
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
3818
<td valign="middle" align="left"> &nbsp; </td>
 
3819
<td valign="middle" align="left"> &nbsp; </td>
 
3820
<td valign="middle" align="left"> &nbsp; </td>
 
3821
<td valign="middle" align="left"> &nbsp; </td>
 
3822
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
3823
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
3824
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
3825
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
3826
</tr></table>
 
3827
<a name="The-World_0027s-Structure-1"></a>
 
3828
<h2 class="section">4.1 The World&rsquo;s Structure</h2>
 
3829
 
 
3830
<p>We speak of a level as the opus as a whole that describes the initial composition
 
3831
of a gaming world and its dynamic behaviour during the game play. Let us look
 
3832
at the participating objects in details.
 
3833
</p>
 
3834
<table class="menu" border="0" cellspacing="0">
 
3835
<tr><td align="left" valign="top"><a href="#World_0027s-Shape-and-Coordinates">4.1.1 World&rsquo;s Shape and Coordinates</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    Grid Positions and Tiles
 
3836
</td></tr>
 
3837
<tr><td align="left" valign="top"><a href="#Object-Layers">4.1.2 Object Layers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                    Floors, Items, Stones, Actors and Others
 
3838
</td></tr>
 
3839
<tr><td align="left" valign="top"><a href="#World-as-an-Object">4.1.3 World as an Object</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               Global attributes and handle
 
3840
</td></tr>
 
3841
<tr><td align="left" valign="top"><a href="#Unpositioned-Objects">4.1.4 Unpositioned Objects</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Other objects like rubbers and gadgets
 
3842
</td></tr>
 
3843
<tr><td align="left" valign="top"><a href="#Player-and-Inventory">4.1.5 Player and Inventory</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Yin and Yang
 
3844
</td></tr>
 
3845
<tr><td align="left" valign="top"><a href="#Owned-Objects">4.1.6 Owned Objects</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                    Objects temporary owned by others
 
3846
</td></tr>
 
3847
</table>
 
3848
 
 
3849
<hr size="6">
 
3850
<a name="World_0027s-Shape-and-Coordinates"></a>
 
3851
<table cellpadding="1" cellspacing="1" border="0">
 
3852
<tr><td valign="middle" align="left">[<a href="#The-World_0027s-Structure" title="Previous section in reading order"> &lt; </a>]</td>
 
3853
<td valign="middle" align="left">[<a href="#Object-Layers" title="Next section in reading order"> &gt; </a>]</td>
 
3854
<td valign="middle" align="left"> &nbsp; </td>
 
3855
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
3856
<td valign="middle" align="left">[<a href="#The-World_0027s-Structure" title="Up section"> Up </a>]</td>
 
3857
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
3858
<td valign="middle" align="left"> &nbsp; </td>
 
3859
<td valign="middle" align="left"> &nbsp; </td>
 
3860
<td valign="middle" align="left"> &nbsp; </td>
 
3861
<td valign="middle" align="left"> &nbsp; </td>
 
3862
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
3863
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
3864
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
3865
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
3866
</tr></table>
 
3867
<a name="World_0027s-Shape-and-Coordinates-1"></a>
 
3868
<h3 class="subsection">4.1.1 World&rsquo;s Shape and Coordinates</h3>
 
3869
 
 
3870
<p>Having played a few levels you will have noticed that every screen shows
 
3871
quadratic tiles, 20 ones in the horizontal and 13 ones in the vertical direction.
 
3872
Even if it is difficult for a player to map together all rooms and screens of a
 
3873
large level, every level world has the shape of a rectangle in whole.
 
3874
Nevertheless some parts may never be visible to the player due to walls of
 
3875
stones or oceans of water.
 
3876
</p>
 
3877
<a name="index-onescreener"></a>
 
3878
<p>On the creation of a world the level author has to give its size in measure of
 
3879
tiles. The given width and height of the world are fixed and cannot be changed
 
3880
later on. A common size is 20x13 for a <em>Onescreener</em>. But there are no limits.
 
3881
You can even build levels smaller than a screen. Note that for larger levels
 
3882
you have to take into account that one tile row or column is usually shared
 
3883
between two screens on scrolling. Thus a level of 2x2 screens has a size of
 
3884
39x25 tiles, a 3x4 screen level has 58x49 tiles,...
 
3885
</p>
 
3886
<a name="index-position"></a>
 
3887
<p>Looking at the edges of all the tiles we get a grid that spans our world. We
 
3888
define the upper left corner of our world as the <em>position</em> {0,&nbsp;0}. The first
 
3889
coordinate is the horizontal offset to the right, the second coordinate the
 
3890
vertical offset to the bottom. For a Onescreener level the tile in the lower
 
3891
right corner is located at position {19,&nbsp;12}, whereas the corner itself is at
 
3892
the position {20,&nbsp;13} (Note that this point is actually not part of the level
 
3893
anymore).
 
3894
</p>
 
3895
<p>A position of an actor like the black marble needs to be given by two floating
 
3896
numbers as coordinates like {1.5,&nbsp;2.5} for an actor positioned in the center
 
3897
of the tile that is one column right and two rows down of the upper left corner
 
3898
tile.
 
3899
</p>
 
3900
<a name="index-grid-position"></a>
 
3901
<p>But most objects like stones can only be placed on the fixed integral grid
 
3902
positions. Even if you try to put a stone on {1.5,&nbsp;2.5} it will be put on
 
3903
the grid position {1,&nbsp;2}. Thus we speak of a <em>grid position</em> if just the
 
3904
integral part is taken into account. You may note that a tile is positioned
 
3905
according to its upper left corner. Actually the upper and the left edge are
 
3906
part of a tile, whereas the right and lower edge belong to the neighbour tiles.
 
3907
</p>
 
3908
<a name="index-tile"></a>
 
3909
<p>Finally let us look more precisely on the tile itself. On one grid position you
 
3910
may place a floor, an item, a stone and even several actors. The combination
 
3911
of all objects on one grid position is called a <em>tile</em>. It is a common
 
3912
technique to declare these object combinations once in so called tile
 
3913
definitions. As many grid positions share the same combination of objects these
 
3914
tiles can be reused very efficiently.
 
3915
</p>
 
3916
<hr size="6">
 
3917
<a name="Object-Layers"></a>
 
3918
<table cellpadding="1" cellspacing="1" border="0">
 
3919
<tr><td valign="middle" align="left">[<a href="#World_0027s-Shape-and-Coordinates" title="Previous section in reading order"> &lt; </a>]</td>
 
3920
<td valign="middle" align="left">[<a href="#World-as-an-Object" title="Next section in reading order"> &gt; </a>]</td>
 
3921
<td valign="middle" align="left"> &nbsp; </td>
 
3922
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
3923
<td valign="middle" align="left">[<a href="#The-World_0027s-Structure" title="Up section"> Up </a>]</td>
 
3924
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
3925
<td valign="middle" align="left"> &nbsp; </td>
 
3926
<td valign="middle" align="left"> &nbsp; </td>
 
3927
<td valign="middle" align="left"> &nbsp; </td>
 
3928
<td valign="middle" align="left"> &nbsp; </td>
 
3929
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
3930
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
3931
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
3932
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
3933
</tr></table>
 
3934
<a name="Object-Layers-1"></a>
 
3935
<h3 class="subsection">4.1.2 Object Layers</h3>
 
3936
 
 
3937
<a name="index-layer"></a>
 
3938
<p>On every grid position you may set a floor, an item and a stone. But just one
 
3939
of each. If you set a second stone the first one will be replaced. Floor, item
 
3940
and stone have a unique physical arrangement with the floor always being below
 
3941
an item and a stone always being on top of the others. Thus we speak of three
 
3942
object <em>layers</em> - the floor layer, the item layer and the stone layer.
 
3943
</p>
 
3944
<a name="index-default-floor"></a>
 
3945
<p>The floor layer has a unique prerequisite. Every grid position needs to be
 
3946
covered by a floor. You can define a default tile which contains a
 
3947
<em>default floor</em> that gets automatically set on every grid where you set
 
3948
no other floor. Even if you <em>kill</em> a floor, that means removing a floor
 
3949
without setting a replacement floor, a default floor will be set for you.
 
3950
</p>
 
3951
<p>The floors provide two elementary features to the game: friction and adhesion.
 
3952
The friction slows down actors and the adhesion enables you to accelerate
 
3953
actors with your mouse. A floor may additionally cause a directed flat force
 
3954
that gives the user the feeling of a slope. And last but not least a floor
 
3955
may burn. A whole set of attributes let you control the details of the fire
 
3956
behaviour.
 
3957
</p>
 
3958
<p>The item layer is shared between items that an actor can pick up and items that
 
3959
are static. The first category are items like keys, banana, etc. Static items
 
3960
are bombs, landmines, triggers, hollows and items that will only be set by the
 
3961
system itself like laserbeams, fire animations, ash, etc. As only one item can
 
3962
be positioned of every grid position a marble can not drop an item on such a
 
3963
static item. This is the technical reason that you can not intercept a laser
 
3964
beam by dropping an item. But as an level author you are free to add any item
 
3965
you like to the initial grid tile.
 
3966
</p>
 
3967
<p>The stone layer is straight forward. The level author can choose a stone out
 
3968
of the repository per grid. Of course most grid positions should be kept free
 
3969
for the actors to move around. Even if most levels have a stone wall at the
 
3970
border of the world that visually limits the area this is not mandatory. Without
 
3971
a stone wall the marbles will be bounced at the physically boundary of the world.
 
3972
</p>
 
3973
<p>The actors live in another layer that is not grid based. The actors can be
 
3974
placed at any position. Actors that pass a stone will be displayed below the
 
3975
stone.
 
3976
</p>
 
3977
<hr size="6">
 
3978
<a name="World-as-an-Object"></a>
 
3979
<table cellpadding="1" cellspacing="1" border="0">
 
3980
<tr><td valign="middle" align="left">[<a href="#Object-Layers" title="Previous section in reading order"> &lt; </a>]</td>
 
3981
<td valign="middle" align="left">[<a href="#Unpositioned-Objects" title="Next section in reading order"> &gt; </a>]</td>
 
3982
<td valign="middle" align="left"> &nbsp; </td>
 
3983
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
3984
<td valign="middle" align="left">[<a href="#The-World_0027s-Structure" title="Up section"> Up </a>]</td>
 
3985
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
3986
<td valign="middle" align="left"> &nbsp; </td>
 
3987
<td valign="middle" align="left"> &nbsp; </td>
 
3988
<td valign="middle" align="left"> &nbsp; </td>
 
3989
<td valign="middle" align="left"> &nbsp; </td>
 
3990
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
3991
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
3992
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
3993
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
3994
</tr></table>
 
3995
<a name="World-as-an-Object-1"></a>
 
3996
<h3 class="subsection">4.1.3 World as an Object</h3>
 
3997
 
 
3998
<p>Friction, Brittleness, Modes and Co., Scrollmodes
 
3999
</p>
 
4000
<hr size="6">
 
4001
<a name="Unpositioned-Objects"></a>
 
4002
<table cellpadding="1" cellspacing="1" border="0">
 
4003
<tr><td valign="middle" align="left">[<a href="#World-as-an-Object" title="Previous section in reading order"> &lt; </a>]</td>
 
4004
<td valign="middle" align="left">[<a href="#Player-and-Inventory" title="Next section in reading order"> &gt; </a>]</td>
 
4005
<td valign="middle" align="left"> &nbsp; </td>
 
4006
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4007
<td valign="middle" align="left">[<a href="#The-World_0027s-Structure" title="Up section"> Up </a>]</td>
 
4008
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4009
<td valign="middle" align="left"> &nbsp; </td>
 
4010
<td valign="middle" align="left"> &nbsp; </td>
 
4011
<td valign="middle" align="left"> &nbsp; </td>
 
4012
<td valign="middle" align="left"> &nbsp; </td>
 
4013
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4014
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4015
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4016
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4017
</tr></table>
 
4018
<a name="Unpositioned-Objects-1"></a>
 
4019
<h3 class="subsection">4.1.4 Unpositioned Objects</h3>
 
4020
 
 
4021
<p>You should be missing at least one object, that can neither be assigned to a
 
4022
single position nor to one of the above layers: rubberbands! In fact there are
 
4023
many <a href="#Other-Objects">Other Objects</a> besides floors, items, stones and actors that are
 
4024
unpositioned. Besides visible rubberbands and wires useful gadgets,
 
4025
that help in plug and play composition of levels, can be added to the world.
 
4026
</p>
 
4027
<p>All these other objects are full objects concerning the following chapters. But
 
4028
you need to use the world&rsquo;s <a href="#add">add</a> method to add them and you need to use
 
4029
<a href="#Object-Reference">Object Reference</a> or <a href="#Object-Naming">Object Naming</a> to access them later on, as no
 
4030
position driven access does exist.
 
4031
</p>
 
4032
<hr size="6">
 
4033
<a name="Player-and-Inventory"></a>
 
4034
<table cellpadding="1" cellspacing="1" border="0">
 
4035
<tr><td valign="middle" align="left">[<a href="#Unpositioned-Objects" title="Previous section in reading order"> &lt; </a>]</td>
 
4036
<td valign="middle" align="left">[<a href="#Owned-Objects" title="Next section in reading order"> &gt; </a>]</td>
 
4037
<td valign="middle" align="left"> &nbsp; </td>
 
4038
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4039
<td valign="middle" align="left">[<a href="#The-World_0027s-Structure" title="Up section"> Up </a>]</td>
 
4040
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4041
<td valign="middle" align="left"> &nbsp; </td>
 
4042
<td valign="middle" align="left"> &nbsp; </td>
 
4043
<td valign="middle" align="left"> &nbsp; </td>
 
4044
<td valign="middle" align="left"> &nbsp; </td>
 
4045
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4046
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4047
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4048
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4049
</tr></table>
 
4050
<a name="Player-and-Inventory-1"></a>
 
4051
<h3 class="subsection">4.1.5 Player and Inventory</h3>
 
4052
 
 
4053
<p>Enigma is conceptionally a game for 2 players. But nevertheless it can be played
 
4054
by one user on a single computer by toggling the control between two virtual
 
4055
players. We do call these virtual player&rsquo;s <code>YIN</code> and <code>YANG</code>, as the
 
4056
first player controls in most cases a black marble, whereas the second
 
4057
controls usually a white marble.
 
4058
</p>
 
4059
<p>Each virtual player has its own inventory of up to 13 items. The leftmost
 
4060
item of the inventory is called &lsquo;<samp>revealed</samp>&rsquo;, as an item activation by a
 
4061
mouse click does activate this item and on actor hits this item may cause
 
4062
special actions.
 
4063
</p>
 
4064
<p>The players inventories do exist outside of the rectangular world. Thus
 
4065
any item being part of a player&rsquo;s inventory will report an invalid, out of world
 
4066
position, that evaluates on an &lsquo;<samp>exists()</samp>&rsquo; request to &lsquo;<samp>false</samp>&rsquo;. You
 
4067
can add items directly to inventories by the advanced world method <a href="#add">add</a>.
 
4068
</p>
 
4069
<p>Even though the actors are assigned to players they are quite independent
 
4070
objects that live in one of the <a href="#Object-Layers">Object Layers</a>. Their relationship to
 
4071
players is as follows:
 
4072
</p>
 
4073
<p>Each virtual player can own and control one or several actors of any kind. That
 
4074
means player <code>YIN</code> is not limited to a black <a href="#ac_005fmarble">ac_marble</a>, but may as
 
4075
well control a white <a href="#ac_005fpearl">ac_pearl</a>, an <a href="#ac_005fhorse">ac_horse</a> or any other set of one
 
4076
or several arbitrary actors.
 
4077
</p>
 
4078
<p>Ownership and control of actors are two distinct aspects. Ownership of an actor
 
4079
means that every item picked up by an actor ends up in the player&rsquo;s inventory and
 
4080
items of the player&rsquo;s inventory can act on all owned actors. The control of an
 
4081
actor by a player does just affect the movement of the actor by the users
 
4082
force input. An actor may be controlled by a player without parallel ownership.
 
4083
Another actor may be owned by a player without being controlled by it, thus
 
4084
being a passive actor that depends on being pushed by others. An actor may even
 
4085
be controlled by both players, but it can just be owned by one player or none.
 
4086
</p>
 
4087
<p>The assignment of actors to players is solely configured by
 
4088
<a href="#Actor-Attributes">Actor Attributes</a>.
 
4089
</p>
 
4090
<p>When a single user plays Enigma he starts with the control over the player
 
4091
<code>Yin</code>. By usage of yinyang objects he can toggle the control to the player
 
4092
<code>Yang</code> and back again. Items <a href="#it_005fyinyang">it_yinyang</a> are added automatically for
 
4093
network levels when played by a single user. They allow an arbitrary switch
 
4094
between the players. The stones <a href="#st_005fyinyang">st_yinyang</a> do limit the user&rsquo;s ability to
 
4095
switch between the player control.
 
4096
</p>
 
4097
 
 
4098
<hr size="6">
 
4099
<a name="Owned-Objects"></a>
 
4100
<table cellpadding="1" cellspacing="1" border="0">
 
4101
<tr><td valign="middle" align="left">[<a href="#Player-and-Inventory" title="Previous section in reading order"> &lt; </a>]</td>
 
4102
<td valign="middle" align="left">[<a href="#Object-Description" title="Next section in reading order"> &gt; </a>]</td>
 
4103
<td valign="middle" align="left"> &nbsp; </td>
 
4104
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4105
<td valign="middle" align="left">[<a href="#The-World_0027s-Structure" title="Up section"> Up </a>]</td>
 
4106
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4107
<td valign="middle" align="left"> &nbsp; </td>
 
4108
<td valign="middle" align="left"> &nbsp; </td>
 
4109
<td valign="middle" align="left"> &nbsp; </td>
 
4110
<td valign="middle" align="left"> &nbsp; </td>
 
4111
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4112
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4113
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4114
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4115
</tr></table>
 
4116
<a name="Owned-Objects-1"></a>
 
4117
<h3 class="subsection">4.1.6 Owned Objects</h3>
 
4118
 
 
4119
<p>Besides objects owned by a player and being part of his inventory, objects can
 
4120
be temporary part of another object. The most obvious case is an item contained
 
4121
in an <a href="#it_005fbag">it_bag</a>. Other samples are two <a href="#st_005fshogun">st_shogun</a> stones pushed onto
 
4122
the same grid position or for a short fraction of time a stone swapping the
 
4123
position with an <a href="#st_005fswap">st_swap</a> or an <a href="#st_005fpull">st_pull</a>.
 
4124
</p>
 
4125
<p>In any case the owned object will report the same position as the owner itself.
 
4126
Even in case of some items contained in a bag that is itself part of another bag
 
4127
all items will report the same position as the outmost bag. If this bag is part
 
4128
of an player&rsquo;s inventory all items report an invalid position.
 
4129
</p>
 
4130
<p>You can not directly enforce ownership by setting two objects to the same
 
4131
position as this standard operation will kill and replace the old object by the
 
4132
new one. Where possible, like in the case of an bag, you can add objects to
 
4133
a container object by usage of the world advanced method <a href="#add">add</a>.
 
4134
</p>
 
4135
 
 
4136
<hr size="6">
 
4137
<a name="Object-Description"></a>
 
4138
<table cellpadding="1" cellspacing="1" border="0">
 
4139
<tr><td valign="middle" align="left">[<a href="#Owned-Objects" title="Previous section in reading order"> &lt; </a>]</td>
 
4140
<td valign="middle" align="left">[<a href="#Object-Kind" title="Next section in reading order"> &gt; </a>]</td>
 
4141
<td valign="middle" align="left"> &nbsp; </td>
 
4142
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4143
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Up section"> Up </a>]</td>
 
4144
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4145
<td valign="middle" align="left"> &nbsp; </td>
 
4146
<td valign="middle" align="left"> &nbsp; </td>
 
4147
<td valign="middle" align="left"> &nbsp; </td>
 
4148
<td valign="middle" align="left"> &nbsp; </td>
 
4149
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4150
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4151
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4152
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4153
</tr></table>
 
4154
<a name="Object-Description-1"></a>
 
4155
<h2 class="section">4.2 Object Description</h2>
 
4156
 
 
4157
<p>Knowing where to place objects it is time to know how to select an object type,
 
4158
how to specify the details of the object and how to reference it later on.
 
4159
</p>
 
4160
<table class="menu" border="0" cellspacing="0">
 
4161
<tr><td align="left" valign="top"><a href="#Object-Kind">4.2.1 Object Kind</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
4162
</td></tr>
 
4163
<tr><td align="left" valign="top"><a href="#Object-Reference">4.2.2 Object Reference</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
4164
</td></tr>
 
4165
<tr><td align="left" valign="top"><a href="#Object-Naming">4.2.3 Object Naming</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
4166
</td></tr>
 
4167
<tr><td align="left" valign="top"><a href="#Object-Attributes">4.2.4 Object Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
4168
</td></tr>
 
4169
</table>
 
4170
 
 
4171
<hr size="6">
 
4172
<a name="Object-Kind"></a>
 
4173
<table cellpadding="1" cellspacing="1" border="0">
 
4174
<tr><td valign="middle" align="left">[<a href="#Object-Description" title="Previous section in reading order"> &lt; </a>]</td>
 
4175
<td valign="middle" align="left">[<a href="#Object-Reference" title="Next section in reading order"> &gt; </a>]</td>
 
4176
<td valign="middle" align="left"> &nbsp; </td>
 
4177
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4178
<td valign="middle" align="left">[<a href="#Object-Description" title="Up section"> Up </a>]</td>
 
4179
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4180
<td valign="middle" align="left"> &nbsp; </td>
 
4181
<td valign="middle" align="left"> &nbsp; </td>
 
4182
<td valign="middle" align="left"> &nbsp; </td>
 
4183
<td valign="middle" align="left"> &nbsp; </td>
 
4184
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4185
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4186
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4187
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4188
</tr></table>
 
4189
<a name="Object-Kind-1"></a>
 
4190
<h3 class="subsection">4.2.1 Object Kind</h3>
 
4191
 
 
4192
<a name="index-abstract-kind"></a>
 
4193
<p>Up to now we have spoken about object kinds of floor &lsquo;<samp>fl</samp>&rsquo;, item
 
4194
&lsquo;<samp>it</samp>&rsquo;, stone &lsquo;<samp>st</samp>&rsquo; and actor &lsquo;<samp>ac</samp>&rsquo;. All these kinds are called
 
4195
<em>abstract</em>. You can check if a given object is of such a kind, but you can
 
4196
not instantiate an abstract kind.
 
4197
</p>
 
4198
<p>To create an object you need to give a specific kind name like
 
4199
&lsquo;<samp>st_switch</samp>&rsquo;. You will find all object kinds described in the chapters
 
4200
starting with <a href="#Floor-Objects">Floor Objects</a>. All these kind names with at least one
 
4201
underscore can be instantiated.
 
4202
</p>
 
4203
<p>Most kinds provide subkinds like &lsquo;<samp>st_switch_black</samp>&rsquo; and
 
4204
&lsquo;<samp>st_switch_white</samp>&rsquo;. In case of the switches you get a color independent
 
4205
switch if you do not append a suffix. In other cases like &lsquo;<samp>st_chess</samp>&rsquo;
 
4206
the super kind will result in a default &lsquo;<samp>st_chess_black</samp>&rsquo; as no colorless
 
4207
chess stone exists.
 
4208
</p>
 
4209
<p>If you request an object for its kind it will always return the most specific
 
4210
kind. This means that a fresh generated &lsquo;<samp>st_chess</samp>&rsquo; returns the kind
 
4211
&lsquo;<samp>st_chess_black</samp>&rsquo;, whereas an &lsquo;<samp>st_switch</samp>&rsquo; reports its name
 
4212
unchanged.
 
4213
</p>
 
4214
<p>Objects can change their kind by level code statements or by user actions. You
 
4215
may set a color on a switch or a marble may cause a color change on a chess
 
4216
stone by hitting it with a revealed wand. The object will report the new kind on
 
4217
subsequent requests.
 
4218
</p>
 
4219
<p>A few special object kinds do exist only for setting a new object. They are
 
4220
usually named with a suffix &lsquo;<samp>_new</samp>&rsquo;. These objects will never report their
 
4221
initial kind name but change to a standard kind immediately.
 
4222
</p>
 
4223
<p>If you are not interested in the specific subkind you can check an object for
 
4224
conformity to any super kind. E.g. any switch stone of whatever color will
 
4225
return true if checked for &lsquo;<samp>st_switch</samp>&rsquo;.
 
4226
</p>
 
4227
<hr size="6">
 
4228
<a name="Object-Reference"></a>
 
4229
<table cellpadding="1" cellspacing="1" border="0">
 
4230
<tr><td valign="middle" align="left">[<a href="#Object-Kind" title="Previous section in reading order"> &lt; </a>]</td>
 
4231
<td valign="middle" align="left">[<a href="#Object-Naming" title="Next section in reading order"> &gt; </a>]</td>
 
4232
<td valign="middle" align="left"> &nbsp; </td>
 
4233
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4234
<td valign="middle" align="left">[<a href="#Object-Description" title="Up section"> Up </a>]</td>
 
4235
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4236
<td valign="middle" align="left"> &nbsp; </td>
 
4237
<td valign="middle" align="left"> &nbsp; </td>
 
4238
<td valign="middle" align="left"> &nbsp; </td>
 
4239
<td valign="middle" align="left"> &nbsp; </td>
 
4240
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4241
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4242
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4243
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4244
</tr></table>
 
4245
<a name="Object-Reference-1"></a>
 
4246
<h3 class="subsection">4.2.2 Object Reference</h3>
 
4247
 
 
4248
<p>Having set objects to the various layers a level author sometimes has the need
 
4249
of referencing them later on. On callbacks the engine provides references to
 
4250
sender objects. But the author can request any grid object anytime by its
 
4251
position.
 
4252
</p>
 
4253
<p>With an object reference, that is of a special Lua type &lsquo;<samp>object</samp>&rsquo;, you can
 
4254
request the objects on its current state and attributes, modify the
 
4255
object, send messages or perform any supported methods of the object.
 
4256
</p>
 
4257
<p>Objects can be grouped for efficient handling of common operations on
 
4258
all affected objects. E.g. if you can send a message to a group of objects
 
4259
all objects will receive the message in turn. The sequence of several objects
 
4260
in a group is constant and guaranteed to be observed in processing common
 
4261
operations.
 
4262
</p>
 
4263
<p>As objects can seize to exist you have to be aware that the references are
 
4264
volatile, too. You can check every object reference for existence. But in many
 
4265
cases the validity of the reference is unimportant as Enigma 1.10 is very
 
4266
tolerant on invalid object references access. The operations will simply be
 
4267
ignored and requests will return default values.
 
4268
</p>
 
4269
<p>As a general thumb rule you should request and keep object references just
 
4270
for the time of a local call. As long as your level code is processed in
 
4271
sequence without the running world simulation giving the player a chance to
 
4272
kill objects by marble actions, objects should seize to exist just due to your
 
4273
own direct statements.
 
4274
</p>
 
4275
<p>To gain access to an object later on a subsequent call you can address it via
 
4276
two methods. First you can address it via its position. But as many objects are
 
4277
movable the position is not constant. Therefore you can address an object by
 
4278
name. See section <a href="#Object-Naming">Object Naming</a>.
 
4279
</p>
 
4280
<hr size="6">
 
4281
<a name="Object-Naming"></a>
 
4282
<table cellpadding="1" cellspacing="1" border="0">
 
4283
<tr><td valign="middle" align="left">[<a href="#Object-Reference" title="Previous section in reading order"> &lt; </a>]</td>
 
4284
<td valign="middle" align="left">[<a href="#Object-Attributes" title="Next section in reading order"> &gt; </a>]</td>
 
4285
<td valign="middle" align="left"> &nbsp; </td>
 
4286
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4287
<td valign="middle" align="left">[<a href="#Object-Description" title="Up section"> Up </a>]</td>
 
4288
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4289
<td valign="middle" align="left"> &nbsp; </td>
 
4290
<td valign="middle" align="left"> &nbsp; </td>
 
4291
<td valign="middle" align="left"> &nbsp; </td>
 
4292
<td valign="middle" align="left"> &nbsp; </td>
 
4293
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4294
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4295
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4296
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4297
</tr></table>
 
4298
<a name="Object-Naming-1"></a>
 
4299
<h3 class="subsection">4.2.3 Object Naming</h3>
 
4300
 
 
4301
<p>For addressing objects on a long term valid basis every object can individually
 
4302
be tagged by a name. Assigning a name to an object is as simple as setting
 
4303
the attribute &lsquo;<samp>name</samp>&rsquo; with a unique string on this object. Of course you
 
4304
can request an objects name by reading the attribute &lsquo;<samp>name</samp>&rsquo;.
 
4305
</p>
 
4306
<p>The name is a string that should be made up of characters &lsquo;<samp>a..z</samp>&rsquo;,
 
4307
&lsquo;<samp>A..Z</samp>&rsquo;, numbers &lsquo;<samp>0..9</samp>&rsquo; and the underscore &lsquo;<samp>_</samp>&rsquo;. Other special
 
4308
characters are only allowed as far as they are explained in the following text.
 
4309
</p>
 
4310
<a name="index-auto-naming"></a>
 
4311
<p>It is up to you to ensure unique names. Reuse of an already assigned name
 
4312
will unname the prior object and assign the name to the new object. To simplify
 
4313
the naming of larger groups of similar objects you can add the hash sign
 
4314
&lsquo;<samp>#</samp>&rsquo; as the last character to a name, e.g. &lsquo;<samp>mydoor#</samp>&rsquo;. This causes Enigma
 
4315
to add a unique random number to the given string. Thus an auto named object
 
4316
will never unname another prior auto named object. But if you delete an
 
4317
auto named object that has been named e.g. &lsquo;<samp>mydoor#103284</samp>&rsquo; the number and
 
4318
the same name may be assigned to another that is created later on.
 
4319
</p>
 
4320
<p>All named objects are registered by the <em>named object</em> repository. The API
 
4321
provides a variable &lsquo;<samp>no</samp>&rsquo; that allows you to retrieve any named object, e.g.
 
4322
&lsquo;<samp>no[&quot;mylaser_a&quot;]</samp>&rsquo;. You get an <a href="#Object-Reference">Object Reference</a> or &lsquo;<samp>nil</samp>&rsquo;, if no
 
4323
object is registered by the given name.
 
4324
</p>
 
4325
<p>As you can auto name groups of objects you are allowed to use the wildcard
 
4326
characters &lsquo;<samp>?</samp>&rsquo; and &lsquo;<samp>*</samp>&rsquo;. The question mark replaces a single
 
4327
arbitrary character, the asterisk any number of arbitrary characters. E.g.
 
4328
&lsquo;<samp>no[&quot;mydoor#*&quot;]</samp>&rsquo; retrieves all auto named &lsquo;<samp>mydoor</samp>&rsquo; objects in a single
 
4329
object group.
 
4330
</p>
 
4331
<p>Many object attributes like &lsquo;<samp>target</samp>&rsquo;, &lsquo;<samp>destination</samp>&rsquo; need object
 
4332
references to other objects. Besides a volatile <a href="#Object-Reference">Object Reference</a> you always
 
4333
can provide a name string as a long term valid object reference. If the attribute
 
4334
allows several objects to be given you can either give a group of object
 
4335
references, a table of object names or a object name with wildcards. Thus
 
4336
the string &lsquo;<samp>&quot;mydoor#*&quot;</samp>&rsquo; is a valid target.
 
4337
</p>
 
4338
<a name="index-nearest-object"></a>
 
4339
<p>Often switches are located near by their target object. As a major shortcut
 
4340
you can reference the nearest object out of a group by prefixing its name
 
4341
with an &lsquo;<samp>@</samp>&rsquo; character.
 
4342
</p>
 
4343
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;F&quot;] = {&quot;st_floppy&quot;, target=&quot;@door#*&quot;}
 
4344
ti[&quot;D&quot;] = {&quot;st_blocker&quot;, name=&quot;door#&quot;}
 
4345
</pre></td></tr></table>
 
4346
 
 
4347
<p>With this tile declaration you can describe arbitrary number of floppy switches
 
4348
and nearby blocker doors in a world map all by the same two tile key characters.
 
4349
Every floppy switch will target the nearest blocker door. If two targets are
 
4350
given within the same distance the one located in the south will win. If the
 
4351
targets are additionally horizontally aligned the one located in east will win.
 
4352
In the rare case of objects located on the same position stones will precede
 
4353
items, floors and actors. The chosen target or destination depends just on the
 
4354
location of these objects and their type, but nothing else. Thus you can rely
 
4355
on a stable selection mechanism. <a href="#Nearest-Object-Clustering">Nearest Object Clustering</a> may help you in
 
4356
case of unexpected selected equidistant targets.
 
4357
</p>
 
4358
<p>Auto naming and nearest object features help you to reduce the number
 
4359
of needed tile declarations. Resolvers like <a href="#res_002eautotile">res.autotile</a> and
 
4360
<a href="#res_002ecomposer">res.composer</a> are another feature for reducing the need of tile declarations.
 
4361
</p>
 
4362
<p>Another unique feature of object names is their late on access evaluation. This
 
4363
allows you to reference an object prior to its existence. E.g. if you want to
 
4364
set two vortices each declaring the other one as its destination, object names
 
4365
are the favorite solution:
 
4366
</p>
 
4367
<table><tr><td>&nbsp;</td><td><pre class="example">wo[{3,4}]  = {&quot;it_vortex&quot;, name=&quot;vortex1&quot;, destination=&quot;vortex2&quot;}
 
4368
wo[{15,9}] = {&quot;it_vortex&quot;, name=&quot;vortex2&quot;, destination=&quot;vortex1&quot;}
 
4369
</pre></td></tr></table>
 
4370
 
 
4371
<p>In general you will need to use object name references within any tile
 
4372
declarations as none of the referenced objects will yet exist at the point of
 
4373
tile declarations.
 
4374
</p>
 
4375
<p>Objects do change over time. Doors do open, a chess may be recolored, a blocker
 
4376
stone may shrink to a blocker item. This means that the kind of the objects
 
4377
will change. But in many cases this means that the volatile object reference
 
4378
will brake, too. For the sake of the level authors the identity of the object
 
4379
will be transferred even if the reference gets invalid. And like the user
 
4380
attributes the name is part of the object identity. Thus if you name an
 
4381
<a href="#st_005fblocker">st_blocker</a> and it shrinks to an <a href="#it_005fblocker">it_blocker</a> you will retrieve this
 
4382
item if you ask the name object repository for the named object.
 
4383
</p>
 
4384
<p>When an object like a door is completely killed, e.g. by an <a href="#it_005fseed">it_seed</a>,
 
4385
it can no longer be targeted by active objects like switches. A still existing
 
4386
reference to a no longer existing object does not cause problems on
 
4387
<a href="#Messages">Messages</a>. But what about the nearest object references? To avoid problems
 
4388
due to killed objects the standard nearest object reference with just one
 
4389
&lsquo;<samp>@</samp>&rsquo; as prefix are finalized on <a href="#Level-Initialization">Level Initialization</a>. This means that
 
4390
they get substituted by the unique name of the nearest of all existing objects
 
4391
at a point of time when all objects have been created, but before the user takes
 
4392
action and can incidentally kill a candidate.
 
4393
</p>
 
4394
<p>But sometimes you may like a dynamic nearest object target or destination. One
 
4395
that is evaluated when it gets accessed. By prefixing a name with &lsquo;<samp>@@</samp>&rsquo;
 
4396
the reference will not get finalized on initialization but remains dynamic.
 
4397
</p>
 
4398
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;c&quot;] = {&quot;it_coin_s&quot;, &quot;magic#&quot;}
 
4399
ti[&quot;v&quot;] = {&quot;it_vortex&quot;, destination=&quot;@@magic#*&quot;}
 
4400
</pre></td></tr></table>
 
4401
 
 
4402
<p>Setting three magic coins and one vortex in your map will teleport the marble
 
4403
to the grid of that coin that is nearest to the vortex at the moment of
 
4404
teleportation.
 
4405
</p>
 
4406
<p>To avoid unexpected problems with invalid object references a few critical
 
4407
objects are internally autonamed if the level author does not provide a name.
 
4408
But these unique names should never interfere with the user assigned object
 
4409
names.
 
4410
</p>
 
4411
<hr size="6">
 
4412
<a name="Object-Attributes"></a>
 
4413
<table cellpadding="1" cellspacing="1" border="0">
 
4414
<tr><td valign="middle" align="left">[<a href="#Object-Naming" title="Previous section in reading order"> &lt; </a>]</td>
 
4415
<td valign="middle" align="left">[<a href="#Methods-of-Interaction" title="Next section in reading order"> &gt; </a>]</td>
 
4416
<td valign="middle" align="left"> &nbsp; </td>
 
4417
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4418
<td valign="middle" align="left">[<a href="#Object-Description" title="Up section"> Up </a>]</td>
 
4419
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4420
<td valign="middle" align="left"> &nbsp; </td>
 
4421
<td valign="middle" align="left"> &nbsp; </td>
 
4422
<td valign="middle" align="left"> &nbsp; </td>
 
4423
<td valign="middle" align="left"> &nbsp; </td>
 
4424
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4425
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4426
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4427
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4428
</tr></table>
 
4429
<a name="Object-Attributes-1"></a>
 
4430
<h3 class="subsection">4.2.4 Object Attributes</h3>
 
4431
 
 
4432
<p>One of the key concepts for the versatility of Enigma is possibility to fine
 
4433
tune objects by means of attributes. The level author is not limited to a fixed
 
4434
set of preconfigured objects as given by the object kind.
 
4435
</p>
 
4436
<p>An attribute is a name, a string, with an assigned value. E.g.
 
4437
&lsquo;<samp>obj[&quot;inverse&quot;]=true</samp>&rsquo; sets a single object attribute to a boolean value
 
4438
and &lsquo;<samp>{&quot;it_magnet&quot;, range=6.5}</samp>&rsquo; describes a magnet item with an initial set
 
4439
floating point attribute.
 
4440
</p>
 
4441
<p>The scope of values is manifold. Most Lua types and a bunch of Enigma specific
 
4442
types can be assigned:
 
4443
</p><ul>
 
4444
<li> bool
 
4445
</li><li> int
 
4446
</li><li> double
 
4447
</li><li> string
 
4448
</li><li> nil, DEFAULT
 
4449
</li><li> position
 
4450
</li><li> object
 
4451
</li><li> group
 
4452
</li><li> tokens
 
4453
</li></ul>
 
4454
 
 
4455
<p>If we speak of a bool value we do it in the sense of Lua 5, that means with the
 
4456
possible values &lsquo;<samp>true</samp>&rsquo; and &lsquo;<samp>false</samp>&rsquo;.
 
4457
</p>
 
4458
<p>Many enumerated values like orientations and colors are covered by the integer
 
4459
numbers.
 
4460
</p>
 
4461
<p>Of special interest is the value &lsquo;<samp>nil</samp>&rsquo;. Just a few attributes make direct
 
4462
use of the value &lsquo;<samp>nil</samp>&rsquo;, e.g. &quot;color&quot; on some objects. If you set an
 
4463
attribute to value &lsquo;<samp>nil</samp>&rsquo; you do actually reset its value to the default
 
4464
value. E.g. if you set the attribute &quot;orientation&quot; of <a href="#st_005fboulder">st_boulder</a> to
 
4465
&lsquo;<samp>nil</samp>&rsquo; it will be set to its default, which is actually &lsquo;<samp>NORTH</samp>&rsquo;, an
 
4466
enumerated orientation value. A subsequent read of the attribute will return this
 
4467
value. Just those attributes that allow a nil value will ever return &lsquo;<samp>nil</samp>&rsquo;
 
4468
on a read access. As a direct consequence these attributes always default to
 
4469
&lsquo;<samp>nil</samp>&rsquo;.
 
4470
</p>
 
4471
<p>The authors of Lua did decide to prohibit the usage of &lsquo;<samp>nil</samp>&rsquo; as a value
 
4472
in Lua tables. As we make heavy usage of anonymous tables as object
 
4473
declarations, you would not be able to set such attributes to &lsquo;<samp>nil</samp>&rsquo;. You
 
4474
would need to set such attributes explicitly. As a workaround we added a custom
 
4475
value &lsquo;<samp>DEFAULT</samp>&rsquo; that can be used anywhere to set attributes - even within
 
4476
Lua tables.
 
4477
</p>
 
4478
<table><tr><td>&nbsp;</td><td><pre class="example">mySwitch[&quot;color&quot;] = nil
 
4479
mySwitch[&quot;color&quot;] = DEFAULT
 
4480
wo[{3,6}] = {&quot;ac_marble_black&quot;, player=DEFAULT}
 
4481
</pre></td></tr></table>
 
4482
 
 
4483
<p>Note that &lsquo;<samp>DEFAULT</samp>&rsquo; is not equal to &lsquo;<samp>nil</samp>&rsquo;. They are different values
 
4484
concerning Lua. They just result both in attributes reset to their default. If
 
4485
you request a nil valued attribute you will always receive the Lua value
 
4486
&lsquo;<samp>nil</samp>&rsquo;. &lsquo;<samp>DEFAULT</samp>&rsquo; will never be returned by the engine.
 
4487
</p>
 
4488
<p>A group is an ordered set of <a href="#Object-Reference">Object Reference</a>s. As all contained objects
 
4489
must exist this value is seldom used for attributes in object declarations.
 
4490
But it is very useful for postprocessing of objects and for usage within
 
4491
<a href="#Callback-Function">Callback Function</a>s.
 
4492
</p>
 
4493
<p>The most complex attribute value type are the tokens. Their purpose is the
 
4494
specification of one or many objects. As Enigma provides several means to do
 
4495
that this value type combines and mix all possibilities. A tokens value may
 
4496
be a string, representing an object name, an object reference, a group or a
 
4497
table with any of these basic types in any sequence and number. E.g. the
 
4498
following right sides are all valid tokens for the attribute &lsquo;<samp>target</samp>&rsquo;:
 
4499
</p>
 
4500
<table><tr><td>&nbsp;</td><td><pre class="example">obj1[&quot;target&quot;] = &quot;mydoor&quot;
 
4501
obj2[&quot;target&quot;] = myobject
 
4502
obj3[&quot;target&quot;] = grp(ojb1, obj2, obj3)
 
4503
obj4[&quot;target&quot;] = {&quot;mydoor&quot;, myobject}
 
4504
obj5[&quot;target&quot;] = {grp(ojb1, obj2, obj3), &quot;mydoor&quot;, myobject, &quot;anotherdoor&quot;}
 
4505
</pre></td></tr></table>
 
4506
 
 
4507
<p>This versatility is useful to set tokens attributes independent of the given
 
4508
object reference types.
 
4509
</p>
 
4510
<p>The chapter <a href="#Common-Attributes-and-Messages">Common Attributes and Messages</a> and its followers describe
 
4511
the existing object attributes in detail.
 
4512
</p>
 
4513
<p>Besides these predefined attributes the level author can store own information
 
4514
on objects for later retrieval. Any name starting with an underscore &lsquo;<samp>_</samp>&rsquo;
 
4515
can be used for level specific purposes. This prefix has been chosen as the
 
4516
resulting names are still valid Lua names. Common usage patterns are switches
 
4517
or triggers with callback functions. These functions provide the sender, the
 
4518
switch or trigger, as an argument. If you attach the same function to number of
 
4519
senders you can store the necessary context information within the sender.
 
4520
</p>
 
4521
<p>The internal engine uses object attributes as well. Such inaccessible attributes
 
4522
are named with a leading dollar sign &lsquo;<samp>$</samp>&rsquo;. They may appear in the documentation
 
4523
for C++ developers information. Level authors should ignore these attributes.
 
4524
</p>
 
4525
<p>In some cases you may observe a different behaviour on setting an attribute
 
4526
within the object definition and setting the same attribute while the object
 
4527
is already on the grid. E.g. a door &lsquo;<samp>{&quot;st_door_h&quot;, state = OPEN}</samp>&rsquo; is
 
4528
opened from the very beginning. Whereas &lsquo;<samp>mydoor[&quot;state&quot;] = OPEN</samp>&rsquo; on a
 
4529
closed door will start opening the door. This takes a short time until the
 
4530
door is really open. You find more details on these as aspects in the section
 
4531
<a href="#The-Lifecycle-of-a-Level">The Lifecycle of a Level</a>.
 
4532
</p>
 
4533
<p>If you ever look into the C++ code you may wonder about the implementation of
 
4534
attributes. They are not all directly stored in a map. Some of them are hold
 
4535
in object instance variables, other do not exist at all. Objects attributes
 
4536
are an abstract concept that unifies several internal features within a
 
4537
common simple API for level description code. Within the C++ engine subtle
 
4538
reasons like performance optimization forces a much more complex handling.
 
4539
</p>
 
4540
 
 
4541
<hr size="6">
 
4542
<a name="Methods-of-Interaction"></a>
 
4543
<table cellpadding="1" cellspacing="1" border="0">
 
4544
<tr><td valign="middle" align="left">[<a href="#Object-Attributes" title="Previous section in reading order"> &lt; </a>]</td>
 
4545
<td valign="middle" align="left">[<a href="#Messages" title="Next section in reading order"> &gt; </a>]</td>
 
4546
<td valign="middle" align="left"> &nbsp; </td>
 
4547
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4548
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Up section"> Up </a>]</td>
 
4549
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4550
<td valign="middle" align="left"> &nbsp; </td>
 
4551
<td valign="middle" align="left"> &nbsp; </td>
 
4552
<td valign="middle" align="left"> &nbsp; </td>
 
4553
<td valign="middle" align="left"> &nbsp; </td>
 
4554
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4555
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4556
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4557
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4558
</tr></table>
 
4559
<a name="Methods-of-Interaction-1"></a>
 
4560
<h2 class="section">4.3 Methods of Interaction</h2>
 
4561
 
 
4562
<p>Having looked at the description of the initial object composition of a
 
4563
level world we still need to understand how to configure the dynamic behaviour
 
4564
of a level.
 
4565
</p>
 
4566
<table class="menu" border="0" cellspacing="0">
 
4567
<tr><td align="left" valign="top"><a href="#Messages">4.3.1 Messages</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Asking objects to do something
 
4568
</td></tr>
 
4569
<tr><td align="left" valign="top"><a href="#Target-_002d-Action">4.3.2 Target - Action</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Automatic reactions on an event
 
4570
</td></tr>
 
4571
<tr><td align="left" valign="top"><a href="#Callback-Function">4.3.3 Callback Function</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    Lua hooks to react on events
 
4572
</td></tr>
 
4573
<tr><td align="left" valign="top"><a href="#Object-State">4.3.4 Object State</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
4574
</td></tr>
 
4575
</table>
 
4576
 
 
4577
<hr size="6">
 
4578
<a name="Messages"></a>
 
4579
<table cellpadding="1" cellspacing="1" border="0">
 
4580
<tr><td valign="middle" align="left">[<a href="#Methods-of-Interaction" title="Previous section in reading order"> &lt; </a>]</td>
 
4581
<td valign="middle" align="left">[<a href="#Target-_002d-Action" title="Next section in reading order"> &gt; </a>]</td>
 
4582
<td valign="middle" align="left"> &nbsp; </td>
 
4583
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4584
<td valign="middle" align="left">[<a href="#Methods-of-Interaction" title="Up section"> Up </a>]</td>
 
4585
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4586
<td valign="middle" align="left"> &nbsp; </td>
 
4587
<td valign="middle" align="left"> &nbsp; </td>
 
4588
<td valign="middle" align="left"> &nbsp; </td>
 
4589
<td valign="middle" align="left"> &nbsp; </td>
 
4590
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4591
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4592
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4593
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4594
</tr></table>
 
4595
<a name="Messages-1"></a>
 
4596
<h3 class="subsection">4.3.1 Messages</h3>
 
4597
 
 
4598
<p>You can generate an initially open door by setting its attributes. But how
 
4599
can a switch stone open a door when it is hit by a marble? It simply sends
 
4600
a message &lsquo;<samp>open</samp>&rsquo; to the door. Another switch may send a message
 
4601
&lsquo;<samp>on</samp>&rsquo; to a laser or &lsquo;<samp>ignite</samp>&rsquo; to an <a href="#it_005fdynamite">it_dynamite</a>. On explosion
 
4602
the dynamite will in turn send automatically &lsquo;<samp>ignite</samp>&rsquo; messages to the
 
4603
neighbour grid positions.
 
4604
</p>
 
4605
<p>Messages are a simple universal function or from the receiver object and the
 
4606
Lua level authors point of view a &quot;method&quot;. It takes two arguments - the message
 
4607
name, a string, and an optional value. E.g.
 
4608
</p>
 
4609
<table><tr><td>&nbsp;</td><td><pre class="example">mydoor:message(&quot;open&quot;)
 
4610
myboulder:message(&quot;orientate&quot;, NORTH)
 
4611
 
 
4612
mydoor:open()
 
4613
myboulder:orientate(NORTH)
 
4614
</pre></td></tr></table>
 
4615
 
 
4616
<p>The last two examples are a common abbreviation of the first two ones.
 
4617
</p>
 
4618
<p>Messages may return a value. But most messages just return &lsquo;<samp>nil</samp>&rsquo;.
 
4619
</p>
 
4620
<p>You can send any message to any object. Not supported messages are silently
 
4621
ignored. This is the reason that an exploding dynamite can send &lsquo;<samp>ignite</samp>&rsquo;
 
4622
messages to its neighbours without knowing if the objects can be ignited at all.
 
4623
Further on the dynamite has not to bother with the recipients of the messages.
 
4624
Due to messages the sender and the receiver objects are totally decoupled
 
4625
concerning the code base. Thus the level author just needs one method that
 
4626
allows sending arbitrary messages to arbitrary objects.
 
4627
</p>
 
4628
<p>You should not send a message during initialization of the level. You configure
 
4629
the switch to send an &lsquo;<samp>open</samp>&rsquo; message to the door by <a href="#Target-_002d-Action">Target - Action</a>.
 
4630
Within a Lua <a href="#Callback-Function">Callback Function</a> you may send messages during runtime to
 
4631
any object.
 
4632
</p>
 
4633
<p>All messages are listed and described in <a href="#Common-Messages">Common Messages</a> and the
 
4634
subsequent chapters.
 
4635
</p>
 
4636
<hr size="6">
 
4637
<a name="Target-_002d-Action"></a>
 
4638
<table cellpadding="1" cellspacing="1" border="0">
 
4639
<tr><td valign="middle" align="left">[<a href="#Messages" title="Previous section in reading order"> &lt; </a>]</td>
 
4640
<td valign="middle" align="left">[<a href="#Callback-Function" title="Next section in reading order"> &gt; </a>]</td>
 
4641
<td valign="middle" align="left"> &nbsp; </td>
 
4642
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4643
<td valign="middle" align="left">[<a href="#Methods-of-Interaction" title="Up section"> Up </a>]</td>
 
4644
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4645
<td valign="middle" align="left"> &nbsp; </td>
 
4646
<td valign="middle" align="left"> &nbsp; </td>
 
4647
<td valign="middle" align="left"> &nbsp; </td>
 
4648
<td valign="middle" align="left"> &nbsp; </td>
 
4649
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4650
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4651
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4652
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4653
</tr></table>
 
4654
<a name="Target-_002d-Action-1"></a>
 
4655
<h3 class="subsection">4.3.2 Target - Action</h3>
 
4656
 
 
4657
<a name="index-target-action-paradigm"></a>
 
4658
<p>The &quot;target action paradigm&quot; is a classical object oriented method that allows
 
4659
you to easily plug together objects. One object is triggered by a function
 
4660
call or by an event like an actor hitting a stone, crossing over or applying an
 
4661
item. You simply plug this object to another target object and tell it to send
 
4662
an action message. Every time the first object is triggered it will send the
 
4663
message to its target.
 
4664
</p>
 
4665
<p>You configure such a target action by setting the attributes &lsquo;<samp>target</samp>&rsquo;
 
4666
and &lsquo;<samp>action</samp>&rsquo; on the first object. E.g. a for a switch stone that should
 
4667
open a door named &lsquo;<samp>mydoor</samp>&rsquo; you can write:
 
4668
</p>
 
4669
<table><tr><td>&nbsp;</td><td><pre class="example">{st_switch, target=&quot;mydoor&quot;, action=&quot;open&quot;}
 
4670
</pre></td></tr></table>
 
4671
 
 
4672
<p>Objects like the switch can be triggered on and off. Each time they will
 
4673
perform the action. If you would like the door to open and close in turn to
 
4674
the switch you need another action than &lsquo;<samp>open</samp>&rsquo;. The universal message for
 
4675
changing targets in their alternate states is &lsquo;<samp>toggle</samp>&rsquo;.
 
4676
</p>
 
4677
<table><tr><td>&nbsp;</td><td><pre class="example">{st_switch, target=&quot;mydoor&quot;, action=&quot;toggle&quot;}
 
4678
{st_switch, target=&quot;mydoor&quot;}
 
4679
</pre></td></tr></table>
 
4680
 
 
4681
<p>Now the door will toggle in sync with the switch between its open and closed
 
4682
state. The message <a href="#toggle">toggle</a> can be used quite independent of the target
 
4683
object. In fact it is the default action message. As a default you may omit
 
4684
the action in this case as it is demonstrated by the second example.
 
4685
</p>
 
4686
<p>But keep in mind that toggling just changes the state of the target. If you
 
4687
start with a switch in off state and an open door, the door will close when
 
4688
the switch in turned on. They will not sync. If you configure two switches
 
4689
both targeting the same door, you will have no clear relationship between the
 
4690
switch states and the door.
 
4691
</p>
 
4692
<p>As you remember messages can take a value. Action messages are no exception.
 
4693
Every object sends its actions with a value, usually a bool value. A switch
 
4694
sends a value &lsquo;<samp>true</samp>&rsquo; if it just switched on, and a value &lsquo;<samp>false</samp>&rsquo; if
 
4695
it just switched off. The appropriate message for the door would be the
 
4696
universal message &lsquo;<samp>signal</samp>&rsquo;:
 
4697
</p>
 
4698
<table><tr><td>&nbsp;</td><td><pre class="example">{st_switch, target=&quot;mydoor&quot;, action=&quot;signal&quot;}
 
4699
</pre></td></tr></table>
 
4700
 
 
4701
<p>Now the door will open when the switch is turned on and close if the switch is
 
4702
turned off.
 
4703
</p>
 
4704
<p>The message <a href="#signal">signal</a> takes an integer value of &lsquo;<samp>0</samp>&rsquo; or &lsquo;<samp>1</samp>&rsquo;.
 
4705
Indeed the action value does not match. But in this as in many other cases
 
4706
the messages and values are designed in a way that they are automatically converted to
 
4707
the appropriated type. This compatibility is the basis for a seamless plugging
 
4708
of objects.
 
4709
</p>
 
4710
<p>In many cases authors face the task of triggering two or more objects by a
 
4711
single object. &lsquo;<samp>target</samp>&rsquo; and &lsquo;<samp>action</samp>&rsquo; are both able to take
 
4712
multiple values.  &lsquo;<samp>target</samp>&rsquo; is of type tokens, as described in
 
4713
<a href="#Object-Attributes">Object Attributes</a>, whereas &lsquo;<samp>action</samp>&rsquo; can be a string or a table
 
4714
of strings.
 
4715
</p>
 
4716
<table><tr><td>&nbsp;</td><td><pre class="example">{st_switch, target={grp(ojb1, obj2, obj3), &quot;mydoor&quot;, myobject, &quot;anotherdoor&quot;},
 
4717
            action={&quot;toggle&quot;,              &quot;open&quot;,   &quot;turn&quot;,   &quot;close&quot;}}
 
4718
</pre></td></tr></table>
 
4719
 
 
4720
<p>All objects described by a token receive the related message in the action
 
4721
table. If not enough messages are listed the default action &lsquo;<samp>toggle</samp>&rsquo;
 
4722
will be sent.
 
4723
</p>
 
4724
<p>Usually actions are performed at once. That is very important as the sequence
 
4725
of actions if often essential. Consider an <a href="#st_005fbox">st_box</a> being pushed from one
 
4726
<a href="#it_005ftrigger">it_trigger</a> to a neighboring one, or just an <a href="#ac_005fmarble">ac_marble</a> moving from
 
4727
the first trigger to the neighboring one. In both cases it is important that
 
4728
the first trigger is released prior the second one to be pressed. If this
 
4729
sequence gets mixed up both triggers could be pressed by a single object for
 
4730
a moment what could cause major shortcuts in a level. Thus all actions are
 
4731
performed in the logical sequence and in a stable, repeatable sequence without
 
4732
any random.
 
4733
</p>
 
4734
<p>Action may be simple or sometimes be very complex world rearrangements. But in
 
4735
any case you should <b>never ever</b> &lsquo;<samp>kill</samp>&rsquo; the sender object. Killing the
 
4736
sender can cause application crashes! Be aware that even chained actions are not
 
4737
allowed to kill any prior sender object. Thus an <a href="#it_005ftrigger">it_trigger</a> that toggles
 
4738
an <a href="#st_005fswitch">st_switch</a> which in turn kills the first trigger is as critical as the
 
4739
trigger killing itself. We do generally discourage you to kill any object
 
4740
within its own action, as there is no dissolving animation and the WYSIWYG
 
4741
user paradigm is violated, too. But if there is urgent need for reasons of the
 
4742
level gaming logic you can perform the action in a secure, delayed mode. Just
 
4743
add the attribute <a href="#safeaction">safeaction</a> with value &lsquo;<samp>true</samp>&rsquo; to the self killing
 
4744
sender object. The action will no longer be performed at once, but with a
 
4745
minimum delay in a manner that will never cause crashes. But be aware that
 
4746
even a minimum delay, which is still within the same timeslice, may disturb
 
4747
the sequence of actions. This can cause unexpected logical results on the other
 
4748
hand.
 
4749
</p>
 
4750
<hr size="6">
 
4751
<a name="Callback-Function"></a>
 
4752
<table cellpadding="1" cellspacing="1" border="0">
 
4753
<tr><td valign="middle" align="left">[<a href="#Target-_002d-Action" title="Previous section in reading order"> &lt; </a>]</td>
 
4754
<td valign="middle" align="left">[<a href="#Object-State" title="Next section in reading order"> &gt; </a>]</td>
 
4755
<td valign="middle" align="left"> &nbsp; </td>
 
4756
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4757
<td valign="middle" align="left">[<a href="#Methods-of-Interaction" title="Up section"> Up </a>]</td>
 
4758
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4759
<td valign="middle" align="left"> &nbsp; </td>
 
4760
<td valign="middle" align="left"> &nbsp; </td>
 
4761
<td valign="middle" align="left"> &nbsp; </td>
 
4762
<td valign="middle" align="left"> &nbsp; </td>
 
4763
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4764
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4765
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4766
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4767
</tr></table>
 
4768
<a name="Callback-Function-1"></a>
 
4769
<h3 class="subsection">4.3.3 Callback Function</h3>
 
4770
 
 
4771
<a name="index-Callback-Function"></a>
 
4772
<a name="index-callback-function"></a>
 
4773
<p>The most powerful extension to the <a href="#Target-_002d-Action">Target - Action</a> paradigm that you can
 
4774
think of are callback functions. Instead of a target object as receiver of an
 
4775
action message you can supply an own <a href="http://www.lua.org">Lua</a> function that
 
4776
is called whenever the action is triggered.
 
4777
</p>
 
4778
<table><tr><td>&nbsp;</td><td><pre class="example">{&quot;st_switch&quot;, target=&quot;my_magic&quot;, action=&quot;callback&quot;}
 
4779
{&quot;st_switch&quot;, target=&quot;my_magic&quot;}
 
4780
</pre></td></tr></table>
 
4781
 
 
4782
<p>The &lsquo;<samp>target</samp>&rsquo; is the name of the function as a string. You may set the
 
4783
&lsquo;<samp>action</samp>&rsquo; to the string &lsquo;<samp>&quot;callback&quot;</samp>&rsquo; for purpose of clarification,
 
4784
but it is not necessary as you see in the second example. The engine identifies
 
4785
the target to be of type of a Lua function and thus the action needs to be
 
4786
a callback. But you should note and remember that it is up to you to ensure that
 
4787
all object names and callback functions names are unique.
 
4788
</p>
 
4789
<p>Let us look at the syntax of such a callback function
 
4790
</p>
 
4791
<table><tr><td>&nbsp;</td><td><pre class="example">function my_magic(value, sender)
 
4792
    if value == true then
 
4793
        wo[sender + {1,0}] = {&quot;it_coin_s&quot;}
 
4794
    end
 
4795
end
 
4796
</pre></td></tr></table>
 
4797
 
 
4798
<p>The function is called with two arguments. The first one is a value. The type
 
4799
and contents depends on the issuing object, but in most cases it is a boolean
 
4800
value. You will find the value described in the objects description. The second
 
4801
argument is the reference of the calling object.
 
4802
</p>
 
4803
<p>In the example we check if the <a href="#st_005fswitch">st_switch</a> did just toggle to ON. If this
 
4804
is given we take the switch, which is the sender, as a position and set a new
 
4805
<a href="#it_005fcoin">it_coin</a> to the grid east of it - a small bank automate that supplies money.
 
4806
</p>
 
4807
<p>The <a href="#Advanced-Lua-Examples">Advanced Lua Examples</a> will show examples of real powerful callback
 
4808
functions with a line by line comment.
 
4809
</p>
 
4810
<p>Further usage and aspects of callbacks in the level&rsquo;s lifecycle are given in
 
4811
the section <a href="#Callbacks-and-Load-Balancing">Callbacks and Load Balancing</a>.
 
4812
</p>
 
4813
<hr size="6">
 
4814
<a name="Object-State"></a>
 
4815
<table cellpadding="1" cellspacing="1" border="0">
 
4816
<tr><td valign="middle" align="left">[<a href="#Callback-Function" title="Previous section in reading order"> &lt; </a>]</td>
 
4817
<td valign="middle" align="left">[<a href="#The-Lifecycle-of-a-Level" title="Next section in reading order"> &gt; </a>]</td>
 
4818
<td valign="middle" align="left"> &nbsp; </td>
 
4819
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4820
<td valign="middle" align="left">[<a href="#Methods-of-Interaction" title="Up section"> Up </a>]</td>
 
4821
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4822
<td valign="middle" align="left"> &nbsp; </td>
 
4823
<td valign="middle" align="left"> &nbsp; </td>
 
4824
<td valign="middle" align="left"> &nbsp; </td>
 
4825
<td valign="middle" align="left"> &nbsp; </td>
 
4826
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4827
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4828
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4829
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4830
</tr></table>
 
4831
<a name="Object-State-1"></a>
 
4832
<h3 class="subsection">4.3.4 Object State</h3>
 
4833
 
 
4834
<p>A key concept for the ability to plug together objects like switches and doors
 
4835
are the very simple state machines of these objects. Most objects are described
 
4836
by simple machines with just 2 states like &lsquo;<samp>ON</samp>&rsquo;,&lsquo;<samp>OFF</samp>&rsquo; or &lsquo;<samp>OPEN</samp>&rsquo;,
 
4837
&lsquo;<samp>CLOSED</samp>&rsquo;. These objects can be plugged together by just few common messages.
 
4838
Further on these simple state machines are suited to the gamers who do not want
 
4839
to read manuals but want to explore the objects by playing with just a few tests.
 
4840
</p>
 
4841
<p>Even though states are usually named by appropriate uppercase names like above,
 
4842
the states are integer numbers starting with &lsquo;<samp>0</samp>&rsquo; usually related to the
 
4843
default state. But some objects use another mapping due to historic reasons.
 
4844
E.g. states that are orientation related use the state &lsquo;<samp>3</samp>&rsquo; representing
 
4845
&lsquo;<samp>NORTH</samp>&rsquo; usually as the default and number the orientations clockwise down to
 
4846
&lsquo;<samp>0</samp>&rsquo; representing &lsquo;<samp>WEST</samp>&rsquo;.
 
4847
</p>
 
4848
<p>In most cases it is sufficient to perform a state independent common action
 
4849
like <a href="#toggle">toggle</a>. Even two stated objects can be easily synchronized by the
 
4850
standard action <a href="#signal">signal</a>. But sometimes you may want to perform very state
 
4851
specific actions. Let us look how this can be done.
 
4852
</p>
 
4853
<p>E.g. let us take an <a href="#st_005ffourswitch">st_fourswitch</a>, that has four states, and two
 
4854
<a href="#st_005flaser">st_laser</a> which should be switched on and off. Both lasers should emit
 
4855
their beams while the fourswitch is in 3 of its states. But one of them should
 
4856
be off just while the fourswitch is in the &lsquo;<samp>EAST</samp>&rsquo; state and the other
 
4857
should be off just while the fourswitch is in the &lsquo;<samp>WEST</samp>&rsquo; state.
 
4858
This can be done by usage of state dependent target and actions:
 
4859
</p>
 
4860
<table><tr><td>&nbsp;</td><td><pre class="example">{st_fourswitch, target_3=&quot;laser#2&quot;, action_3=&quot;on&quot;,
 
4861
                target_2=&quot;laser#1&quot;, action_2=&quot;off&quot;,
 
4862
                target_1=&quot;laser#1&quot;, action_1=&quot;on&quot;,
 
4863
                target_0=&quot;laser#2&quot;, action_0=&quot;off&quot;}
 
4864
</pre></td></tr></table>
 
4865
 
 
4866
<p>Adding a number as suffix to &lsquo;<samp>target_</samp>&rsquo; and &lsquo;<samp>action_</samp>&rsquo; gives you
 
4867
special target and action attributes that will take precedence over the general
 
4868
&lsquo;<samp>target</samp>&rsquo; and &lsquo;<samp>action</samp>&rsquo; attributes if the state value equals the suffix
 
4869
number. An alternative declaration would be:
 
4870
</p>
 
4871
<table><tr><td>&nbsp;</td><td><pre class="example">{st_fourswitch, target={&quot;laser#1&quot;, &quot;laser#2&quot;},
 
4872
              action_3={&quot;nop&quot;,     &quot;on&quot;},
 
4873
              action_2={&quot;off&quot;,     &quot;nop&quot;},
 
4874
              action_1={&quot;on&quot;,      &quot;nop&quot;},
 
4875
              action_0={&quot;nop&quot;,     &quot;off&quot;}}
 
4876
</pre></td></tr></table>
 
4877
 
 
4878
<p>Here we do address both lasers in all states. But one of them receives a
 
4879
<a href="#nop">nop</a> message that stands for &quot;no operation&quot;. In fact this message will
 
4880
never be send. It is just a dummy message that we have need of for syntax
 
4881
reasons in the case above.
 
4882
</p>
 
4883
<p>Another example are two <a href="#it_005ftrigger">it_trigger</a> that switch a laser. An object pressing
 
4884
the first trigger should switch the laser on, an object pressing the second
 
4885
trigger should switch it off. But a trigger is two stated and performs one
 
4886
action on being pressed and another on being released. Thus we want to block
 
4887
the actions on trigger release events:
 
4888
</p>
 
4889
<table><tr><td>&nbsp;</td><td><pre class="example">{it_trigger, name=&quot;on_trigger&quot;,  target=&quot;laser#1&quot;, action_1=&quot;on&quot;, action_0=&quot;nop&quot;}
 
4890
{it_trigger, name=&quot;off_trigger&quot;, target=&quot;laser#1&quot;, action_1=&quot;off&quot;, action_0=&quot;nop&quot;}
 
4891
</pre></td></tr></table>
 
4892
 
 
4893
<p>The blocking of &lsquo;<samp>action_0</samp>&rsquo; is essential and can not be omitted, as
 
4894
otherwise the default action would be performed. This would be a &lsquo;<samp>toggle</samp>&rsquo;
 
4895
message that would switch the laser.
 
4896
</p>
 
4897
<p>As this useful default mechanism can sometimes be annoying you can switch off
 
4898
the default message by setting the <a href="#nopaction">nopaction</a> attribute to true.
 
4899
</p>
 
4900
<table><tr><td>&nbsp;</td><td><pre class="example">{it_trigger, name=&quot;on_trigger&quot;,  target=&quot;laser#1&quot;, action_1=&quot;on&quot;, nopaction=true}
 
4901
{it_trigger, name=&quot;off_trigger&quot;, target=&quot;laser#1&quot;, action_1=&quot;off&quot;, nopaction=true}
 
4902
</pre></td></tr></table>
 
4903
 
 
4904
<p>When an objects leaves a trigger the state &lsquo;<samp>0</samp>&rsquo; action will be performed.
 
4905
As neither &lsquo;<samp>action_0</samp>&rsquo; nor &lsquo;<samp>action</samp>&rsquo; is specified the default action
 
4906
will be performed, which is now &lsquo;<samp>nop</samp>&rsquo;.
 
4907
</p>
 
4908
<p>If you ever look into the C++ code you may note that many objects do have much
 
4909
more complex state machines than you expect from the level authors and gamers
 
4910
view. This is due to running animations, timers, etc.. The C++ objects map their
 
4911
complex internal state set to the much simpler external state set. This is the
 
4912
main reason that some features that level authors request can not be provided
 
4913
in the Lua API.
 
4914
</p>
 
4915
 
 
4916
<hr size="6">
 
4917
<a name="The-Lifecycle-of-a-Level"></a>
 
4918
<table cellpadding="1" cellspacing="1" border="0">
 
4919
<tr><td valign="middle" align="left">[<a href="#Object-State" title="Previous section in reading order"> &lt; </a>]</td>
 
4920
<td valign="middle" align="left">[<a href="#Library-Preloading" title="Next section in reading order"> &gt; </a>]</td>
 
4921
<td valign="middle" align="left"> &nbsp; </td>
 
4922
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4923
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Up section"> Up </a>]</td>
 
4924
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4925
<td valign="middle" align="left"> &nbsp; </td>
 
4926
<td valign="middle" align="left"> &nbsp; </td>
 
4927
<td valign="middle" align="left"> &nbsp; </td>
 
4928
<td valign="middle" align="left"> &nbsp; </td>
 
4929
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4930
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4931
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4932
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4933
</tr></table>
 
4934
<a name="The-Lifecycle-of-a-Level-1"></a>
 
4935
<h2 class="section">4.4 The Lifecycle of a Level</h2>
 
4936
 
 
4937
 
 
4938
<p>Snapshot
 
4939
Levelloading, Initialization, Runtime Callbacks,
 
4940
Ending Conditions - the mystery of Oxyds and Meditation
 
4941
</p><table class="menu" border="0" cellspacing="0">
 
4942
<tr><td align="left" valign="top"><a href="#Library-Preloading">4.4.1 Library Preloading</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
4943
</td></tr>
 
4944
<tr><td align="left" valign="top"><a href="#Snapshot-Principle">4.4.2 Snapshot Principle</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
4945
</td></tr>
 
4946
<tr><td align="left" valign="top"><a href="#Level-Initialization">4.4.3 Level Initialization</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
4947
</td></tr>
 
4948
<tr><td align="left" valign="top"><a href="#Object-Transformation">4.4.4 Object Transformation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Identity Transfer in case of Transformations
 
4949
</td></tr>
 
4950
<tr><td align="left" valign="top"><a href="#Named-Positions">4.4.5 Named Positions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               Positions as successors of killed Floors
 
4951
</td></tr>
 
4952
<tr><td align="left" valign="top"><a href="#Callbacks-and-Load-Balancing">4.4.6 Callbacks and Load Balancing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
4953
</td></tr>
 
4954
<tr><td align="left" valign="top"><a href="#Level-Restart">4.4.7 Level Restart</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
4955
</td></tr>
 
4956
<tr><td align="left" valign="top"><a href="#Ending-Conditions">4.4.8 Ending Conditions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Meditation vs. Oxydpairs
 
4957
</td></tr>
 
4958
</table>
 
4959
 
 
4960
<hr size="6">
 
4961
<a name="Library-Preloading"></a>
 
4962
<table cellpadding="1" cellspacing="1" border="0">
 
4963
<tr><td valign="middle" align="left">[<a href="#The-Lifecycle-of-a-Level" title="Previous section in reading order"> &lt; </a>]</td>
 
4964
<td valign="middle" align="left">[<a href="#Snapshot-Principle" title="Next section in reading order"> &gt; </a>]</td>
 
4965
<td valign="middle" align="left"> &nbsp; </td>
 
4966
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4967
<td valign="middle" align="left">[<a href="#The-Lifecycle-of-a-Level" title="Up section"> Up </a>]</td>
 
4968
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4969
<td valign="middle" align="left"> &nbsp; </td>
 
4970
<td valign="middle" align="left"> &nbsp; </td>
 
4971
<td valign="middle" align="left"> &nbsp; </td>
 
4972
<td valign="middle" align="left"> &nbsp; </td>
 
4973
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4974
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4975
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4976
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4977
</tr></table>
 
4978
<a name="Library-Preloading-1"></a>
 
4979
<h3 class="subsection">4.4.1 Library Preloading</h3>
 
4980
 
 
4981
<hr size="6">
 
4982
<a name="Snapshot-Principle"></a>
 
4983
<table cellpadding="1" cellspacing="1" border="0">
 
4984
<tr><td valign="middle" align="left">[<a href="#Library-Preloading" title="Previous section in reading order"> &lt; </a>]</td>
 
4985
<td valign="middle" align="left">[<a href="#Level-Initialization" title="Next section in reading order"> &gt; </a>]</td>
 
4986
<td valign="middle" align="left"> &nbsp; </td>
 
4987
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
4988
<td valign="middle" align="left">[<a href="#The-Lifecycle-of-a-Level" title="Up section"> Up </a>]</td>
 
4989
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
4990
<td valign="middle" align="left"> &nbsp; </td>
 
4991
<td valign="middle" align="left"> &nbsp; </td>
 
4992
<td valign="middle" align="left"> &nbsp; </td>
 
4993
<td valign="middle" align="left"> &nbsp; </td>
 
4994
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
4995
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
4996
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
4997
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
4998
</tr></table>
 
4999
<a name="Snapshot-Principle-1"></a>
 
5000
<h3 class="subsection">4.4.2 Snapshot Principle</h3>
 
5001
 
 
5002
<p>Most levels contain objects that take influence on each other. A switch might
 
5003
toggle a door by <a href="#Target-_002d-Action">Target - Action</a>, marbles may press a trigger, or a laser
 
5004
might activate a laserswitch or transform a hammer into a sword. Of course it is
 
5005
essential to know how to set up such objects to get the desired start
 
5006
configuration without the objects changing unexpected on level initialization.
 
5007
</p>
 
5008
<p>The snapshot principle is a simple thumb rule that you can rely on in describing
 
5009
the level as a snapshot of object at a given point of time. Every object has just
 
5010
to be configured as it should be at the given time. All interactions that would
 
5011
take place in a running game do not take place while setting objects during
 
5012
initialization.
 
5013
</p>
 
5014
<p>E.g. if a switch toggles a door and the switch should be initially on and the
 
5015
door should be initially open you describe the object with exactly these
 
5016
attributes:
 
5017
</p>
 
5018
<table><tr><td>&nbsp;</td><td><pre class="example">{&quot;st_switch&quot;, target=&quot;mydoor&quot;, state=ON}
 
5019
{&quot;st_door&quot;, name=&quot;mydoor&quot;, state=OPEN}
 
5020
</pre></td></tr></table>
 
5021
 
 
5022
<p>A laser that is initially on that illuminates a laserswitch needs an initially
 
5023
active laserswitch. But of course no attribute exists that would allow you to
 
5024
set a laserswitch active. The snapshot principle includes the rule that all
 
5025
internal states are updated without external actions. This means that the
 
5026
laserswitch will show up active without causing an action on its target.
 
5027
</p>
 
5028
<table><tr><td>&nbsp;</td><td><pre class="example">{&quot;st_laser&quot;, state=ON}
 
5029
{&quot;st_laserswitch&quot;, target=&quot;mydoor&quot;}
 
5030
</pre></td></tr></table>
 
5031
 
 
5032
<p>What about objects that transform on laser light. The snapshot principle keeps
 
5033
the object from transforming during initialization. A hammer that is set in
 
5034
an initially existing laser beam will not transform to a sword. It remains as
 
5035
a hammer that will transform on any subsequent new laser light during the game.
 
5036
</p>
 
5037
<p>Of course it cannot be allowed to describe impossible initial level states.
 
5038
Objects like dynamite do explode immediately on a laser beam hit. Thus a
 
5039
dynamite item in an initial laser beam is a fault that causes an exception.
 
5040
The snapshot principle forces you in this case to set an explosion item instead
 
5041
of the dynamite.
 
5042
</p>
 
5043
<p>Some objects do process internal state transformations that cannot be configured
 
5044
by attributes. But some of these states may be of interest on describing a
 
5045
snapshot of a level. Where possible a special object subkind exists with a suffix
 
5046
of &lsquo;<samp>_new</samp>&rsquo;. These objects can be used in the initial level description to
 
5047
set objects in special initial states. E.g. <a href="#it_005fblocker">it_blocker</a> provides such a
 
5048
special subkind. Note that these objects will never report their initial
 
5049
subkind on a kind request as they come into existence as a standard object.
 
5050
</p>
 
5051
 
 
5052
<hr size="6">
 
5053
<a name="Level-Initialization"></a>
 
5054
<table cellpadding="1" cellspacing="1" border="0">
 
5055
<tr><td valign="middle" align="left">[<a href="#Snapshot-Principle" title="Previous section in reading order"> &lt; </a>]</td>
 
5056
<td valign="middle" align="left">[<a href="#Object-Transformation" title="Next section in reading order"> &gt; </a>]</td>
 
5057
<td valign="middle" align="left"> &nbsp; </td>
 
5058
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
5059
<td valign="middle" align="left">[<a href="#The-Lifecycle-of-a-Level" title="Up section"> Up </a>]</td>
 
5060
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
5061
<td valign="middle" align="left"> &nbsp; </td>
 
5062
<td valign="middle" align="left"> &nbsp; </td>
 
5063
<td valign="middle" align="left"> &nbsp; </td>
 
5064
<td valign="middle" align="left"> &nbsp; </td>
 
5065
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
5066
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
5067
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
5068
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
5069
</tr></table>
 
5070
<a name="Level-Initialization-1"></a>
 
5071
<h3 class="subsection">4.4.3 Level Initialization</h3>
 
5072
 
 
5073
<p>Knowing what has been preloaded and knowing exactly which objects we have to
 
5074
set in which state, it is time to have a look on how your level code is
 
5075
processed. The main issue is to guarantee that all parts referenced have been
 
5076
set up properly in advance.
 
5077
</p>
 
5078
<p>Prior execution of the first line of your code the world exists just as an
 
5079
abstract handle, but not as grid array able to accept objects. Thus the first
 
5080
lines of code should set up all <a href="#Global-Attributes">Global Attributes</a> deviating from their
 
5081
defaults. Even though many attributes can be set or changes later on and even
 
5082
on runtime, there are some attributes like <a href="#ProvideExtralifes">ProvideExtralifes</a> that take
 
5083
only effect if being set prior world creation, or others like <a href="#MaxOxydColor">MaxOxydColor</a>
 
5084
that must be set prior their first usage. Our recommendation is to collect all
 
5085
global attribute settings at the very beginning of the level.
 
5086
</p>
 
5087
<p>The second section of your level code should be the declaration of tiles. Being
 
5088
just declarations these code lines do not set objects to the world. They just
 
5089
depend on global attributes and may reference each other. Listing them all
 
5090
together in a code section makes it easy to maintain the overview and to avoid
 
5091
dependency conflicts.
 
5092
</p>
 
5093
<p>If you use <a href="#Resolvers">Resolvers</a> you should put their declarations in the next code
 
5094
section as they may refer to tiles and global attributes and need to be set up
 
5095
prior the world creation.
 
5096
</p>
 
5097
<p>The central statement of every level is the <a href="#World-Creation">World Creation</a>. It sets up
 
5098
the world to its size and sets initial objects according to the given tile
 
5099
declarations to the grid array. While you are free to add and change any of
 
5100
these objects later on the size of the world is fixed and can not be changed.
 
5101
</p>
 
5102
<p>Thus subsequent code lines should <a href="#add">add</a> other objects, draw additional
 
5103
maps of objects and finalize some objects. The most common statement for such
 
5104
a finalization is the <a href="#shuffleOxyd">shuffleOxyd</a> method. It needs to know all
 
5105
<a href="#st_005foxyd">st_oxyd</a> to be able to color and shuffle them. Another finalization may
 
5106
be a custom rendering of a maze, that extracts the maze shape out of the
 
5107
level map (see section <a href="#res_002emaze">res.maze</a>).
 
5108
</p>
 
5109
<p>This post world creation code may well have the need of loops or even some
 
5110
local used functions that need to be integrated to precede. Please keep such
 
5111
functions near by their usage and within the same code section.
 
5112
</p>
 
5113
<p>Another set of functions that you may want to add are <a href="#Callbacks-and-Load-Balancing">Callbacks and Load Balancing</a>. We recommend to append these functions as the last section as they
 
5114
are not called within the level initialization itself.
 
5115
</p>
 
5116
<p>But there is one very special exception. The <code>postinit()</code> callback is
 
5117
called after the level initialization code has been processed and all subsequent
 
5118
engine internal initialization has been finished. If this function is present
 
5119
in a level it gets executed directly before the first mouse movement event gets
 
5120
processed. Thus you can rely within this function that all objects are set up
 
5121
in their final state. If you have need of such a postinit callback you should
 
5122
put it after all the level intialization code and in front of other callback
 
5123
functions that will be executed on subsequent events.
 
5124
</p>
 
5125
<hr size="6">
 
5126
<a name="Object-Transformation"></a>
 
5127
<table cellpadding="1" cellspacing="1" border="0">
 
5128
<tr><td valign="middle" align="left">[<a href="#Level-Initialization" title="Previous section in reading order"> &lt; </a>]</td>
 
5129
<td valign="middle" align="left">[<a href="#Named-Positions" title="Next section in reading order"> &gt; </a>]</td>
 
5130
<td valign="middle" align="left"> &nbsp; </td>
 
5131
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
5132
<td valign="middle" align="left">[<a href="#The-Lifecycle-of-a-Level" title="Up section"> Up </a>]</td>
 
5133
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
5134
<td valign="middle" align="left"> &nbsp; </td>
 
5135
<td valign="middle" align="left"> &nbsp; </td>
 
5136
<td valign="middle" align="left"> &nbsp; </td>
 
5137
<td valign="middle" align="left"> &nbsp; </td>
 
5138
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
5139
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
5140
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
5141
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
5142
</tr></table>
 
5143
<a name="Object-Transformation-1"></a>
 
5144
<h3 class="subsection">4.4.4 Object Transformation</h3>
 
5145
 
 
5146
<p>During runtime some Enigma objects do transform into other successor objects,
 
5147
like an <a href="#st_005fblocker">st_blocker</a>/<a href="#it_005fblocker">it_blocker</a>, an <a href="#st_005fbrake">st_brake</a>/<a href="#it_005fbrake">it_brake</a>,
 
5148
an <a href="#it_005frubberband">it_rubberband</a>/<a href="#ot_005frubberband">ot_rubberband</a>, an <a href="#it_005fhammer">it_hammer</a>/<a href="#it_005fsword">it_sword</a>,...
 
5149
</p>
 
5150
<p>Even though the successor object may have other attributes, some attributes and
 
5151
especially any user attributes should be maintained. In fact the objects name,
 
5152
its target and action attributes and all attributes starting with an underscore
 
5153
&lsquo;<samp>_</samp>&rsquo;, the user attributes, are transferred to the successor object. Thus you
 
5154
can rely on the successor to message the same target and you can it access it
 
5155
via its old name.
 
5156
</p>
 
5157
<hr size="6">
 
5158
<a name="Named-Positions"></a>
 
5159
<table cellpadding="1" cellspacing="1" border="0">
 
5160
<tr><td valign="middle" align="left">[<a href="#Object-Transformation" title="Previous section in reading order"> &lt; </a>]</td>
 
5161
<td valign="middle" align="left">[<a href="#Callbacks-and-Load-Balancing" title="Next section in reading order"> &gt; </a>]</td>
 
5162
<td valign="middle" align="left"> &nbsp; </td>
 
5163
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
5164
<td valign="middle" align="left">[<a href="#The-Lifecycle-of-a-Level" title="Up section"> Up </a>]</td>
 
5165
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
5166
<td valign="middle" align="left"> &nbsp; </td>
 
5167
<td valign="middle" align="left"> &nbsp; </td>
 
5168
<td valign="middle" align="left"> &nbsp; </td>
 
5169
<td valign="middle" align="left"> &nbsp; </td>
 
5170
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
5171
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
5172
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
5173
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
5174
</tr></table>
 
5175
<a name="Named-Positions-1"></a>
 
5176
<h3 class="subsection">4.4.5 Named Positions</h3>
 
5177
 
 
5178
<p>Many stones are movable and if the user can not push them, most may still be
 
5179
swapped. Items may be picked up by actors or be killed in a burning fire. Thus
 
5180
in most cases it is preferable to mark anchors or shapes in the floor. On every
 
5181
grid position a floor object is guaranteed and they are much more stable than
 
5182
other objects. But nevertheless a user may push an <a href="#st_005fbox">st_box</a>, an
 
5183
<a href="#st_005fpuzzle">st_puzzle</a> or other floor building stone on an <a href="#fl_005fwater">fl_water</a> or
 
5184
<a href="#fl_005fabyss">fl_abyss</a>. Furthermore a user may drop and ignite an <a href="#it_005fbomb">it_bomb</a> that
 
5185
destructs the floor leaving a new <a href="#fl_005fabyss">fl_abyss</a>. In all these cases you may
 
5186
loose a named anchor or an essential part of a named grid area accessible as
 
5187
an object group.
 
5188
</p>
 
5189
<p>Thus for every named floor that gets killed its position is stored in a
 
5190
repository under its name. You just need to retrieve the named positions
 
5191
instead of the named objects if you want to get all affected floor positions.
 
5192
</p>
 
5193
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;~&quot;] = {&quot;fl_water&quot;, &quot;water#&quot;}
 
5194
...
 
5195
function sweet()
 
5196
    wo[po[&quot;water#*&quot;]] = {&quot;it_cherry&quot;}
 
5197
end
 
5198
</pre></td></tr></table>
 
5199
 
 
5200
<p>Note that a request for a named position will include all positions of matching
 
5201
named objects as well as those named positions derived from killed floors.
 
5202
</p>
 
5203
<hr size="6">
 
5204
<a name="Callbacks-and-Load-Balancing"></a>
 
5205
<table cellpadding="1" cellspacing="1" border="0">
 
5206
<tr><td valign="middle" align="left">[<a href="#Named-Positions" title="Previous section in reading order"> &lt; </a>]</td>
 
5207
<td valign="middle" align="left">[<a href="#Level-Restart" title="Next section in reading order"> &gt; </a>]</td>
 
5208
<td valign="middle" align="left"> &nbsp; </td>
 
5209
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
5210
<td valign="middle" align="left">[<a href="#The-Lifecycle-of-a-Level" title="Up section"> Up </a>]</td>
 
5211
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
5212
<td valign="middle" align="left"> &nbsp; </td>
 
5213
<td valign="middle" align="left"> &nbsp; </td>
 
5214
<td valign="middle" align="left"> &nbsp; </td>
 
5215
<td valign="middle" align="left"> &nbsp; </td>
 
5216
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
5217
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
5218
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
5219
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
5220
</tr></table>
 
5221
<a name="Callbacks-and-Load-Balancing-1"></a>
 
5222
<h3 class="subsection">4.4.6 Callbacks and Load Balancing</h3>
 
5223
 
 
5224
<p>The most flexible feature for a level author to establish an unique behaviour
 
5225
of his level are <a href="#Callback-Function">Callback Function</a>s.
 
5226
</p>
 
5227
<p><a href="#Target-_002d-Action">Target - Action</a> kill warning
 
5228
<a href="#ot_005ftimer">ot_timer</a>
 
5229
</p>
 
5230
<p>global and res.*.function
 
5231
</p>
 
5232
<hr size="6">
 
5233
<a name="Level-Restart"></a>
 
5234
<table cellpadding="1" cellspacing="1" border="0">
 
5235
<tr><td valign="middle" align="left">[<a href="#Callbacks-and-Load-Balancing" title="Previous section in reading order"> &lt; </a>]</td>
 
5236
<td valign="middle" align="left">[<a href="#Ending-Conditions" title="Next section in reading order"> &gt; </a>]</td>
 
5237
<td valign="middle" align="left"> &nbsp; </td>
 
5238
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
5239
<td valign="middle" align="left">[<a href="#The-Lifecycle-of-a-Level" title="Up section"> Up </a>]</td>
 
5240
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
5241
<td valign="middle" align="left"> &nbsp; </td>
 
5242
<td valign="middle" align="left"> &nbsp; </td>
 
5243
<td valign="middle" align="left"> &nbsp; </td>
 
5244
<td valign="middle" align="left"> &nbsp; </td>
 
5245
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
5246
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
5247
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
5248
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
5249
</tr></table>
 
5250
<a name="Level-Restart-1"></a>
 
5251
<h3 class="subsection">4.4.7 Level Restart</h3>
 
5252
 
 
5253
<hr size="6">
 
5254
<a name="Ending-Conditions"></a>
 
5255
<table cellpadding="1" cellspacing="1" border="0">
 
5256
<tr><td valign="middle" align="left">[<a href="#Level-Restart" title="Previous section in reading order"> &lt; </a>]</td>
 
5257
<td valign="middle" align="left">[<a href="#Lua-API" title="Next section in reading order"> &gt; </a>]</td>
 
5258
<td valign="middle" align="left"> &nbsp; </td>
 
5259
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
5260
<td valign="middle" align="left">[<a href="#The-Lifecycle-of-a-Level" title="Up section"> Up </a>]</td>
 
5261
<td valign="middle" align="left">[<a href="#Lua-API" title="Next chapter"> &gt;&gt; </a>]</td>
 
5262
<td valign="middle" align="left"> &nbsp; </td>
 
5263
<td valign="middle" align="left"> &nbsp; </td>
 
5264
<td valign="middle" align="left"> &nbsp; </td>
 
5265
<td valign="middle" align="left"> &nbsp; </td>
 
5266
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
5267
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
5268
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
5269
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
5270
</tr></table>
 
5271
<a name="Ending-Conditions-1"></a>
 
5272
<h3 class="subsection">4.4.8 Ending Conditions</h3>
 
5273
 
 
5274
<p>Two essential questions remain to be answered. When and under which conditions
 
5275
is a level successfully finished. How do I declare a level as being a
 
5276
meditation level in opposite to a standard oxyd pair opening level.
 
5277
</p>
 
5278
<p>In fact there is no &rsquo;meditation&rsquo; flag, neither within the XML Level
 
5279
<a href="#Info-metadata">Info metadata</a> nor as one of the <a href="#Global-Attributes">Global Attributes</a>. That means there
 
5280
is no formal distinction between both level &rsquo;types&rsquo;. But there are two different
 
5281
types of ending conditions. Both are checked permanently and whichever
 
5282
is fulfilled first wins. Thus Enigma allows you to write true hybrid levels
 
5283
that provide <a href="#st_005foxyd">st_oxyd</a> as well as <a href="#it_005fmeditation">it_meditation</a> allowing the user
 
5284
to solve the level by two totally different means.
 
5285
</p>
 
5286
<p>The main way to end the game is to fulfill the oxyd pair opening condition:
 
5287
</p>
 
5288
<p>The game is over when the user succeeds in opening all regular colored
 
5289
<a href="#st_005foxyd">st_oxyd</a>s by pairs.
 
5290
</p>
 
5291
<p>This implies that there is at least one pair of regular colored oxyd stones
 
5292
and that all oxyd colors appear in even number of instances. Whereas you will
 
5293
always add at least one pair of oxyds for a standard level, you may simply loose
 
5294
track of the number of instances. Therefore the engine will permanently check at
 
5295
runtime that every oxyd color appears in an even number of instances. Any
 
5296
violation causes an error. In case you will add or delete oxyd stones you
 
5297
need to disable this checking by setting the global attribute
 
5298
<a href="#AllowSingleOxyds">AllowSingleOxyds</a> to <code>true</code>. Now it is your reponsibility as an
 
5299
author to ensure that the level remains solvable by adding or removing pairs
 
5300
only.
 
5301
</p>
 
5302
<p>The second way to end the game is to fulfill the meditation condition:
 
5303
</p>
 
5304
<p>All <a href="#ac_005fpearl">ac_pearl</a>s must reside for at least one second within the uneven area
 
5305
of an <a href="#it_005fmeditation">it_meditation</a>, all <a href="#it_005fmeditation">it_meditation</a> marked as <code>essential</code>
 
5306
must be occupied and the number of <a href="#ac_005fpearl">ac_pearl</a>s must be equal to the number
 
5307
of occupied <a href="#it_005fmeditation">it_meditation</a>s.
 
5308
</p>
 
5309
<p>This implies again that there exists at least one <a href="#ac_005fpearl">ac_pearl</a> and that
 
5310
no two pearls can reside within the same <a href="#it_005fmeditation">it_meditation</a>. There must be at
 
5311
least the same number of <a href="#it_005fmeditation">it_meditation</a> as of <a href="#ac_005fpearl">ac_pearl</a>, but there may
 
5312
be more <a href="#it_005fmeditation">it_meditation</a>s as long as they are not marked as being essential.
 
5313
A surplus of <a href="#it_005fmeditation">it_meditation</a> can easily occur due to explosions of
 
5314
<a href="#it_005fdynamite">it_dynamite</a>.
 
5315
</p>
 
5316
<p>A level that should be solved by fulfillment of the meditation condition can
 
5317
contain <a href="#st_005foxyd">st_oxyd</a> and by setting <a href="#AllowSingleOxyds">AllowSingleOxyds</a> to <code>true</code> you
 
5318
can add odd numbers of oxyd stones of a color. On the other hand you can add
 
5319
<a href="#ac_005fpearl">ac_pearl</a> to a level that should be solved by fulfillment of the oxyd pair
 
5320
condition. But you must carefully check that the user can not rest the pearls in
 
5321
given <a href="#it_005fmeditation">it_meditation</a> or can create <a href="#it_005fmeditation">it_meditation</a> by <a href="#it_005fdynamite">it_dynamite</a>.
 
5322
Marking more <a href="#it_005fmeditation">it_meditation</a> as <code>essential</code> than existing
 
5323
<a href="#ac_005fpearl">ac_pearl</a>s can avoid shortcuts.
 
5324
</p>
 
5325
<p>A level that is set up to allow the user to fulfill both conditions is called
 
5326
a hybrid level. Of course it is a difficult task to provide equivalent solutions
 
5327
for both approaches.
 
5328
</p>
 
5329
<p>Independent of the condition type all actors marked as <code>essential</code> need to
 
5330
be alive at the moment the condition is fulfilled. Mainly in existing legacy
 
5331
levels but may in some very carefully designed future levels the author may
 
5332
allow the user to sacrify an actor to fulfill the condition by setting the
 
5333
global attribute <a href="#SurviveFinish">SurviveFinish</a> to <code>false</code>. In this case a mable
 
5334
may shatter while the condition is fulfilled. Of course the essential actor
 
5335
may not shatter in advance, because as soon as the shattering is over the
 
5336
essential actor will cause a level restart, if it can not be resurrected.
 
5337
</p>
 
5338
<hr size="6">
 
5339
<a name="Lua-API"></a>
 
5340
<table cellpadding="1" cellspacing="1" border="0">
 
5341
<tr><td valign="middle" align="left">[<a href="#Ending-Conditions" title="Previous section in reading order"> &lt; </a>]</td>
 
5342
<td valign="middle" align="left">[<a href="#Basic-Lua-Examples" title="Next section in reading order"> &gt; </a>]</td>
 
5343
<td valign="middle" align="left"> &nbsp; </td>
 
5344
<td valign="middle" align="left">[<a href="#Enigma-Paradigm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
5345
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
5346
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
5347
<td valign="middle" align="left"> &nbsp; </td>
 
5348
<td valign="middle" align="left"> &nbsp; </td>
 
5349
<td valign="middle" align="left"> &nbsp; </td>
 
5350
<td valign="middle" align="left"> &nbsp; </td>
 
5351
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
5352
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
5353
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
5354
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
5355
</tr></table>
 
5356
<a name="Lua-API-1"></a>
 
5357
<h1 class="chapter">5. Lua API</h1>
 
5358
 
 
5359
<p>Knowing the basic principles of an Enigma level&rsquo;s world you now just need
 
5360
the language glue to write your first level. Enigma levels are written in
 
5361
the language <a href="http://www.lua.org">Lua</a> as of version 5.1.4. This powerful
 
5362
language gives you the ability to write most complex, dynamical levels, while
 
5363
being nearly transparent on writing basic standard levels. Indeed there is no
 
5364
reason to dig into this language at the very beginning.
 
5365
</p>
 
5366
<p>With the second Lua API version, as of Enigma 1.10, we designed an optimized
 
5367
way of describing levels in a very short and readable manner. Thus we would like
 
5368
to introduce you to this API by giving several examples from a basic level to most
 
5369
thrilling dynamic real Enigma levels. You should be able to start your first
 
5370
experiments just after reading the first example with its explanations.
 
5371
</p>
 
5372
<p>For your convenience we do color the Lua code part. Predefined Lua variables and
 
5373
functions are colored in green. Enigma internal string constants as object kinds,
 
5374
attribute or message names are colored in blue. Level specific variable names
 
5375
and value constants are colored in magenta.
 
5376
</p>
 
5377
<p>After the examples and a short overview the details of the language specific API
 
5378
part are given, as you can expect it for a reference manual. Please note
 
5379
that additional <a href="#Advanced-Features">Advanced Features</a> are described in a separate chapter.
 
5380
</p>
 
5381
<table class="menu" border="0" cellspacing="0">
 
5382
<tr><td align="left" valign="top"><a href="#Basic-Lua-Examples">5.1 Basic Lua Examples</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5383
</td></tr>
 
5384
<tr><td align="left" valign="top"><a href="#API-2-Overview">5.2 API 2 Overview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5385
</td></tr>
 
5386
<tr><td align="left" valign="top"><a href="#Advanced-Lua-Examples">5.3 Advanced Lua Examples</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5387
</td></tr>
 
5388
<tr><td align="left" valign="top"><a href="#Introduction-to-Datatypes">5.4 Introduction to Datatypes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5389
</td></tr>
 
5390
<tr><td align="left" valign="top"><a href="#Position">5.5 Position</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5391
</td></tr>
 
5392
<tr><td align="left" valign="top"><a href="#Object">5.6 Object</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5393
</td></tr>
 
5394
<tr><td align="left" valign="top"><a href="#Group">5.7 Group</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5395
</td></tr>
 
5396
<tr><td align="left" valign="top"><a href="#NamedObjects">5.8 NamedObjects</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5397
</td></tr>
 
5398
<tr><td align="left" valign="top"><a href="#PositionList">5.9 PositionList</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5399
</td></tr>
 
5400
<tr><td align="left" valign="top"><a href="#Positions-Repository">5.10 Positions Repository</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5401
</td></tr>
 
5402
<tr><td align="left" valign="top"><a href="#Tile-and-Object-Declaration">5.11 Tile and Object Declaration</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5403
</td></tr>
 
5404
<tr><td align="left" valign="top"><a href="#Tiles-Repository">5.12 Tiles Repository</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5405
</td></tr>
 
5406
<tr><td align="left" valign="top"><a href="#World">5.13 World</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5407
</td></tr>
 
5408
<tr><td align="left" valign="top"><a href="#Functions">5.14 Functions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5409
</td></tr>
 
5410
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 
5411
</pre></th></tr></table>
 
5412
 
 
5413
 
 
5414
<hr size="6">
 
5415
<a name="Basic-Lua-Examples"></a>
 
5416
<table cellpadding="1" cellspacing="1" border="0">
 
5417
<tr><td valign="middle" align="left">[<a href="#Lua-API" title="Previous section in reading order"> &lt; </a>]</td>
 
5418
<td valign="middle" align="left">[<a href="#Basic-Example" title="Next section in reading order"> &gt; </a>]</td>
 
5419
<td valign="middle" align="left"> &nbsp; </td>
 
5420
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
5421
<td valign="middle" align="left">[<a href="#Lua-API" title="Up section"> Up </a>]</td>
 
5422
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
5423
<td valign="middle" align="left"> &nbsp; </td>
 
5424
<td valign="middle" align="left"> &nbsp; </td>
 
5425
<td valign="middle" align="left"> &nbsp; </td>
 
5426
<td valign="middle" align="left"> &nbsp; </td>
 
5427
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
5428
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
5429
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
5430
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
5431
</tr></table>
 
5432
<a name="Basic-Lua-Examples-1"></a>
 
5433
<h2 class="section">5.1 Basic Lua Examples</h2>
 
5434
 
 
5435
<p>Let us look at two basic onescreener levels, that make use of all basic
 
5436
techniques. While the first level is a little bit artificial, as it is designed
 
5437
for demo purposes only, the second one is a quite dynamic real level out of
 
5438
the Enigma levelpacks.
 
5439
</p>
 
5440
<table class="menu" border="0" cellspacing="0">
 
5441
<tr><td align="left" valign="top"><a href="#Basic-Example">5.1.1 Basic Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5442
</td></tr>
 
5443
<tr><td align="left" valign="top"><a href="#Colored-Turnstiles">5.1.2 Colored Turnstiles</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Enigma Levelpack VIII, level #?
 
5444
</td></tr>
 
5445
</table>
 
5446
 
 
5447
<hr size="6">
 
5448
<a name="Basic-Example"></a>
 
5449
<table cellpadding="1" cellspacing="1" border="0">
 
5450
<tr><td valign="middle" align="left">[<a href="#Basic-Lua-Examples" title="Previous section in reading order"> &lt; </a>]</td>
 
5451
<td valign="middle" align="left">[<a href="#Colored-Turnstiles" title="Next section in reading order"> &gt; </a>]</td>
 
5452
<td valign="middle" align="left"> &nbsp; </td>
 
5453
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
5454
<td valign="middle" align="left">[<a href="#Basic-Lua-Examples" title="Up section"> Up </a>]</td>
 
5455
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
5456
<td valign="middle" align="left"> &nbsp; </td>
 
5457
<td valign="middle" align="left"> &nbsp; </td>
 
5458
<td valign="middle" align="left"> &nbsp; </td>
 
5459
<td valign="middle" align="left"> &nbsp; </td>
 
5460
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
5461
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
5462
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
5463
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
5464
</tr></table>
 
5465
<a name="Basic-Example-1"></a>
 
5466
<h3 class="subsection">5.1.1 Basic Example</h3>
 
5467
 
 
5468
<p>Let us view the source code. We did add a line count in the first two columns
 
5469
for reference purpose within this section. These line count numbers are not part
 
5470
of the source code itself!
 
5471
</p>
 
5472
<table><tr><td>&nbsp;</td><td><pre class="example"> 1    &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot; ?&gt;
 
5473
 2    &lt;el:level xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://enigma-game.org/schema/level/1 level.xsd&quot; xmlns:el=&quot;http://enigma-game.org/schema/level/1&quot;&gt;
 
5474
 3     &lt;el:protected&gt;
 
5475
 4       &lt;el:info el:type=&quot;level&quot;&gt;
 
5476
 5         &lt;el:identity el:title=&quot;Basic Level&quot; el:subtitle=&quot;&quot; el:id=&quot;20080721ral513&quot;/&gt;
 
5477
 6         &lt;el:version el:score=&quot;1&quot; el:release=&quot;1&quot; el:revision=&quot;$Revision: 1170 $&quot; el:status=&quot;experimental&quot;/&gt;
 
5478
 7         &lt;el:author el:name=&quot;Ronald Lamprecht&quot; el:email=&quot;ral@users.berlios.de&quot;/&gt;
 
5479
 8         &lt;el:copyright&gt;Copyright &copy; 2008 Ronald Lamprecht&lt;/el:copyright&gt;
 
5480
 9         &lt;el:license el:type=&quot;GPL v2.0 or above&quot; el:open=&quot;true&quot;/&gt;
 
5481
10         &lt;el:compatibility el:enigma=&quot;<var>1.10</var>&quot;/&gt;
 
5482
11         &lt;el:modes el:easy=&quot;true&quot; el:single=&quot;true&quot; el:network=&quot;false&quot;/&gt;
 
5483
12         &lt;el:score el:easy=&quot;-&quot; el:difficult=&quot;-&quot;/&gt;
 
5484
13       &lt;/el:info&gt;
 
5485
14       &lt;el:luamain&gt;&lt;![CDATA[
 
5486
15
 
5487
16    <i>wo</i>[&quot;<b>ConserveLevel</b>&quot;] = <var>true</var>
 
5488
17
 
5489
18    <i>ti</i>[&quot;<var> </var>&quot;] = {&quot;<b>fl_samba</b>&quot;}
 
5490
19    <i>ti</i>[&quot;<var>.</var>&quot;] = {&quot;<b>fl_abyss</b>&quot;}
 
5491
20    <i>ti</i>[&quot;<var>~</var>&quot;] = {&quot;<b>fl_water</b>&quot;}
 
5492
21    <i>ti</i>[&quot;<var>#</var>&quot;] = {&quot;<b>st_granite</b>&quot;}
 
5493
22    <i>ti</i>[&quot;<var>X</var>&quot;] = {&quot;<b>st_oxyd</b>&quot;}
 
5494
23
 
5495
24    <i>ti</i>[&quot;<var>L</var>&quot;] = {&quot;<b>st_laser</b>&quot;, <b>orientation</b>=<var>EAST</var>, <b>state</b>=<var>ON</var>}
 
5496
25    <i>ti</i>[&quot;<var>M</var>&quot;] = {&quot;<b>st_lightpassenger</b>&quot;, <b>interval</b>=<var>0.04</var>}
 
5497
26
 
5498
27    <i>ti</i>[&quot;<var>P</var>&quot;] = {&quot;<b>st_polarswitch</b>&quot;, <b>name</b>=&quot;<var>polar</var>&quot;}
 
5499
28    <i>ti</i>[&quot;<var>T</var>&quot;] = {&quot;<b>it_trigger</b>&quot;, <b>target</b>=&quot;<var>polar</var>&quot;}
 
5500
29
 
5501
30    <i>ti</i>[&quot;<var>^</var>&quot;] = {&quot;<b>st_boulder</b>&quot;, &quot;<var>boulder</var>&quot;, <b>orientation</b>=<var>NORTH</var>}
 
5502
31    <i>ti</i>[&quot;<var>F</var>&quot;] = {&quot;<b>st_fourswitch</b>&quot;, <b>target</b>=&quot;<var>boulder</var>&quot;, <b>action</b>=&quot;<var>orientate</var>&quot;}
 
5503
32
 
5504
33    <i>ti</i>[&quot;<var>D</var>&quot;] = {&quot;<b>st_door_d</b>&quot;, &quot;<var>door</var>&quot;, <b>faces</b>=&quot;<var>ew</var>&quot;}
 
5505
34    <i>ti</i>[&quot;<var>B</var>&quot;] = {&quot;<b>it_blocker</b>&quot;, &quot;<var>wall#</var>&quot;}
 
5506
35    <i>ti</i>[&quot;<var>S</var>&quot;] = {&quot;<b>st_switch</b>&quot;, <b>target</b>={&quot;<var>door</var>&quot;, &quot;<var>wall#*</var>&quot;}}
 
5507
36
 
5508
37    <i>ti</i>[&quot;<var>v</var>&quot;] = {&quot;<b>it_vortex</b>&quot;, &quot;<var>left</var>&quot;, <b>destination</b>=&quot;<var>right</var>&quot;}
 
5509
38    <i>ti</i>[&quot;<var>V</var>&quot;] = {&quot;<b>it_vortex</b>&quot;, &quot;<var>right</var>&quot;, <b>destination</b>=&quot;<var>left</var>&quot;}
 
5510
39
 
5511
40    <i>ti</i>[&quot;<var>O</var>&quot;] = {&quot;<b>st_turnstile</b>&quot;, <b>flavor</b>=&quot;<var>red</var>&quot;}
 
5512
41    <i>ti</i>[&quot;<var>E</var>&quot;] = {&quot;<b>st_turnstilearm</b>&quot;, <b>orientation</b>=<var>EAST</var>}
 
5513
42    <i>ti</i>[&quot;<var>N</var>&quot;] = <i>ti</i>[&quot;<var>.</var>&quot;] .. {&quot;<b>st_turnstilearm_n</b>&quot;}
 
5514
43
 
5515
44    <i>ti</i>[&quot;<var>+</var>&quot;] = {&quot;<b>fl_samba</b>&quot;, <b>checkerboard</b>=<var>0</var>} .. ti({&quot;<b>fl_wood</b>&quot;, <b>checkerboard</b>=<var>1</var>})
 
5516
45
 
5517
46    <i>ti</i>[&quot;<var>1</var>&quot;] = {&quot;#<b>ac_marble</b>&quot;}
 
5518
47
 
5519
48    if <i>wo</i>[&quot;<b>IsDifficult</b>&quot;] then
 
5520
49        <i>ti</i>[&quot;<var>=</var>&quot;] = <i>ti</i>[&quot;<var>~</var>&quot;]
 
5521
50    else
 
5522
51        <i>ti</i>[&quot;<var>=</var>&quot;] = <i>ti</i>[&quot;<var>~</var>&quot;] .. {&quot;<b>it_strip_ew</b>&quot;}
 
5523
52    end
 
5524
53
 
5525
54    w, h = <i>wo</i>(<i>ti</i>, &quot;<var> </var>&quot;, {
 
5526
55        &quot;<var>####################</var>&quot;,
 
5527
56        &quot;<var>#      ....++++++~ #</var>&quot;,
 
5528
57        &quot;<var>L   PM ..N.++~~~~OE#</var>&quot;,
 
5529
58        &quot;<var>#######  T~++++++. #</var>&quot;,
 
5530
59        &quot;<var>#     ^   ~++++++# #</var>&quot;,
 
5531
60        &quot;<var>#         =++++++X X</var>&quot;,
 
5532
61        &quot;<var>#         ~++++++# #</var>&quot;,
 
5533
62        &quot;<var>#~~~~~~~~~~~~~+++X X</var>&quot;,
 
5534
63        &quot;<var>#    ~   B   ~+++###</var>&quot;,
 
5535
64        &quot;<var>F    ~   B   ~+++++#</var>&quot;,
 
5536
65        &quot;<var># 1  ~   B   #+++++#</var>&quot;,
 
5537
66        &quot;<var>S   v~V  B   D+++++#</var>&quot;,
 
5538
67        &quot;<var>####################</var>&quot;
 
5539
68    })
 
5540
69
 
5541
70    <i>wo</i>:<b>shuffleOxyd</b>()
 
5542
71
 
5543
72     ]]&gt;&lt;/el:luamain&gt;
 
5544
73        &lt;el:i18n&gt;
 
5545
74          &lt;el:string el:key=&quot;title&quot;&gt;
 
5546
75            &lt;el:english el:translate=&quot;false&quot;/&gt;
 
5547
76          &lt;/el:string&gt;
 
5548
77        &lt;/el:i18n&gt;
 
5549
78      &lt;/el:protected&gt;
 
5550
79    &lt;/el:level&gt;
 
5551
</pre></td></tr></table>
 
5552
 
 
5553
<p>The resulting level looks like this in the game
 
5554
</p>
 
5555
<img src="images/ralD006_1.png" alt="images/ralD006_1">
 
5556
 
 
5557
<p>Let us now analyse the code line by line.
 
5558
</p>
 
5559
<p>Lines 1 to 14 are the XML metadata of the level as described in
 
5560
<a href="#Level-Basics">Level Basics</a>. The only line worth mentioning is
 
5561
</p><table><tr><td>&nbsp;</td><td><pre class="example">10         &lt;el:compatibility el:enigma=&quot;<var>1.10</var>&quot;/&gt;
 
5562
</pre></td></tr></table>
 
5563
 
 
5564
<p>You need to declare the level to be compatible to Enigma 1.10 or higher for
 
5565
the new API 2 as described in this reference manual. A value less than 1.10
 
5566
indicates compatibility to a previous Enigma release that did use the old API 1,
 
5567
which should not be mixed up with the new API 2.
 
5568
</p>
 
5569
<p>The Lua part starts with line 15:
 
5570
</p><table><tr><td>&nbsp;</td><td><pre class="example">16    <i>wo</i>[&quot;<b>ConserveLevel</b>&quot;] = <var>true</var>
 
5571
</pre></td></tr></table>
 
5572
 
 
5573
<p>Like most levels it starts with setting <a href="#Global-Attributes">Global Attributes</a>. The handle of
 
5574
our world is &lsquo;<samp>wo</samp>&rsquo;. This object reference is preset
 
5575
(see section <a href="#World-as-an-Object">World as an Object</a>). Concerning Lua it is an &lsquo;<samp>userdata</samp>&rsquo;,
 
5576
but most of its usage syntax is identical to that of Lua tables. Thus we access
 
5577
an attribute by providing the desired attribute name in square brackets. As we
 
5578
give a literal attribute name, we have to put it in double quotes &lsquo;<samp>&quot;</samp>&rsquo;. In
 
5579
total this line requests the world to resurrect a killed actor as long as there
 
5580
are enough extra lifes to conserve the running level (see section <a href="#ConserveLevel">ConserveLevel</a>).
 
5581
In fact &lsquo;<samp>true</samp>&rsquo; is the default value. So we could have left this line out.
 
5582
But remember it is a demo level.
 
5583
</p>
 
5584
<p>The second part of a level are the tile definitions as explained in
 
5585
<a href="#World_0027s-Shape-and-Coordinates">World&rsquo;s Shape and Coordinates</a>. Let us start with the most simple ones:
 
5586
</p><table><tr><td>&nbsp;</td><td><pre class="example">18    <i>ti</i>[&quot;<var> </var>&quot;] = {&quot;<b>fl_samba</b>&quot;}
 
5587
19    <i>ti</i>[&quot;<var>.</var>&quot;] = {&quot;<b>fl_abyss</b>&quot;}
 
5588
20    <i>ti</i>[&quot;<var>~</var>&quot;] = {&quot;<b>fl_water</b>&quot;}
 
5589
21    <i>ti</i>[&quot;<var>#</var>&quot;] = {&quot;<b>st_granite</b>&quot;}
 
5590
22    <i>ti</i>[&quot;<var>X</var>&quot;] = {&quot;<b>st_oxyd</b>&quot;}
 
5591
</pre></td></tr></table>
 
5592
 
 
5593
<p>Again we use a handle &lsquo;<samp>ti</samp>&rsquo; which is a preset object reference for the
 
5594
tile definition repository. Like the world it is a Lua &lsquo;<samp>userdata</samp>&rsquo;. And
 
5595
we can access it like the world by giving the desired index in square brackets.
 
5596
These indices are free to your choice. They have to be of a common character length
 
5597
if they are referenced in the world map below. For a small level one character
 
5598
keys are sufficient. You can use any ASCII character that Lua is aware of. That
 
5599
means upper and lower case characters &lsquo;<samp>A-Z,a-z</samp>&rsquo;, the numbers and special
 
5600
characters besides backslash &lsquo;<samp>\</samp>&rsquo; and double quote &lsquo;<samp>&quot;</samp>&rsquo;.
 
5601
</p>
 
5602
<p>The assigned object definition are given as Lua anonymous tables, the curly braces,
 
5603
containing in the most simple case just the desired <a href="#Object-Kind">Object Kind</a>. As it
 
5604
is again a literal string, it has to be quoted. Without any further specification
 
5605
the objects are taken in their default configuration as described in
 
5606
<a href="#Floor-Objects">Floor Objects</a> and following chapters.
 
5607
</p>
 
5608
<table><tr><td>&nbsp;</td><td><pre class="example">24    <i>ti</i>[&quot;<var>L</var>&quot;] = {&quot;<b>st_laser</b>&quot;, <b>orientation</b>=<var>EAST</var>, <b>state</b>=<var>ON</var>}
 
5609
25    <i>ti</i>[&quot;<var>M</var>&quot;] = {&quot;<b>st_lightpassenger</b>&quot;, <b>interval</b>=<var>0.04</var>}
 
5610
</pre></td></tr></table>
 
5611
 
 
5612
<p>These two lines define objects with custom configuration. The <a href="#st_005flaser">st_laser</a>
 
5613
should send its beam to the east and should start being switched on. The
 
5614
<a href="#st_005flightpassenger">st_lightpassenger</a> should move a little bit faster than usually. Both
 
5615
times we just have to add comma separated additional attributes. The attribute
 
5616
names are not quoted as they are followed by an equal &lsquo;<samp>=</samp>&rsquo; sign.
 
5617
</p>
 
5618
<table><tr><td>&nbsp;</td><td><pre class="example">27    <i>ti</i>[&quot;<var>P</var>&quot;] = {&quot;<b>st_polarswitch</b>&quot;, <b>name</b>=&quot;<var>polar</var>&quot;}
 
5619
28    <i>ti</i>[&quot;<var>T</var>&quot;] = {&quot;<b>it_trigger</b>&quot;, <b>target</b>=&quot;<var>polar</var>&quot;}
 
5620
</pre></td></tr></table>
 
5621
 
 
5622
<p>An <a href="#st_005fpolarswitch">st_polarswitch</a> named for reference usage (see section <a href="#Object-Naming">Object Naming</a>).
 
5623
The <a href="#it_005ftrigger">it_trigger</a> sets up a <a href="#Target-_002d-Action">Target - Action</a>, the target being our
 
5624
polarswitch. The action attribute is omitted. It defaults to the message
 
5625
&lsquo;<samp>toggle</samp>&rsquo;. Thus any actor or stone on top of the trigger makes the
 
5626
polarswitch transparent, but switches it back to opacity when leaving
 
5627
the trigger.
 
5628
</p>
 
5629
<table><tr><td>&nbsp;</td><td><pre class="example">30    <i>ti</i>[&quot;<var>^</var>&quot;] = {&quot;<b>st_boulder</b>&quot;, &quot;<var>boulder</var>&quot;, <b>orientation</b>=<var>NORTH</var>}
 
5630
31    <i>ti</i>[&quot;<var>F</var>&quot;] = {&quot;<b>st_fourswitch</b>&quot;, <b>target</b>=&quot;<var>boulder</var>&quot;, <b>action</b>=&quot;<var>orientate</var>&quot;}
 
5631
</pre></td></tr></table>
 
5632
 
 
5633
<p>Another pair of objects that are coupled by <a href="#Target-_002d-Action">Target - Action</a>. The
 
5634
<a href="#st_005fboulder">st_boulder</a> starts trying to move to north. This time we name the object
 
5635
just by giving the name as the second comma separated string. We omitted the
 
5636
attribute identifier &lsquo;<samp>name =</samp>&rsquo;. This is a shortcut for this most common
 
5637
attribute which requires the name to be given as the second value directly
 
5638
after the objects kind.
 
5639
</p>
 
5640
<p>The <a href="#st_005ffourswitch">st_fourswitch</a> references the boulder as its target. We need to give
 
5641
the action as well, as we want to make use of a special action that directly
 
5642
steers the boulder according to the fourswitch orientation.
 
5643
</p>
 
5644
<table><tr><td>&nbsp;</td><td><pre class="example">33    <i>ti</i>[&quot;<var>D</var>&quot;] = {&quot;<b>st_door_d</b>&quot;, &quot;<var>door</var>&quot;, <b>faces</b>=&quot;<var>ew</var>&quot;}
 
5645
34    <i>ti</i>[&quot;<var>B</var>&quot;] = {&quot;<b>it_blocker</b>&quot;, &quot;<var>wall#</var>&quot;}
 
5646
35    <i>ti</i>[&quot;<var>S</var>&quot;] = {&quot;<b>st_switch</b>&quot;, <b>target</b>={&quot;<var>door</var>&quot;, &quot;<var>wall#*</var>&quot;}}
 
5647
</pre></td></tr></table>
 
5648
 
 
5649
<p>And another even more complex <a href="#Target-_002d-Action">Target - Action</a>. We want a single
 
5650
<a href="#st_005fswitch">st_switch</a> to toggle a <a href="#st_005fdoor">st_door</a> as well as set of <a href="#it_005fblocker">it_blocker</a>s
 
5651
at the same time. The gaming idea is that neither with switch on nor with switch
 
5652
off the marble can pass both obstacles. The gamer needs to steer the boulder
 
5653
through the blocker wall to pass these obstacles.
 
5654
</p>
 
5655
<p>The setup of the door is simple. We just need to name it to be able to reference
 
5656
it later on. We want to use several blocker objects and we need to name each
 
5657
for reference purposes. We do this by appending a hash sign &lsquo;<samp>#</samp>&rsquo; to its
 
5658
name as described in <a href="#Object-Naming">Object Naming</a>. Every blocker gets a unique name.
 
5659
The switch needs to list all these objects as its targets. This is done by
 
5660
an embedded anonymous table given by the curly braces and comma separated
 
5661
values. The first one is our door&rsquo;s name, the second one is a wildcarded string
 
5662
that describes all our blocker objects. The asterisk stands for any suffix
 
5663
that may have been added behind the hash in the process of autonaming of our
 
5664
blockers.
 
5665
</p>
 
5666
<table><tr><td>&nbsp;</td><td><pre class="example">37    <i>ti</i>[&quot;<var>v</var>&quot;] = {&quot;<b>it_vortex</b>&quot;, &quot;<var>left</var>&quot;, <b>destination</b>=&quot;<var>right</var>&quot;}
 
5667
38    <i>ti</i>[&quot;<var>V</var>&quot;] = {&quot;<b>it_vortex</b>&quot;, &quot;<var>right</var>&quot;, <b>destination</b>=&quot;<var>left</var>&quot;}
 
5668
</pre></td></tr></table>
 
5669
 
 
5670
<p>We want to use two <a href="#it_005fvortex">it_vortex</a> that are connected to each other allowing
 
5671
the marble to warp into both directions. We set up both vortices with a unique
 
5672
name and add the attribute &lsquo;<samp>destination</samp>&rsquo; referencing the other vortex&rsquo; name.
 
5673
</p>
 
5674
<p>Note that it is no problem to reference the right vortex in line 37 while it
 
5675
is named later on in line 38. We are still just defining tiles and not creating
 
5676
any objects at all.
 
5677
</p>
 
5678
<table><tr><td>&nbsp;</td><td><pre class="example">40    <i>ti</i>[&quot;<var>O</var>&quot;] = {&quot;<b>st_turnstile</b>&quot;, <b>flavor</b>=&quot;<var>red</var>&quot;}
 
5679
41    <i>ti</i>[&quot;<var>E</var>&quot;] = {&quot;<b>st_turnstilearm</b>&quot;, <b>orientation</b>=<var>EAST</var>}
 
5680
42    <i>ti</i>[&quot;<var>N</var>&quot;] = <i>ti</i>[&quot;<var>.</var>&quot;] .. {&quot;<b>st_turnstilearm_n</b>&quot;}
 
5681
</pre></td></tr></table>
 
5682
 
 
5683
<p>Another object group is an <a href="#st_005fturnstile">st_turnstile</a> cluster with one arm disconnected.
 
5684
The first two definitions are straight forward. But in line 42 we precede the
 
5685
arm&rsquo;s definition by another tile reference. It is the abyss tile defined in
 
5686
line 19. By concatenation, the two dots <b>..</b>, of a tile and an object
 
5687
definition we can define a new tile that is composed of both objects. In this
 
5688
case we define a turnstile arm on top of an abyss floor.
 
5689
</p>
 
5690
<p>You may be wondering why we did not define floors for the other stone and item
 
5691
tiles. We make use of the tile definition in line 18 that we will declare
 
5692
later as the default floor for our level. Thus any tile declaration that does
 
5693
not provide its own floor will set this default floor.
 
5694
</p>
 
5695
<table><tr><td>&nbsp;</td><td><pre class="example">44    <i>ti</i>[&quot;<var>+</var>&quot;] = {&quot;<b>fl_samba</b>&quot;, <b>checkerboard</b>=<var>0</var>} .. ti({&quot;<b>fl_wood</b>&quot;, <b>checkerboard</b>=<var>1</var>})
 
5696
</pre></td></tr></table>
 
5697
 
 
5698
<p>Just for fun we want to provide a checkerboard floor on the right side of our
 
5699
level. This can be done by usage of the <a href="#checkerboard">checkerboard</a> attribute. Again
 
5700
we concatenate two object definitions for a single tile. Both are floors. That
 
5701
means for each grid position we try to set both floor types, but just one meets
 
5702
the checkerboard condition and will be set.
 
5703
</p>
 
5704
<p>Please notice that we did convert one the floor object definitions to a tile
 
5705
definition by the function call &lsquo;<samp>ti()</samp>&rsquo;. This is necessary as Lua does not
 
5706
know how to concatenate two anonymous tables. One argument of the concatenation
 
5707
has to be a tile.
 
5708
</p>
 
5709
<table><tr><td>&nbsp;</td><td><pre class="example">46    <i>ti</i>[&quot;<var>1</var>&quot;] = {&quot;#<b>ac_marble</b>&quot;}
 
5710
</pre></td></tr></table>
 
5711
 
 
5712
<p>Finally we do need our marble. Unlike other objects it can be positioned
 
5713
anywhere within a grid. The most common position is the center of the grid.
 
5714
This is simply done by preceding the actor&rsquo;s kind by a hash sign &lsquo;<samp>#</samp>&rsquo;.
 
5715
</p>
 
5716
<table><tr><td>&nbsp;</td><td><pre class="example">48    if <i>wo</i>[&quot;<b>IsDifficult</b>&quot;] then
 
5717
49        <i>ti</i>[&quot;<var>=</var>&quot;] = <i>ti</i>[&quot;<var>~</var>&quot;]
 
5718
50    else
 
5719
51        <i>ti</i>[&quot;<var>=</var>&quot;] = <i>ti</i>[&quot;<var>~</var>&quot;] .. {&quot;<b>it_strip_ew</b>&quot;}
 
5720
52    end
 
5721
</pre></td></tr></table>
 
5722
 
 
5723
<p>We encourage every level author to provide an easy mode for the levels. This
 
5724
is an example how to define mode dependent tiles. Like in line 16 we access
 
5725
a world attribute. But this time it is a read access of <a href="#IsDifficult">IsDifficult</a>.
 
5726
In easy mode we want an <a href="#it_005fstrip">it_strip</a> on top of the water floor that allows the
 
5727
marble to pass and press the trigger. In difficult mode there should be
 
5728
no passage. Thus the special tile is identical to the water tile defined in
 
5729
line 20.
 
5730
</p>
 
5731
<table><tr><td>&nbsp;</td><td><pre class="example">54    w, h = <i>wo</i>(<i>ti</i>, &quot;<var> </var>&quot;, {
 
5732
55        &quot;<var>####################</var>&quot;,
 
5733
56        &quot;<var>#      ....++++++~ #</var>&quot;,
 
5734
57        &quot;<var>L   PM ..N.++~~~~OE#</var>&quot;,
 
5735
58        &quot;<var>#######  T~++++++. #</var>&quot;,
 
5736
59        &quot;<var>#     ^   ~++++++# #</var>&quot;,
 
5737
60        &quot;<var>#         =++++++X X</var>&quot;,
 
5738
61        &quot;<var>#         ~++++++# #</var>&quot;,
 
5739
62        &quot;<var>#~~~~~~~~~~~~~+++X X</var>&quot;,
 
5740
63        &quot;<var>#    ~   B   ~+++###</var>&quot;,
 
5741
64        &quot;<var>F    ~   B   ~+++++#</var>&quot;,
 
5742
65        &quot;<var># 1  ~   B   #+++++#</var>&quot;,
 
5743
66        &quot;<var>S   v~V  B   D+++++#</var>&quot;,
 
5744
67        &quot;<var>####################</var>&quot;
 
5745
68    })
 
5746
</pre></td></tr></table>
 
5747
 
 
5748
<p>After all tiles have been defined we can create our world simply by a map that
 
5749
uses our tile keys. The first argument is our handle &lsquo;<samp>ti</samp>&rsquo;, that defines
 
5750
how the keys should be resolved. The second argument is the key of our default
 
5751
floor. The third argument is the map as a table of strings, one for every line.
 
5752
</p>
 
5753
<p>The world initialization returns the width and height of our world which are
 
5754
calculated by the map&rsquo;s size.
 
5755
</p>
 
5756
<table><tr><td>&nbsp;</td><td><pre class="example">70    <i>wo</i>:<b>shuffleOxyd</b>()
 
5757
</pre></td></tr></table>
 
5758
 
 
5759
<p>After the world is created and all objects are set, we can do some final
 
5760
postprocessing before the level starts to run. The most common task is the
 
5761
shuffling of the oxyds, which is just a method call of <a href="#shuffleOxyd">shuffleOxyd</a> to
 
5762
our mighty world object.
 
5763
</p>
 
5764
<hr size="6">
 
5765
<a name="Colored-Turnstiles"></a>
 
5766
<table cellpadding="1" cellspacing="1" border="0">
 
5767
<tr><td valign="middle" align="left">[<a href="#Basic-Example" title="Previous section in reading order"> &lt; </a>]</td>
 
5768
<td valign="middle" align="left">[<a href="#API-2-Overview" title="Next section in reading order"> &gt; </a>]</td>
 
5769
<td valign="middle" align="left"> &nbsp; </td>
 
5770
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
5771
<td valign="middle" align="left">[<a href="#Basic-Lua-Examples" title="Up section"> Up </a>]</td>
 
5772
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
5773
<td valign="middle" align="left"> &nbsp; </td>
 
5774
<td valign="middle" align="left"> &nbsp; </td>
 
5775
<td valign="middle" align="left"> &nbsp; </td>
 
5776
<td valign="middle" align="left"> &nbsp; </td>
 
5777
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
5778
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
5779
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
5780
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
5781
</tr></table>
 
5782
<a name="Colored-Turnstiles-1"></a>
 
5783
<h3 class="subsection">5.1.2 Colored Turnstiles</h3>
 
5784
 
 
5785
<p>As this level is part of the Enigma levelpacks we recommend that you play
 
5786
the level first to get familiar with the used objects and their behaviour.
 
5787
</p>
 
5788
<p>Now let us look at the essential Lua source code part of the level to understand
 
5789
how such an idea can be realized with the new API
 
5790
</p>
 
5791
<table><tr><td>&nbsp;</td><td><pre class="example"><i>ti</i>[&quot;<var> </var>&quot;] = {&quot;<b>fl_sahara</b>&quot;}
 
5792
<i>ti</i>[&quot;<var>#</var>&quot;] = {&quot;<b>st_purplegray</b>&quot;}
 
5793
<i>ti</i>[&quot;<var>@</var>&quot;] = {&quot;#<b>ac_marble_black</b>&quot;, &quot;<var>marble_black</var>&quot;}
 
5794
 
 
5795
<i>ti</i>[&quot;<var>N</var>&quot;] = {&quot;<b>st_turnstilearm_n</b>&quot;}
 
5796
<i>ti</i>[&quot;<var>S</var>&quot;] = {&quot;<b>st_turnstilearm_s</b>&quot;}
 
5797
<i>ti</i>[&quot;<var>E</var>&quot;] = {&quot;<b>st_turnstilearm_e</b>&quot;}
 
5798
<i>ti</i>[&quot;<var>W</var>&quot;] = {&quot;<b>st_turnstilearm_w</b>&quot;}
 
5799
<i>ti</i>[&quot;<var>R</var>&quot;] = {&quot;<b>st_turnstile</b>&quot;, <b>action</b> = {&quot;<var>open</var>&quot;, &quot;<var>close</var>&quot;}, <b>target</b> = {&quot;<var>red</var>#*&quot;, &quot;<var>green</var>#*&quot;}}
 
5800
<i>ti</i>[&quot;<var>G</var>&quot;] = {&quot;<b>st_turnstile</b>&quot;, <b>action</b> = {&quot;<var>close</var>&quot;, &quot;<var>open</var>&quot;}, <b>target</b> = {&quot;<var>red</var>#*&quot;, &quot;<var>green</var>#*&quot;},
 
5801
                           <b>flavor</b> = &quot;<var>green</var>&quot;}
 
5802
<i>ti</i>[&quot;<var>r</var>&quot;] = {&quot;<b>it_blocker</b>&quot;, &quot;<var>red</var>#&quot;} .. <i>ti</i>({&quot;<b>fl_red</b>&quot;})
 
5803
<i>ti</i>[&quot;<var>g</var>&quot;] = {&quot;<b>it_blocker</b>&quot;, &quot;<var>green</var>#&quot;} .. <i>ti</i>({&quot;<b>fl_lawn</b>&quot;})
 
5804
 
 
5805
<i>ti</i>[&quot;<var>O</var>&quot;] = {&quot;<b>st_oxyd</b>&quot;, <b>flavor</b> = &quot;<var>d</var>&quot;, <b>oxydcolor</b> = <var>OXYD_GREEN</var>}
 
5806
<i>ti</i>[&quot;<var>o</var>&quot;] = {&quot;<b>st_oxyd</b>&quot;, <b>flavor</b> = &quot;<var>d</var>&quot;, <b>oxydcolor</b> = <var>OXYD_RED</var>}
 
5807
 
 
5808
<var>w</var>, <var>h</var> = <i>wo</i>(<i>ti</i>, &quot;<var> </var>&quot;, {
 
5809
 -- 01234567890123456789
 
5810
   &quot;<var>#O#####O############</var>&quot;,
 
5811
   &quot;<var>#   r N g N rO##O#O#</var>&quot;,
 
5812
   &quot;<var>#WRE#WGE# R ####g#r#</var>&quot;,
 
5813
   &quot;<var>#   r N r S  r N   #</var>&quot;,
 
5814
   &quot;<var>#g#g#WG #g##r# REr##</var>&quot;,
 
5815
   &quot;<var># # N S r    g S  gO</var>&quot;,
 
5816
   &quot;<var>#@g RE#g#gWGE###g###</var>&quot;,
 
5817
   &quot;<var># # S   g    r N  ro</var>&quot;,
 
5818
   &quot;<var>#r#r#WGE#r##g#WGEg##</var>&quot;,
 
5819
   &quot;<var># N r S g N  r     #</var>&quot;,
 
5820
   &quot;<var>#WGE# RE# RE####r#g#</var>&quot;,
 
5821
   &quot;<var>#   g S r S go##o#o#</var>&quot;,
 
5822
   &quot;<var>#o#####o############</var>&quot;
 
5823
})
 
5824
 
 
5825
<i>wo</i>:<b>shuffleOxyd</b>()
 
5826
</pre></td></tr></table>
 
5827
 
 
5828
<p>There are just four tile definitions that do all the dynamic actions. Let us
 
5829
look first at the blocker item definitions:
 
5830
</p>
 
5831
<table><tr><td>&nbsp;</td><td><pre class="example"><i>ti</i>[&quot;<var>r</var>&quot;] = {&quot;<b>it_blocker</b>&quot;, &quot;<var>red</var>#&quot;} .. <i>ti</i>({&quot;<b>fl-red</b>&quot;})
 
5832
<i>ti</i>[&quot;<var>g</var>&quot;] = {&quot;<b>it_blocker</b>&quot;, &quot;<var>green</var>#&quot;} .. <i>ti</i>({&quot;<b>fl-leaves</b>&quot;})
 
5833
</pre></td></tr></table>
 
5834
<p>All blockers on red floors are autonamed with a name being composed of the
 
5835
prefix &lsquo;<samp>red#</samp>&rsquo; and a unique random number being added by the engine as
 
5836
explained in <a href="#Object-Naming">Object Naming</a>. This allows us to address all these blockers
 
5837
later on.
 
5838
</p>
 
5839
<table><tr><td>&nbsp;</td><td><pre class="example"><i>ti</i>[&quot;<var>R</var>&quot;] = {&quot;<b>st_turnstile</b>&quot;, <b>action</b> = {&quot;<var>open</var>&quot;, &quot;<var>close</var>&quot;}, <b>target</b> = {&quot;<var>red</var>#*&quot;, &quot;<var>green</var>#*&quot;}}
 
5840
<i>ti</i>[&quot;<var>G</var>&quot;] = {&quot;<b>st_turnstile</b>&quot;, <b>action</b> = {&quot;<var>close</var>&quot;, &quot;<var>open</var>&quot;}, <b>target</b> = {&quot;<var>red</var>#*&quot;, &quot;<var>green</var>#*&quot;},
 
5841
                           <b>flavor</b> = &quot;<var>green</var>&quot;}
 
5842
</pre></td></tr></table>
 
5843
<p>Whenever the marble hits and turns an <a href="#st_005fturnstile">st_turnstile</a> it performs its actions
 
5844
on the targets. Here the author makes clever usage of multitargets and
 
5845
multiactions as described in <a href="#Target-_002d-Action">Target - Action</a>. On every turn of a red
 
5846
turnstile all objects named &lsquo;<samp>red#*</samp>&rsquo;, that are all our blockers on a red
 
5847
floor, will be sent a message &lsquo;<samp>open</samp>&rsquo;, whereas all blocks on a green floor,
 
5848
the second target group, receives the second action message &lsquo;<samp>close</samp>&rsquo;. It is
 
5849
essential to choose the &lsquo;<samp>open</samp>&rsquo;, &lsquo;<samp>close</samp>&rsquo; messages instead of
 
5850
&lsquo;<samp>toggle</samp>&rsquo;, as more than one red turnstile may be turned in sequence, but
 
5851
just the first red turn should &quot;toggle&quot; all blockers. The next toggling should
 
5852
occur on the first green turn following thereafter.
 
5853
</p>
 
5854
<p>Hope you got the basic idea of the new API. You may well start with you first
 
5855
level experiments. But you should return and read the following chapters with
 
5856
overview and advanced examples to write even more fancy levels.
 
5857
</p>
 
5858
 
 
5859
<hr size="6">
 
5860
<a name="API-2-Overview"></a>
 
5861
<table cellpadding="1" cellspacing="1" border="0">
 
5862
<tr><td valign="middle" align="left">[<a href="#Colored-Turnstiles" title="Previous section in reading order"> &lt; </a>]</td>
 
5863
<td valign="middle" align="left">[<a href="#Types-Overview" title="Next section in reading order"> &gt; </a>]</td>
 
5864
<td valign="middle" align="left"> &nbsp; </td>
 
5865
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
5866
<td valign="middle" align="left">[<a href="#Lua-API" title="Up section"> Up </a>]</td>
 
5867
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
5868
<td valign="middle" align="left"> &nbsp; </td>
 
5869
<td valign="middle" align="left"> &nbsp; </td>
 
5870
<td valign="middle" align="left"> &nbsp; </td>
 
5871
<td valign="middle" align="left"> &nbsp; </td>
 
5872
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
5873
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
5874
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
5875
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
5876
</tr></table>
 
5877
<a name="API-2-Overview-1"></a>
 
5878
<h2 class="section">5.2 API 2 Overview</h2>
 
5879
 
 
5880
<p>Having analysed a first level it is time get an overview of the API 2
 
5881
capabilities. Let us take a task driven approach by listing the different
 
5882
possibilities and use cases by example.
 
5883
</p>
 
5884
<table class="menu" border="0" cellspacing="0">
 
5885
<tr><td align="left" valign="top"><a href="#Types-Overview">5.2.1 Types Overview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5886
</td></tr>
 
5887
<tr><td align="left" valign="top"><a href="#Position-Tasks">5.2.2 Position Tasks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5888
</td></tr>
 
5889
<tr><td align="left" valign="top"><a href="#Attribute-Tasks">5.2.3 Attribute Tasks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5890
</td></tr>
 
5891
<tr><td align="left" valign="top"><a href="#Object-Tasks">5.2.4 Object Tasks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5892
</td></tr>
 
5893
<tr><td align="left" valign="top"><a href="#Group-Tasks">5.2.5 Group Tasks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5894
</td></tr>
 
5895
<tr><td align="left" valign="top"><a href="#Tiles-and-World-Tasks">5.2.6 Tiles and World Tasks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5896
</td></tr>
 
5897
<tr><td align="left" valign="top"><a href="#Named-Positions-Tasks">5.2.7 Named Positions Tasks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
5898
</td></tr>
 
5899
</table>
 
5900
 
 
5901
 
 
5902
<hr size="6">
 
5903
<a name="Types-Overview"></a>
 
5904
<table cellpadding="1" cellspacing="1" border="0">
 
5905
<tr><td valign="middle" align="left">[<a href="#API-2-Overview" title="Previous section in reading order"> &lt; </a>]</td>
 
5906
<td valign="middle" align="left">[<a href="#Position-Tasks" title="Next section in reading order"> &gt; </a>]</td>
 
5907
<td valign="middle" align="left"> &nbsp; </td>
 
5908
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
5909
<td valign="middle" align="left">[<a href="#API-2-Overview" title="Up section"> Up </a>]</td>
 
5910
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
5911
<td valign="middle" align="left"> &nbsp; </td>
 
5912
<td valign="middle" align="left"> &nbsp; </td>
 
5913
<td valign="middle" align="left"> &nbsp; </td>
 
5914
<td valign="middle" align="left"> &nbsp; </td>
 
5915
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
5916
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
5917
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
5918
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
5919
</tr></table>
 
5920
<a name="Types-Overview-1"></a>
 
5921
<h3 class="subsection">5.2.1 Types Overview</h3>
 
5922
 
 
5923
<p>But first we need to introduce you to the special Enigma value types besides
 
5924
the standard Lua types &lsquo;<samp>nil</samp>&rsquo;, &lsquo;<samp>boolean</samp>&rsquo;, &lsquo;<samp>string</samp>&rsquo;,
 
5925
&lsquo;<samp>function</samp>&rsquo; and &lsquo;<samp>table</samp>&rsquo;:
 
5926
</p>
 
5927
<dl compact="compact">
 
5928
<dt> <b>Types:</b></dt>
 
5929
<dd><dl compact="compact">
 
5930
<dt> <b>position:</b>&nbsp;&nbsp;See section <a href="#Position">Position</a></dt>
 
5931
<dd><p>A position within the world that can be described by an x and y coordinate.
 
5932
</p></dd>
 
5933
<dt> <b>positions:</b> <i>preset variable:</i> <code><b>po</b></code>; &nbsp;&nbsp;See section <a href="#Positions-Repository">Positions Repository</a></dt>
 
5934
<dd><p>The singleton type of the repository of all named positions.
 
5935
</p></dd>
 
5936
<dt> <b>object:</b>&nbsp;&nbsp;See section <a href="#Object">Object</a></dt>
 
5937
<dd><p>An Enigma object like a stone, item, floor, other. Any object is a position, too.
 
5938
</p></dd>
 
5939
<dt> <b>group:</b>&nbsp;&nbsp;See section <a href="#Group">Group</a></dt>
 
5940
<dd><p>A list of objects.
 
5941
</p></dd>
 
5942
<dt> <b>namedobjects:</b> <i>preset variable:</i> <code><b>no</b></code>; &nbsp;&nbsp;See section <a href="#NamedObjects">NamedObjects</a></dt>
 
5943
<dd><p>The singleton type of the repository of all named objects.
 
5944
</p></dd>
 
5945
<dt> <b>default:</b> <i>preset variable:</i> <code><b>DEFAULT</b></code>; &nbsp;&nbsp;See section <a href="#Object-Attributes">Object Attributes</a></dt>
 
5946
<dd><p>The singleton type of default values that can be used instead of Lua&rsquo;s &lsquo;<samp>nil</samp>&rsquo;
 
5947
in anonymous table tile definitions.
 
5948
</p></dd>
 
5949
<dt> <b>tile:</b>&nbsp;&nbsp;See section <a href="#Tile-and-Object-Declaration">Tile and Object Declaration</a></dt>
 
5950
<dd><p>A description of one or several objects for a common grid position (floor, item,
 
5951
stone, actor)
 
5952
</p></dd>
 
5953
<dt> <b>tiles:</b> <i>preset variable:</i> <code><b>ti</b></code>; &nbsp;&nbsp;See section <a href="#Tiles-Repository">Tiles Repository</a></dt>
 
5954
<dd><p>The singleton type of the repository of all tile instances.
 
5955
</p></dd>
 
5956
<dt> <b>world:</b> <i>preset variable:</i> <code><b>wo</b></code>; &nbsp;&nbsp;See section <a href="#World">World</a></dt>
 
5957
<dd><p>The singleton type of the world that contains all objects.
 
5958
</p></dd>
 
5959
<dt> <b>position list:</b>&nbsp;&nbsp;See section <a href="#Named-Positions">Named Positions</a></dt>
 
5960
<dd><p>A list of positions.
 
5961
</p></dd>
 
5962
</dl>
 
5963
</dd>
 
5964
</dl>
 
5965
 
 
5966
<p>Please note the four handles &lsquo;<samp>po</samp>&rsquo;, &lsquo;<samp>no</samp>&rsquo;, &lsquo;<samp>ti</samp>&rsquo; and &lsquo;<samp>wo</samp>&rsquo;. You
 
5967
have noticed two of them in the previous section <a href="#Basic-Lua-Examples">Basic Lua Examples</a>. These
 
5968
are four variables, that are preset prior the level code gets executed.
 
5969
</p>
 
5970
<p>API 2 uses mainly two character names for frequently used variables and
 
5971
functions to shorten the level code and to make it better readable. Authors
 
5972
should try to use either single characters or names that are three characters or
 
5973
longer for private variable names.
 
5974
</p>
 
5975
<p>For the rest of this section let us assume that &lsquo;<samp>obj</samp>&rsquo; is an object
 
5976
reference of a stone, item or floor, which means that is of type &lsquo;<samp>object</samp>&rsquo;.
 
5977
And let &lsquo;<samp>pos</samp>&rsquo; be a valid variable of type &lsquo;<samp>position</samp>&rsquo;.
 
5978
</p>
 
5979
<hr size="6">
 
5980
<a name="Position-Tasks"></a>
 
5981
<table cellpadding="1" cellspacing="1" border="0">
 
5982
<tr><td valign="middle" align="left">[<a href="#Types-Overview" title="Previous section in reading order"> &lt; </a>]</td>
 
5983
<td valign="middle" align="left">[<a href="#Attribute-Tasks" title="Next section in reading order"> &gt; </a>]</td>
 
5984
<td valign="middle" align="left"> &nbsp; </td>
 
5985
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
5986
<td valign="middle" align="left">[<a href="#API-2-Overview" title="Up section"> Up </a>]</td>
 
5987
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
5988
<td valign="middle" align="left"> &nbsp; </td>
 
5989
<td valign="middle" align="left"> &nbsp; </td>
 
5990
<td valign="middle" align="left"> &nbsp; </td>
 
5991
<td valign="middle" align="left"> &nbsp; </td>
 
5992
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
5993
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
5994
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
5995
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
5996
</tr></table>
 
5997
<a name="Position-Tasks-1"></a>
 
5998
<h3 class="subsection">5.2.2 Position Tasks</h3>
 
5999
 
 
6000
<p>For reference details see section <a href="#Position">Position</a>.
 
6001
</p>
 
6002
<dl compact="compact">
 
6003
<dt> <b>Creating Positions:</b></dt>
 
6004
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>pos</var> = <i>po</i>(<var>7</var>, <var>3</var>)         -- using function &quot;po()&quot; to generate a position object
 
6005
<var>pos</var> = <i>po</i>({<var>7</var>, <var>3</var>})        -- using a table position constant as argument
 
6006
<var>pos</var> = <var>obj</var>              -- every object is a valid position
 
6007
<var>pos</var> = <i>po</i>(<var>12.3</var>, <var>3.7</var>)    -- a position within a grid (for an actor)
 
6008
</pre></td></tr></table>
 
6009
<p>Absolute positions are created by the function &lsquo;<samp>po()</samp>&rsquo;. But the most common
 
6010
way should be the reinterpretation of an object as a position. This lets you
 
6011
set other objects relatively to given ones.
 
6012
</p>
 
6013
</dd>
 
6014
<dt> <b>Position Constants:</b></dt>
 
6015
<dd><table><tr><td>&nbsp;</td><td><pre class="example">{<var>7</var>,<var>3</var>}     -- a valid position for all arguments and operations (see <a href="#Caveats">Caveats</a>)
 
6016
</pre></td></tr></table>
 
6017
<p>Anonymous tables with just two number values can be used in many cases directly as
 
6018
a position constant. In case of errors, e.g. when operators are not well defined
 
6019
like addition of two constants, which results in an attempt of adding two Lua
 
6020
tables, use the function &lsquo;<samp>po()</samp>&rsquo; to convert the constant.
 
6021
</p>
 
6022
</dd>
 
6023
<dt> <b>Coordinate Access:</b></dt>
 
6024
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>x</var>, <var>y</var> = <var>pos</var>.<b>x</b>, <var>pos</var>.<b>y</b>
 
6025
<var>x</var>, <var>y</var> = <var>pos</var>[&quot;<b>x</b>&quot;], pos[&quot;<b>y</b>&quot;]
 
6026
<var>x</var>, <var>y</var> = <var>pos</var>:<b>xy</b>()
 
6027
<var>x</var>, <var>y</var> = <var>obj</var>.<b>x</b>, <var>obj</var>.<b>y</b>
 
6028
<var>x</var>, <var>y</var> = <var>obj</var>:<b>xy</b>()
 
6029
</pre></td></tr></table>
 
6030
<p>The x and y coordinate of a position or object can be read accessed like any
 
6031
object attribute. A position or object method call by &lsquo;<samp>xy()</samp>&rsquo; returns
 
6032
both coordinate values at once. You can not set a position value by coordinate
 
6033
write access. Objects need to be set to a new world position. New positions
 
6034
can be calculated by position arithmetic.
 
6035
</p>
 
6036
</dd>
 
6037
<dt> <b>Position Calculation:</b></dt>
 
6038
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>pos</var> = <var>obj</var> + {<var>2</var>,<var>7</var>}
 
6039
<var>dpos</var> = <var>obj1</var> - <var>obj2</var>
 
6040
<var>dpos2</var> = <var>2</var> * <var>dpos</var>
 
6041
<var>dpos3</var> = <var>dpos</var> / <var>2</var>
 
6042
</pre></td></tr></table>
 
6043
<p>Positions can be added or subtracted to get distance vectors. You can multiply
 
6044
and divide them with any number.
 
6045
</p>
 
6046
</dd>
 
6047
<dt> <b>Center positions for set actors</b></dt>
 
6048
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>pos_centered1</var> = <var>pos</var> + {<var>0.5</var>, <var>0.5</var>}
 
6049
<var>pos_centered2</var> = #<var>pos</var>
 
6050
<var>pos_centered3</var> = #<var>obj</var>
 
6051
</pre></td></tr></table>
 
6052
<p>Especially for positioning of actors you sometimes need the position of the
 
6053
center of a grid. Of course you can get it by addition of a constant position.
 
6054
But the &lsquo;<samp>#</samp>&rsquo; operator applied on a position or an actor does the same in
 
6055
a simpler way.
 
6056
</p>
 
6057
</dd>
 
6058
<dt> <b>Round a position to a grid</b></dt>
 
6059
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>grid_pos</var> = <var>pos</var>:<b>grid</b>()
 
6060
<var>grid_pos</var> = ((<var>pos1</var> - <var>pos2</var>)/<var>2</var>):<b>grid</b>()
 
6061
</pre></td></tr></table>
 
6062
<p>A result of a position calculation needs sometimes to be rounded to integer grid
 
6063
coordinates. This is done by the &lsquo;<samp>grid()</samp>&rsquo; method.
 
6064
</p>
 
6065
</dd>
 
6066
<dt> <b>Position comparison</b></dt>
 
6067
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>pos_centered1</var> == <var>pos_centered2</var>
 
6068
<var>pos_centered1</var> ~= <var>pos_centered2</var>    -- Lua's inequality operator
 
6069
</pre></td></tr></table>
 
6070
<p>Position can be easily compared to equality.
 
6071
</p>
 
6072
</dd>
 
6073
<dt> <b>Position existence</b></dt>
 
6074
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>pos</var>:exists()
 
6075
</pre></td></tr></table>
 
6076
<p>&lsquo;<samp>true</samp>&rsquo; if a position is a valid position of the world. All positions
 
6077
outside of the world return &lsquo;<samp>false</samp>&rsquo;.
 
6078
</p></dd>
 
6079
</dl>
 
6080
 
 
6081
<hr size="6">
 
6082
<a name="Attribute-Tasks"></a>
 
6083
<table cellpadding="1" cellspacing="1" border="0">
 
6084
<tr><td valign="middle" align="left">[<a href="#Position-Tasks" title="Previous section in reading order"> &lt; </a>]</td>
 
6085
<td valign="middle" align="left">[<a href="#Object-Tasks" title="Next section in reading order"> &gt; </a>]</td>
 
6086
<td valign="middle" align="left"> &nbsp; </td>
 
6087
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
6088
<td valign="middle" align="left">[<a href="#API-2-Overview" title="Up section"> Up </a>]</td>
 
6089
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
6090
<td valign="middle" align="left"> &nbsp; </td>
 
6091
<td valign="middle" align="left"> &nbsp; </td>
 
6092
<td valign="middle" align="left"> &nbsp; </td>
 
6093
<td valign="middle" align="left"> &nbsp; </td>
 
6094
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
6095
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
6096
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
6097
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
6098
</tr></table>
 
6099
<a name="Attribute-Tasks-1"></a>
 
6100
<h3 class="subsection">5.2.3 Attribute Tasks</h3>
 
6101
 
 
6102
<p>For reference details see section <a href="#Object">Object</a>.
 
6103
</p>
 
6104
<dl compact="compact">
 
6105
<dt> <b>Single Attribute Setting:</b></dt>
 
6106
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>obj</var>[&quot;<b>destination</b>&quot;] = <i>po</i>(<var>7</var>,<var>3</var>)
 
6107
<i>wo</i>[&quot;<b>Brittleness</b>&quot;] = <var>7</var>
 
6108
</pre></td></tr></table>
 
6109
<p>Object attributes as well as global world attributes can be set like Lua table
 
6110
values. They can take values of special Enigma types like position, object or
 
6111
group.
 
6112
</p>
 
6113
</dd>
 
6114
<dt> <b>Multiple Attribute Setting:</b></dt>
 
6115
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>obj</var>:<b>set</b>({<b>target</b>=<var>mydoor</var>, <b>action</b>=&quot;<b>open</b>&quot;})
 
6116
</pre></td></tr></table>
 
6117
<p>You can set multiple attributes on any object at once with the objects &lsquo;<samp>set()</samp>&rsquo;
 
6118
method. The argument is an anonymous Lua table with the attribute names as keys
 
6119
and assigned values of your choice.
 
6120
</p>
 
6121
</dd>
 
6122
<dt> <b>Requesting Attributes:</b></dt>
 
6123
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>value</var> = <var>obj</var>[&quot;<b>attr_name</b>&quot;]
 
6124
<var>value</var> = <i>wo</i>[&quot;<b>Brittleness</b>&quot;]
 
6125
if <i>wo</i>[&quot;<b>IsDifficult</b>&quot;] then ... end
 
6126
</pre></td></tr></table>
 
6127
<p>Attributes of objects and the world can be read like Lua table key values.
 
6128
</p>
 
6129
</dd>
 
6130
<dt> <b>Reset Attributes:</b></dt>
 
6131
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>obj</var>[&quot;<b>length</b>&quot;] = nil       -- the default length, e.g. &lsquo;<samp>1</samp>&rsquo;
 
6132
<var>obj</var>[&quot;<b>color</b>&quot;]  = nil       -- delete color attribute - no color
 
6133
<var>obj</var>[&quot;<b>length</b>&quot;] = <i>DEFAULT</i>   -- the default length, e.g. &lsquo;<samp>1</samp>&rsquo;
 
6134
</pre></td></tr></table>
 
6135
<p>Any object attribute can be reset to its default value, which is the attribute&rsquo;s
 
6136
&quot;delete&quot; operation, by assigning it the Lua &lsquo;<samp>nil</samp>&rsquo; or the Enigma
 
6137
&lsquo;<samp>DEFAULT</samp>&rsquo; value.
 
6138
</p>
 
6139
</dd>
 
6140
</dl>
 
6141
 
 
6142
<hr size="6">
 
6143
<a name="Object-Tasks"></a>
 
6144
<table cellpadding="1" cellspacing="1" border="0">
 
6145
<tr><td valign="middle" align="left">[<a href="#Attribute-Tasks" title="Previous section in reading order"> &lt; </a>]</td>
 
6146
<td valign="middle" align="left">[<a href="#Group-Tasks" title="Next section in reading order"> &gt; </a>]</td>
 
6147
<td valign="middle" align="left"> &nbsp; </td>
 
6148
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
6149
<td valign="middle" align="left">[<a href="#API-2-Overview" title="Up section"> Up </a>]</td>
 
6150
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
6151
<td valign="middle" align="left"> &nbsp; </td>
 
6152
<td valign="middle" align="left"> &nbsp; </td>
 
6153
<td valign="middle" align="left"> &nbsp; </td>
 
6154
<td valign="middle" align="left"> &nbsp; </td>
 
6155
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
6156
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
6157
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
6158
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
6159
</tr></table>
 
6160
<a name="Object-Tasks-1"></a>
 
6161
<h3 class="subsection">5.2.4 Object Tasks</h3>
 
6162
 
 
6163
<p>For reference details see section <a href="#Object">Object</a>.
 
6164
</p>
 
6165
<dl compact="compact">
 
6166
<dt> <b>Creating Objects:</b></dt>
 
6167
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><i>wo</i>[<var>pos</var>]  = {&quot;<b>st_chess</b>&quot;, <b>color</b>=<var>WHITE</var>, <b>name</b>=&quot;<var>Atrax</var>&quot;}   -- on grid pos
 
6168
<i>wo</i>[#<var>pos</var>] = {&quot;<b>ac_bug</b>&quot;}              -- actor centered on grid pos
 
6169
<i>wo</i>[<var>pos</var>]  = {&quot;#<b>ac_bug</b>&quot;}             -- actor centered on grid pos
 
6170
<i>wo</i>[<var>pos</var>]  = {&quot;<b>ac_bug</b>&quot;, <var>0.3</var>, <var>0.7</var>}    -- actor with offsets to pos
 
6171
<i>wo</i>[<var>my_floor</var>] = {&quot;<b>it_magicwand</b>&quot;}    -- set a wand on top of a given floor object
 
6172
<i>wo</i>[<var>pos</var>]  = <i>ti</i>[&quot;<var>x</var>&quot;]                 -- tile based object definition
 
6173
</pre></td></tr></table>
 
6174
<p>Besides map based object creation, that you saw in the previous basic examples,
 
6175
you can create new objects on any world position directly. The world takes a
 
6176
position, that may well be an object, as key argument. The new object is
 
6177
described either by an anonymous Lua table, containing the kind string as first
 
6178
value and additional attributes as key value pairs appended, or by a tile object.
 
6179
</p>
 
6180
</dd>
 
6181
<dt> <b>Object Naming:</b></dt>
 
6182
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><i>no</i>[&quot;<var>Atrax</var>&quot;] = <var>obj</var>
 
6183
<i>wo</i>[<var>pos</var>] = {&quot;<b>st_chess</b>&quot;, <b>name</b>=&quot;<var>Atrax</var>&quot;}
 
6184
<i>wo</i>[<var>pos</var>] = {&quot;<b>st_chess</b>&quot;, &quot;<var>Atrax</var>&quot;, <b>color</b>=<var>WHITE</var>}
 
6185
</pre></td></tr></table>
 
6186
<p>As explained in <a href="#Object-Naming">Object Naming</a>, the names are the only longtime valid
 
6187
object references. You can explicitly name an object by assigning it at the
 
6188
named object repository &lsquo;<samp>no</samp>&rsquo; to the name as the key. But most times you
 
6189
just supply the objects name as an object attribute. If you supply the name
 
6190
attribute as the <b>second</b> value in the anonymous table you can omit the
 
6191
key &lsquo;<samp>name =</samp>&rsquo; part as a common abbreviation.
 
6192
</p>
 
6193
</dd>
 
6194
<dt> <b>Object Autonaming:</b></dt>
 
6195
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><i>wo</i>[<var>pos</var>] = {&quot;<b>st_chess</b>&quot;, <b>name</b>=&quot;<var>Atrax</var>#&quot;}
 
6196
</pre></td></tr></table>
 
6197
<p>As explained in <a href="#Object-Naming">Object Naming</a> you can append a hash sign &lsquo;<samp>#</samp>&rsquo; to a
 
6198
name and use the resulting string for arbitrary number of similar objects. This
 
6199
is especially useful for building groups.
 
6200
</p>
 
6201
</dd>
 
6202
<dt> <b>Requesting Objects:</b></dt>
 
6203
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>obj</var> = <i>no</i>[&quot;<var>Atrax</var>&quot;]       -- named object retrieval from repository
 
6204
<var>obj</var> = <i>it</i>(<var>pos</var>)
 
6205
<var>obj</var> = <i>it</i>(<var>x</var>,<var>y</var>)
 
6206
<var>obj</var> = <i>st</i>(<var>pos</var>)
 
6207
<var>obj</var> = <i>wo</i>:<b>it</b>(<var>pos</var>)
 
6208
<var>my_item</var> = <i>it</i>(<var>my_floor</var>)  -- get the item that is on top of the given floor
 
6209
</pre></td></tr></table>
 
6210
<p>The most common way is naming objects and the requesting the &lsquo;<samp>no</samp>&rsquo;
 
6211
repository for the object reference. If you know the position of the desired
 
6212
object you can use one of the functions or world methods &lsquo;<samp>fl</samp>&rsquo;, &lsquo;<samp>it</samp>&rsquo;,
 
6213
&lsquo;<samp>st</samp>&rsquo; that take a position, an object as position, or just the two
 
6214
coordinates as arguments. Especially requesting one type of objects that is
 
6215
positioned at the same grid as another object, the stone on top of a floor, etc.
 
6216
can be very useful.
 
6217
</p>
 
6218
</dd>
 
6219
<dt> <b>Killing Objects:</b></dt>
 
6220
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><i>wo</i>[<var>pos</var>] = {&quot;<b>it_nil</b>&quot;}
 
6221
<var>obj</var>:<b>kill</b>()
 
6222
</pre></td></tr></table>
 
6223
<p>You remove an object by setting another replacement object at the same
 
6224
position in the same layer. If you do not want to set a new object you can use
 
6225
the placebo objects &lsquo;<samp>fl_nil</samp>&rsquo;, &lsquo;<samp>it_nil</samp>&rsquo;, &lsquo;<samp>st_nil</samp>&rsquo;. Another way is
 
6226
to call the &lsquo;<samp>kill()</samp>&rsquo; method of an object or send it a &lsquo;<samp>kill</samp>&rsquo; message.
 
6227
You can only remove objects that are set on the grid. Neither actors nor owned
 
6228
objects like items in a players inventory can be killed - they will simply
 
6229
ignore the attempt.
 
6230
</p>
 
6231
</dd>
 
6232
<dt> <b>Comparing Objects</b></dt>
 
6233
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>obj1</var> == <var>obj2</var>
 
6234
<var>obj1</var> ~= <var>obj2</var>
 
6235
</pre></td></tr></table>
 
6236
<p>Objects can be directly compared on equality or inequality. It is an identity
 
6237
comparison that acknowledges that you have two references of the same object.
 
6238
</p>
 
6239
</dd>
 
6240
<dt> <b>Existence of an object</b></dt>
 
6241
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>obj</var>:<b>exists</b>()
 
6242
-<var>obj</var>                -- unary minus operator on object
 
6243
if -<var>obj</var> then ...
 
6244
</pre></td></tr></table>
 
6245
<p>Object references may get invalid due to objects being killed. In most cases
 
6246
this creates no problem as requests to invalid objects will simply be ignored.
 
6247
But if the level logic depends on the existence of an object you can call the
 
6248
&lsquo;<samp>exists()</samp>&rsquo; method or simply precede the reference by the unary minus
 
6249
&lsquo;<samp>-</samp>&rsquo; operator. Both ways return a simple bool value stating if the object
 
6250
reference is still valid.
 
6251
</p>
 
6252
</dd>
 
6253
<dt> <b>Messages:</b></dt>
 
6254
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>my_boulder</var>:<b>message</b>(&quot;<b>orientate</b>&quot;, <var>WEST</var>)
 
6255
<var>my_boulder</var>:<b>orientate</b>(<var>EAST</var>)
 
6256
<var>my_door</var>:<b>open</b>()
 
6257
</pre></td></tr></table>
 
6258
<p><a href="#Messages">Messages</a> are a main feature of Enigma. You can send them directly to any
 
6259
object by the &lsquo;<samp>message()</samp>&rsquo; method or by using any message directly as a
 
6260
method call itself.
 
6261
</p>
 
6262
</dd>
 
6263
<dt> <b>Object Classification:</b></dt>
 
6264
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>obj</var>:<b>is</b>(&quot;<b>st_chess</b>&quot;)
 
6265
<var>obj</var>:<b>is</b>(&quot;<b>st</b>&quot;)
 
6266
<var>obj</var>:<b>is</b>(&quot;<b>st_chess_black</b>&quot;)
 
6267
</pre></td></tr></table>
 
6268
<p>You create objects by giving an <a href="#Object-Kind">Object Kind</a>. Later on you can check a
 
6269
given object for conformity to a given class or kind. Even though you can not
 
6270
create abstract kind objects like &lsquo;<samp>st</samp>&rsquo;, you can check this way if an object
 
6271
is a stone. Checking for special subkinds may even evaluate the current state
 
6272
or other attributes of an object to report its current classification.
 
6273
</p>
 
6274
</dd>
 
6275
</dl>
 
6276
 
 
6277
<hr size="6">
 
6278
<a name="Group-Tasks"></a>
 
6279
<table cellpadding="1" cellspacing="1" border="0">
 
6280
<tr><td valign="middle" align="left">[<a href="#Object-Tasks" title="Previous section in reading order"> &lt; </a>]</td>
 
6281
<td valign="middle" align="left">[<a href="#Tiles-and-World-Tasks" title="Next section in reading order"> &gt; </a>]</td>
 
6282
<td valign="middle" align="left"> &nbsp; </td>
 
6283
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
6284
<td valign="middle" align="left">[<a href="#API-2-Overview" title="Up section"> Up </a>]</td>
 
6285
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
6286
<td valign="middle" align="left"> &nbsp; </td>
 
6287
<td valign="middle" align="left"> &nbsp; </td>
 
6288
<td valign="middle" align="left"> &nbsp; </td>
 
6289
<td valign="middle" align="left"> &nbsp; </td>
 
6290
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
6291
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
6292
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
6293
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
6294
</tr></table>
 
6295
<a name="Group-Tasks-1"></a>
 
6296
<h3 class="subsection">5.2.5 Group Tasks</h3>
 
6297
 
 
6298
<p>For reference details see section <a href="#Group">Group</a>.
 
6299
</p>
 
6300
<dl compact="compact">
 
6301
<dt> <b>Creating Groups:</b></dt>
 
6302
<dd>
 
6303
<table><tr><td>&nbsp;</td><td><pre class="example"><var>group</var> = <i>no</i>[&quot;<b>Atrax</b>#*&quot;]           -- a group of all matching objects
 
6304
                                --   wildcards &quot;*&quot;,&quot;?&quot; allowed
 
6305
<var>group</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>, <var>obj3</var>)
 
6306
<var>group</var> = <i>grp</i>({<var>obj1</var>, <var>obj2</var>, <var>obj3</var>})  -- a group of objects set up in a table
 
6307
</pre></td></tr></table>
 
6308
 
 
6309
<p>Requesting objects from the named object repository will result in a group of
 
6310
objects if you make proper usage of wildcards. Appending an asterisk &lsquo;<samp>*</samp>&rsquo;
 
6311
to the autonaming hash will retrieve all objects that have been set with this
 
6312
name suffix. But you can create a group by the &lsquo;<samp>grp</samp>&rsquo; function, too. Simply
 
6313
add the desired object reference as arguments, either single or as a table.
 
6314
</p>
 
6315
</dd>
 
6316
<dt> <b>Group Usage:</b></dt>
 
6317
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>floor_group</var>[&quot;<b>friction</b>&quot;] = <var>3.2</var>      -- set attribute on all floors in the group
 
6318
<var>door_group</var>:<b>message</b>(&quot;<b>open</b>&quot;)
 
6319
<var>door_group</var>:<b>open</b>()
 
6320
<var>stone_group</var>:<b>kill</b>()
 
6321
<i>wo</i>[<var>floor_group</var>] = {&quot;<b>it_coin_m</b>&quot;}   -- add some money on all floor positions
 
6322
 
 
6323
<i>wo</i>[<var>pos</var>] = {&quot;<b>st_switch</b>&quot;, <b>target</b>=<var>door_group</var>, <b>action</b>=&quot;<b>open</b>&quot;}
 
6324
<i>wo</i>[<var>pos</var>] = {&quot;<b>st_switch</b>&quot;, <b>target</b>=&quot;<var>door</var>#*&quot;, <b>action</b>=&quot;<b>close</b>&quot;}
 
6325
</pre></td></tr></table>
 
6326
<p>Many object operations can be applied to groups in the same manner. The
 
6327
operations will be applied to all members of the group. You set attributes,
 
6328
send messages or call any method.
 
6329
</p>
 
6330
<p>The world object takes a group as key, too. You can set objects of a given
 
6331
definition to many positions at once.
 
6332
</p>
 
6333
<p>Another usage of groups is the application as an attribute value. E.g. you can
 
6334
define multiple targets by supplying a group.
 
6335
</p>
 
6336
</dd>
 
6337
<dt> <b>Group Operations:</b></dt>
 
6338
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>doors_lasers</var> = <var>doorgrp</var> + <var>lasergrp</var>       -- join of two groups
 
6339
<var>lasergrp</var>     = <var>doors_lasers</var> - <var>doorgrp</var>   -- difference of two groups
 
6340
<var>common_doors</var> = <var>doorgrp1</var> * <var>doorgrp2</var>      -- intersection of two groups
 
6341
</pre></td></tr></table>
 
6342
<p>Groups offer some standard operations known from handling with sets.
 
6343
</p>
 
6344
</dd>
 
6345
<dt> <b>Group Members:</b></dt>
 
6346
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>count</var> = #<var>mygroup</var>        -- number of objects in the group
 
6347
<var>obj</var>   = <var>mygroup</var>[<var>5</var>]     -- 5th object of the group
 
6348
<var>obj</var>   = <var>mygroup</var>[<var>-1</var>]    -- last object of the group
 
6349
for <var>i</var> = <var>1</var>, #<var>mygroup</var> do <var>obj</var> = <var>mygroup</var>[<var>i</var>] ... end
 
6350
for <var>obj</var> in <var>mygroup</var> do ... end
 
6351
</pre></td></tr></table>
 
6352
<p>You can access the members of a group by numbered indices. The size of a group
 
6353
is reported by the standard Lua hash &lsquo;<samp>#</samp>&rsquo; operator. If you need to iterate
 
6354
over the objects of a group you can write easily Lua for loops. You can either
 
6355
iterate with a counter or directly iterate the content objects.
 
6356
</p>
 
6357
</dd>
 
6358
<dt> <b>Shuffled Group:</b></dt>
 
6359
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>shuffled_group</var> = <var>sorted_group</var>:<b>shuffle</b>()
 
6360
<var>shuffled_group</var> = <i>no</i>[&quot;<b>Atrax</b>#*&quot;]:<b>shuffle</b>()
 
6361
</pre></td></tr></table>
 
6362
<p>Every group returns a shuffled group with the same members when receiving the
 
6363
message <code>&quot;shuffle&quot;</code>.
 
6364
</p>
 
6365
</dd>
 
6366
<dt> <b>Sorted Group:</b></dt>
 
6367
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>sorted_group</var> = <var>group</var>:<b>sort</b>(&quot;<b>linear</b>&quot;, po(<var>2</var>, <var>1</var>))
 
6368
<var>sorted_group</var> = <var>group</var>:<b>sort</b>(&quot;<b>linear</b>&quot;)
 
6369
<var>sorted_group</var> = <var>group</var>:<b>sort</b>(&quot;<b>circular</b>&quot;)
 
6370
<var>sorted_group</var> = <var>group</var>:<b>sort</b>()
 
6371
</pre></td></tr></table>
 
6372
<p>Sort group objects in linear order according to given direction vector, or
 
6373
direction determined by the first two objects. Or order objects circular around
 
6374
their center. If no argument is given order objects lexically.
 
6375
</p>
 
6376
</dd>
 
6377
<dt> <b>Subset Group:</b></dt>
 
6378
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>sub_group</var> = <var>group</var>:<b>sub</b>(<var>2</var>)   -- first two objects
 
6379
<var>sub_group</var> = <var>group</var>:<b>sub</b>(<var>-2</var>)  -- last two objects
 
6380
<var>sub_group</var> = <var>group</var>:<b>sub</b>(<var>2</var>, <var>4</var>) -- objects from 2 to 4
 
6381
<var>sub_group</var> = <var>group</var>:<b>sub</b>(<var>2</var>, <var>-2</var>) -- two objects starting with 2
 
6382
</pre></td></tr></table>
 
6383
<p>Build subgroup with given indices and numbers.
 
6384
</p>
 
6385
</dd>
 
6386
<dt> <b>Nearest Object:</b></dt>
 
6387
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>object</var> = <var>group</var>:<b>nearest</b>(<var>reference</var>)
 
6388
</pre></td></tr></table>
 
6389
<p>Search object in group that is nearest to the given reference object.
 
6390
</p></dd>
 
6391
</dl>
 
6392
 
 
6393
<hr size="6">
 
6394
<a name="Tiles-and-World-Tasks"></a>
 
6395
<table cellpadding="1" cellspacing="1" border="0">
 
6396
<tr><td valign="middle" align="left">[<a href="#Group-Tasks" title="Previous section in reading order"> &lt; </a>]</td>
 
6397
<td valign="middle" align="left">[<a href="#Named-Positions-Tasks" title="Next section in reading order"> &gt; </a>]</td>
 
6398
<td valign="middle" align="left"> &nbsp; </td>
 
6399
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
6400
<td valign="middle" align="left">[<a href="#API-2-Overview" title="Up section"> Up </a>]</td>
 
6401
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
6402
<td valign="middle" align="left"> &nbsp; </td>
 
6403
<td valign="middle" align="left"> &nbsp; </td>
 
6404
<td valign="middle" align="left"> &nbsp; </td>
 
6405
<td valign="middle" align="left"> &nbsp; </td>
 
6406
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
6407
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
6408
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
6409
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
6410
</tr></table>
 
6411
<a name="Tiles-and-World-Tasks-1"></a>
 
6412
<h3 class="subsection">5.2.6 Tiles and World Tasks</h3>
 
6413
 
 
6414
<p>For reference details see section <a href="#Tile-and-Object-Declaration">Tile and Object Declaration</a>, <a href="#Tiles-Repository">Tiles Repository</a>
 
6415
and <a href="#World">World</a>.
 
6416
</p>
 
6417
<dl compact="compact">
 
6418
<dt> <b>Tiles:</b></dt>
 
6419
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><i>ti</i>[&quot;<var>_</var>&quot;] = {&quot;<b>fl_sahara</b>&quot;}
 
6420
<i>ti</i>[&quot;<var>__</var>&quot;] = {&quot;<b>fl_sahara</b>&quot;}
 
6421
<i>ti</i>[&quot;<var>..</var>&quot;] = {&quot;<b>fl_sand</b>&quot;}
 
6422
<i>ti</i>[&quot;<var>##</var>&quot;] = {&quot;<b>st_blocker</b>&quot;}
 
6423
<i>ti</i>[&quot;<var>switch_template</var>&quot;] = {&quot;<b>st_switch</b>&quot;}
 
6424
<i>ti</i>[&quot;<var>..</var>&quot;] = {&quot;<b>fl_abyss</b>&quot;}   -- redefinition causes error to avoid common mistakes
 
6425
<i>ti</i>[&quot;<var>.w</var>&quot;] = <i>ti</i>[&quot;<var>..</var>&quot;] .. {&quot;<b>it_magicwand</b>&quot;}
 
6426
<i>ti</i>[&quot;<var> w</var>&quot;] = {&quot;<b>fl_abyss</b>&quot;} .. <i>ti</i>({&quot;<b>it_magicwand</b>&quot;})
 
6427
</pre></td></tr></table>
 
6428
<p>The tiles repository &lsquo;<samp>ti</samp>&rsquo; is like a table, but specialized on storage of
 
6429
tile definitions. You can use any string as key. You can store the same
 
6430
definition twice at different keys. But you are not allowed to redefine an
 
6431
already set key. This is pure protection of common error situations. A
 
6432
definition stored in the repository can be used in other definitions that
 
6433
follow. Referencing a tiles repository entry at a given key like &lsquo;<samp>ti[&quot;..&quot;]</samp>&rsquo;
 
6434
results in a tile value. Such tile values can be concatenated by the &lsquo;<samp>..</samp>&rsquo;
 
6435
operator with other tile values and anonymous tables containing object
 
6436
definitions. The last example is a concatenation of two prior not declared
 
6437
object definitions. You can not concatenate two anonymous tables. Lua forbids
 
6438
that. By converting any of the two tables by the &lsquo;<samp>ti()</samp>&rsquo; to a tile value the
 
6439
concatenation gets valid.
 
6440
</p>
 
6441
</dd>
 
6442
<dt> <b>World Initialization</b></dt>
 
6443
<dd><table><tr><td>&nbsp;</td><td><pre class="example">  <var>width</var>, <var>height</var> = <i>wo</i>(<i>ti</i>, &quot;<var>__</var>&quot;, { -- second arg: default tile key that
 
6444
  &quot;<var>##__......</var>&quot;,                  --   defines the base, too - this example
 
6445
  &quot;<var>##..__.w__</var>&quot;,                  --   is 2 chars per tile/grid
 
6446
  &quot;<var>##.. w__..</var>&quot;
 
6447
  })
 
6448
</pre></td></tr></table>
 
6449
<p>The world is initialized by the &lsquo;<samp>wo()</samp>&rsquo; call that is explained in details
 
6450
at <a href="#World-Creation">World Creation</a>. In the simple form you supply
 
6451
the &lsquo;<samp>ti</samp>&rsquo; handle as the first argument. The second argument is the key of
 
6452
the default tile definition that defines the default floor to be set if a tile
 
6453
does not contain another floor object. At the same time this key defines by its
 
6454
length the standard key length as used in the following map, too. The third
 
6455
argument is the map given as an anonymous table of strings. The worlds size is
 
6456
given by the maximum line length and the number of lines. These values are
 
6457
returned by the call.
 
6458
</p>
 
6459
</dd>
 
6460
</dl>
 
6461
 
 
6462
<hr size="6">
 
6463
<a name="Named-Positions-Tasks"></a>
 
6464
<table cellpadding="1" cellspacing="1" border="0">
 
6465
<tr><td valign="middle" align="left">[<a href="#Tiles-and-World-Tasks" title="Previous section in reading order"> &lt; </a>]</td>
 
6466
<td valign="middle" align="left">[<a href="#Advanced-Lua-Examples" title="Next section in reading order"> &gt; </a>]</td>
 
6467
<td valign="middle" align="left"> &nbsp; </td>
 
6468
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
6469
<td valign="middle" align="left">[<a href="#API-2-Overview" title="Up section"> Up </a>]</td>
 
6470
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
6471
<td valign="middle" align="left"> &nbsp; </td>
 
6472
<td valign="middle" align="left"> &nbsp; </td>
 
6473
<td valign="middle" align="left"> &nbsp; </td>
 
6474
<td valign="middle" align="left"> &nbsp; </td>
 
6475
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
6476
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
6477
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
6478
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
6479
</tr></table>
 
6480
<a name="Named-Positions-Tasks-1"></a>
 
6481
<h3 class="subsection">5.2.7 Named Positions Tasks</h3>
 
6482
 
 
6483
<p>For reference details see section <a href="#PositionList">PositionList</a>.
 
6484
</p>
 
6485
<dl compact="compact">
 
6486
<dt> <b>Named Position Usage:</b></dt>
 
6487
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>obj</var>[&quot;<b>name</b>&quot;] = &quot;<var>anchor1</var>&quot;
 
6488
<var>obj</var>:<b>kill</b>()
 
6489
<var>pos</var> = <i>po</i>[&quot;<var>anchor1</var>&quot;]
 
6490
<i>po</i>[&quot;<var>anchor2</var>&quot;] = <var>pos</var>
 
6491
</pre></td></tr></table>
 
6492
<p>The position of any named object can be directly retrieved. The position is
 
6493
still accessible under the name, when the object gets killed. You can
 
6494
additionally name own positions. Note that the position of an existing object
 
6495
precedes a position stored under the same name.
 
6496
</p>
 
6497
</dd>
 
6498
<dt> <b>Creating Position Lists:</b></dt>
 
6499
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>polist</var> = <i>po</i>[&quot;<var>deepwater</var>#*&quot;]
 
6500
<var>polist</var> = <i>po</i>(<var>grp</var>)
 
6501
</pre></td></tr></table>
 
6502
<p>Requesting positions will result in a list of positions if you make proper usage
 
6503
of wildcards. A given object group can be converted into a position list, too.
 
6504
</p>
 
6505
</dd>
 
6506
<dt> <b>Position List Usage:</b></dt>
 
6507
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><i>wo</i>[<var>polist</var>] = <i>ti</i>[&quot;<var>x</var>&quot;]
 
6508
<var>grp</var> = <i>fl</i>(<var>polist</var>)
 
6509
</pre></td></tr></table>
 
6510
<p>You can use a list of positions to set tiles or to retrieve a group of floors,
 
6511
items, stones.
 
6512
</p>
 
6513
</dd>
 
6514
<dt> <b>Position List Operations:</b></dt>
 
6515
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><i>wo</i>[<var>polist</var> .. <i>po</i>[&quot;<var>beach</var>#*&quot;]] = {&quot;<b>it_banana</b>&quot;}
 
6516
</pre></td></tr></table>
 
6517
<p>Two position lists can be appended. Single positions can be appended to a given
 
6518
position list, too.
 
6519
</p>
 
6520
</dd>
 
6521
<dt> <b>Position List Members:</b></dt>
 
6522
<dd><table><tr><td>&nbsp;</td><td><pre class="example">for <var>i</var> = 1, #<var>polist</var> do
 
6523
    <i>wo</i>[<var>polist</var>[<var>i</var>]] = {&quot;<b>it_cherry</b>&quot;}
 
6524
end
 
6525
</pre></td></tr></table>
 
6526
<p>Single positions within the list can be accessed by index. The whole list can
 
6527
be traversed by a simple for loop. The hash length operator reports the number
 
6528
of contained positions.
 
6529
</p>
 
6530
</dd>
 
6531
</dl>
 
6532
 
 
6533
 
 
6534
<hr size="6">
 
6535
<a name="Advanced-Lua-Examples"></a>
 
6536
<table cellpadding="1" cellspacing="1" border="0">
 
6537
<tr><td valign="middle" align="left">[<a href="#Named-Positions-Tasks" title="Previous section in reading order"> &lt; </a>]</td>
 
6538
<td valign="middle" align="left">[<a href="#Color-Maze" title="Next section in reading order"> &gt; </a>]</td>
 
6539
<td valign="middle" align="left"> &nbsp; </td>
 
6540
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
6541
<td valign="middle" align="left">[<a href="#Lua-API" title="Up section"> Up </a>]</td>
 
6542
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
6543
<td valign="middle" align="left"> &nbsp; </td>
 
6544
<td valign="middle" align="left"> &nbsp; </td>
 
6545
<td valign="middle" align="left"> &nbsp; </td>
 
6546
<td valign="middle" align="left"> &nbsp; </td>
 
6547
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
6548
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
6549
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
6550
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
6551
</tr></table>
 
6552
<a name="Advanced-Lua-Examples-1"></a>
 
6553
<h2 class="section">5.3 Advanced Lua Examples</h2>
 
6554
 
 
6555
<p>Now it is time to reveal the real power of the new API. Let us look again at
 
6556
two real levels. Investigate the levels first by playing and then join
 
6557
in the line by line commentary of the source code to understand how to
 
6558
implement your own level ideas.
 
6559
</p>
 
6560
<table class="menu" border="0" cellspacing="0">
 
6561
<tr><td align="left" valign="top"><a href="#Color-Maze">5.3.1 Color Maze</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    Enigma levelpack VIII, level #19
 
6562
</td></tr>
 
6563
<tr><td align="left" valign="top"><a href="#Weirdly-Wired">5.3.2 Weirdly Wired</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> Enigma levelpack VIII, level #22
 
6564
</td></tr>
 
6565
</table>
 
6566
 
 
6567
 
 
6568
<hr size="6">
 
6569
<a name="Color-Maze"></a>
 
6570
<table cellpadding="1" cellspacing="1" border="0">
 
6571
<tr><td valign="middle" align="left">[<a href="#Advanced-Lua-Examples" title="Previous section in reading order"> &lt; </a>]</td>
 
6572
<td valign="middle" align="left">[<a href="#Weirdly-Wired" title="Next section in reading order"> &gt; </a>]</td>
 
6573
<td valign="middle" align="left"> &nbsp; </td>
 
6574
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
6575
<td valign="middle" align="left">[<a href="#Advanced-Lua-Examples" title="Up section"> Up </a>]</td>
 
6576
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
6577
<td valign="middle" align="left"> &nbsp; </td>
 
6578
<td valign="middle" align="left"> &nbsp; </td>
 
6579
<td valign="middle" align="left"> &nbsp; </td>
 
6580
<td valign="middle" align="left"> &nbsp; </td>
 
6581
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
6582
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
6583
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
6584
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
6585
</tr></table>
 
6586
<a name="Color-Maze-1"></a>
 
6587
<h3 class="subsection">5.3.1 Color Maze</h3>
 
6588
 
 
6589
<p>Let us view the Lua source code part. We did add a line count in the first two
 
6590
columns for reference purpose within this section. These line count numbers are
 
6591
not part of the source code itself!
 
6592
</p>
 
6593
<table><tr><td>&nbsp;</td><td><pre class="example">01    <i>wo</i>[&quot;<b>ConserveLevel</b>&quot;] = <var>false</var>
 
6594
02    <i>wo</i>[&quot;<b>FollowGrid</b>&quot;] = <var>false</var>
 
6595
03    <i>wo</i>[&quot;<b>FollowMethod</b>&quot;] = <var>FOLLOW_SCROLL</var>
 
6596
04
 
6597
05    <i>ti</i>[&quot;<var> </var>&quot;] = {&quot;<b>fl_fake_abyss</b>&quot;} .. <i>ti</i>({&quot;<b>st_lightglass</b>&quot;})
 
6598
06
 
6599
07    <i>ti</i>[&quot;<var>!</var>&quot;] = {&quot;<b>fl_blueslab</b>&quot;, &quot;<var>blue#</var>&quot;, <var>_color</var>=&quot;<var>blue</var>&quot;}
 
6600
08    <i>ti</i>[&quot;<var>@</var>&quot;] = {&quot;<b>fl_pinkbumps</b>&quot;, &quot;<var>orange#</var>&quot;, <var>_color</var>=&quot;<var>orange</var>&quot;}
 
6601
09    <i>ti</i>[&quot;<var>#</var>&quot;] = {&quot;<b>fl_redslab</b>&quot;, &quot;<var>red#</var>&quot;, <var>_color</var>=&quot;<var>red</var>&quot;}
 
6602
10    <i>ti</i>[&quot;<var>$</var>&quot;] = {&quot;<b>fl_lawn_b</b>&quot;, &quot;<var>green#</var>&quot;, <var>_color</var>=&quot;<var>green</var>&quot;}
 
6603
11
 
6604
12    <i>ti</i>[&quot;<var>b</var>&quot;] = <i>ti</i>[&quot;<var>!</var>&quot;] .. {&quot;<b>st_door</b>&quot;, <b>flavor</b>=&quot;<var>d</var>&quot;, <b>faces</b>=&quot;<var>ns</var>&quot;, <b>state</b>=<var>OPEN</var>}
 
6605
13    <i>ti</i>[&quot;<var>B</var>&quot;] = <i>ti</i>[&quot;<var>!</var>&quot;] .. {&quot;<b>st_door</b>&quot;, <b>flavor</b>=&quot;<var>d</var>&quot;, <b>faces</b>=&quot;<var>ew</var>&quot;, <b>state</b>=<var>OPEN</var>}
 
6606
14    <i>ti</i>[&quot;<var>o</var>&quot;] = <i>ti</i>[&quot;<var>@</var>&quot;] .. {&quot;<b>st_door</b>&quot;, <b>flavor</b>=&quot;<var>d</var>&quot;, <b>faces</b>=&quot;<var>ns</var>&quot;, <b>state</b>=<var>OPEN</var>}
 
6607
15    <i>ti</i>[&quot;<var>O</var>&quot;] = <i>ti</i>[&quot;<var>@</var>&quot;] .. {&quot;<b>st_door</b>&quot;, <b>flavor</b>=&quot;<var>d</var>&quot;, <b>faces</b>=&quot;<var>ew</var>&quot;, <b>state</b>=<var>OPEN</var>}
 
6608
16    <i>ti</i>[&quot;<var>r</var>&quot;] = <i>ti</i>[&quot;<var>#</var>&quot;] .. {&quot;<b>st_door</b>&quot;, <b>flavor</b>=&quot;<var>d</var>&quot;, <b>faces</b>=&quot;<var>ns</var>&quot;, <b>state</b>=<var>OPEN</var>}
 
6609
17    <i>ti</i>[&quot;<var>R</var>&quot;] = <i>ti</i>[&quot;<var>#</var>&quot;] .. {&quot;<b>st_door</b>&quot;, <b>flavor</b>=&quot;<var>d</var>&quot;, <b>faces</b>=&quot;<var>ew</var>&quot;, <b>state</b>=<var>OPEN</var>}
 
6610
18    <i>ti</i>[&quot;<var>g</var>&quot;] = <i>ti</i>[&quot;<var>$</var>&quot;] .. {&quot;<b>st_door</b>&quot;, <b>flavor</b>=&quot;<var>d</var>&quot;, <b>faces</b>=&quot;<var>ns</var>&quot;, <b>state</b>=<var>OPEN</var>}
 
6611
19    <i>ti</i>[&quot;<var>G</var>&quot;] = <i>ti</i>[&quot;<var>$</var>&quot;] .. {&quot;<b>st_door</b>&quot;, <b>flavor</b>=&quot;<var>d</var>&quot;, <b>faces</b>=&quot;<var>ew</var>&quot;, <b>state</b>=<var>OPEN</var>}
 
6612
20
 
6613
21    <i>ti</i>[&quot;<var>d</var>&quot;] = {&quot;<b>it_document</b>&quot;, <b>text</b>=&quot;<var>text1</var>&quot;}
 
6614
22    <i>ti</i>[&quot;<var>5</var>&quot;] = <i>ti</i>[&quot;<var>b</var>&quot;] .. <i>ti</i>[&quot;<var>d</var>&quot;]
 
6615
23    <i>ti</i>[&quot;<var>6</var>&quot;] = <i>ti</i>[&quot;<var>O</var>&quot;] .. <i>ti</i>[&quot;<var>d</var>&quot;]
 
6616
24    <i>ti</i>[&quot;<var>7</var>&quot;] = <i>ti</i>[&quot;<var>r</var>&quot;] .. <i>ti</i>[&quot;<var>d</var>&quot;]
 
6617
25    <i>ti</i>[&quot;<var>8</var>&quot;] = <i>ti</i>[&quot;<var>G</var>&quot;] .. <i>ti</i>[&quot;<var>d</var>&quot;]
 
6618
26
 
6619
27    <i>ti</i>[&quot;<var>x</var>&quot;] = {&quot;<b>it_sensor</b>&quot;, <b>invisible</b>=<var>true</var>, <b>target</b>=&quot;<var>gates</var>&quot;}
 
6620
28    <i>ti</i>[&quot;<var>*</var>&quot;] = <i>ti</i>[&quot;<var>x</var>&quot;] .. {&quot;#<b>ac_marble_black</b>&quot;, &quot;<var>me</var>&quot;}
 
6621
29
 
6622
30    <i>ti</i>[&quot;<var>?</var>&quot;] = {&quot;<b>st_oxyd_a</b>&quot;}
 
6623
31
 
6624
32    <i>wo</i>(<i>ti</i>, &quot;<var> </var>&quot;, {
 
6625
33    --      |         1    1   |2    2
 
6626
34    --      |1   5    0    5   |0    5
 
6627
35           &quot;<var>                           </var>&quot;,
 
6628
36           &quot;<var> xO@OxR#RxO@OxB!BxR#RxB!Bx </var>&quot;, --01
 
6629
37           &quot;<var> b   r   g   g   b   g   r </var>&quot;,
 
6630
38           &quot;<var> !   #   $   $   !   $   # </var>&quot;,
 
6631
39           &quot;<var> b   r   g   g   b   g   r </var>&quot;,
 
6632
40           &quot;<var> xR#RxB!BxO@OxG$GxO@OxO@Ox </var>&quot;, --05
 
6633
41           &quot;<var> g   g   r   g   g   b   b </var>&quot;,
 
6634
42           &quot;<var> $   $   #   $   $   !   ! </var>&quot;,
 
6635
43           &quot;<var> g   g   r   g   g   b   b </var>&quot;,
 
6636
44           &quot;<var> xR#RxO@OxG$GxR#RxG$GxR#Rx </var>&quot;,
 
6637
45           &quot;<var> g   b   b   o       b   r </var>&quot;, --10
 
6638
46           &quot;<var> $   !   !   @       !   # </var>&quot;,
 
6639
47           &quot;<var> g   b   5   o   ?   b   r </var>&quot;, --
 
6640
48           &quot;<var> xO@OxO@6*8$Gx   xG$GxR#Rx </var>&quot;,
 
6641
49           &quot;<var> r   b   7   b   ?   o   o </var>&quot;,
 
6642
50           &quot;<var> #   !   #   !       @   @ </var>&quot;, --15
 
6643
51           &quot;<var> r   b   r   b       o   o </var>&quot;,
 
6644
52           &quot;<var> xG$GxB!BxR#RxO@OxR#RxG$Gx </var>&quot;,
 
6645
53           &quot;<var> g   o   o   g   g   o   b </var>&quot;,
 
6646
54           &quot;<var> $   @   @   $   $   @   ! </var>&quot;,
 
6647
55           &quot;<var> g   o   o   g   g   o   b </var>&quot;, --20
 
6648
56           &quot;<var> xB!BxO@OxR#RxR#RxO@OxB!Bx </var>&quot;,
 
6649
57           &quot;<var> o   r   g   g   b   b   g </var>&quot;,
 
6650
58           &quot;<var> @   #   $   $   !   !   $ </var>&quot;,
 
6651
59           &quot;<var> o   r   g   g   b   b   g </var>&quot;, --
 
6652
60           &quot;<var> xR#RxB!BxB!BxR#RxO@OxR#Rx </var>&quot;, --25
 
6653
61           &quot;<var>                           </var>&quot;} --
 
6654
62    --      |         1    1   |2    2
 
6655
63    --      |1   5    0    5   |0    5
 
6656
64    )
 
6657
65
 
6658
66    <var>last</var> = <b>it</b>(<i>no</i>[&quot;<var>me</var>&quot;])   -- the last visited sensor
 
6659
67    <var>move</var> = <var>0</var>              -- the count of link moves
 
6660
68    <var>sequence</var> = {}         -- the sequence of the 4 colors that the user did choose
 
6661
69
 
6662
70    function <var>gates</var>(<var>value</var>, <var>sender</var>)
 
6663
71        if <var>last</var> ~= <var>sender</var> then
 
6664
72            local <var>middle</var> = <var>last</var> + (<var>sender</var> - <var>last</var>)/<var>2</var>
 
6665
73            local <var>color</var> = <b>fl</b>(<var>middle</var>)[&quot;<var>_color</var>&quot;]
 
6666
74            if <var>color</var> == <var>nil</var> then return end  -- someone cheated, avoid throwing an exception
 
6667
75            <b>st</b>(<i>no</i>[<var>color</var>..&quot;<var>#*</var>&quot;]):<b>close</b>()
 
6668
76            <var>sequence</var>[<var>move</var>%<var>4</var>] = <var>color</var>
 
6669
77            if <var>move</var> &gt;= <var>3</var> then
 
6670
78                <b>st</b>(<i>no</i>[<var>sequence</var>[(<var>move</var>+<var>1</var>)%<var>4</var>]..&quot;<var>#*</var>&quot;]):<b>open</b>()
 
6671
79            end
 
6672
80            <var>move</var> = <var>move</var> + <var>1</var>
 
6673
81            <var>last</var> = <var>sender</var>
 
6674
82        end
 
6675
83    end
 
6676
</pre></td></tr></table>
 
6677
 
 
6678
<p>Let us concentrate on new aspects not discussed in the previous
 
6679
<a href="#Basic-Lua-Examples">Basic Lua Examples</a>.
 
6680
</p>
 
6681
<table><tr><td>&nbsp;</td><td><pre class="example">01    <i>wo</i>[&quot;<b>ConserveLevel</b>&quot;] = <var>false</var>
 
6682
02    <i>wo</i>[&quot;<b>FollowGrid</b>&quot;] = <var>false</var>
 
6683
03    <i>wo</i>[&quot;<b>FollowMethod</b>&quot;] = <var>FOLLOW_SCROLL</var>
 
6684
</pre></td></tr></table>
 
6685
<p>This level must forbid the user to resurrect a marble at the start position.
 
6686
At the same time the user should see the area around the marble as complete as
 
6687
possible. Thus the scroll mode needs to be set, too. All this is done by
 
6688
setting special <a href="#Global-Attributes">Global Attributes</a>.
 
6689
</p>
 
6690
<table><tr><td>&nbsp;</td><td><pre class="example">05    <i>ti</i>[&quot;<var> </var>&quot;] = {&quot;<b>fl_fake_abyss</b>&quot;} .. <i>ti</i>({&quot;<b>st_lightglass</b>&quot;})
 
6691
32    <i>wo</i>(<i>ti</i>, &quot;<var> </var>&quot;, {
 
6692
</pre></td></tr></table>
 
6693
<p>The inaccessible areas are filled with a transparent glass on top of a black
 
6694
floor as defined in line 5. The world initialization uses this tile definition
 
6695
as the default tile. This is o.k. as it contains a floor definition. Additional
 
6696
objects like the glass stone will never be set on default usage.
 
6697
</p>
 
6698
<table><tr><td>&nbsp;</td><td><pre class="example">07    <i>ti</i>[&quot;<var>!</var>&quot;] = {&quot;<b>fl_blueslab</b>&quot;, &quot;<var>blue#</var>&quot;, <var>_color</var>=&quot;<var>blue</var>&quot;}
 
6699
08    <i>ti</i>[&quot;<var>@</var>&quot;] = {&quot;<b>fl_pinkbumps</b>&quot;, &quot;<var>orange#</var>&quot;, <var>_color</var>=&quot;<var>orange</var>&quot;}
 
6700
09    <i>ti</i>[&quot;<var>#</var>&quot;] = {&quot;<b>fl_redslab</b>&quot;, &quot;<var>red#</var>&quot;, <var>_color</var>=&quot;<var>red</var>&quot;}
 
6701
10    <i>ti</i>[&quot;<var>$</var>&quot;] = {&quot;<b>fl_lawn_b</b>&quot;, &quot;<var>green#</var>&quot;, <var>_color</var>=&quot;<var>green</var>&quot;}
 
6702
</pre></td></tr></table>
 
6703
<p>Every floor object is autonamed for later group access purposes. Additionally
 
6704
every floor object sets a user attribute prefixed in its name by an underscore
 
6705
&lsquo;<samp>_</samp>&rsquo;. This attribute stores a string that we need later on in the callback
 
6706
function.
 
6707
</p>
 
6708
<table><tr><td>&nbsp;</td><td><pre class="example">12    <i>ti</i>[&quot;<var>b</var>&quot;] = <i>ti</i>[&quot;<var>!</var>&quot;] .. {&quot;<b>st_door</b>&quot;, <b>flavor</b>=&quot;<var>d</var>&quot;, <b>faces</b>=&quot;<var>ns</var>&quot;, <b>state</b>=<var>OPEN</var>}
 
6709
13    <i>ti</i>[&quot;<var>B</var>&quot;] = <i>ti</i>[&quot;<var>!</var>&quot;] .. {&quot;<b>st_door</b>&quot;, <b>flavor</b>=&quot;<var>d</var>&quot;, <b>faces</b>=&quot;<var>ew</var>&quot;, <b>state</b>=<var>OPEN</var>}
 
6710
</pre></td></tr></table>
 
6711
<p>The doors are set without being named, as we will target them by their position.
 
6712
</p>
 
6713
<table><tr><td>&nbsp;</td><td><pre class="example">27    <i>ti</i>[&quot;<var>x</var>&quot;] = {&quot;<b>it_sensor</b>&quot;, <b>invisible</b>=<var>true</var>, <b>target</b>=&quot;<var>gates</var>&quot;}
 
6714
</pre></td></tr></table>
 
6715
<p>The actors moves are detected by invisible <a href="#it_005fsensor">it_sensor</a>s that are positioned
 
6716
on any intersection. The target is the <a href="#Callback-Function">Callback Function</a> &lsquo;<samp>gates</samp>&rsquo;.
 
6717
The action can be omitted as the function name is a unique target.
 
6718
</p>
 
6719
<table><tr><td>&nbsp;</td><td><pre class="example">66    <var>last</var> = <b>it</b>(<i>no</i>[&quot;<var>me</var>&quot;])   -- the last visited sensor
 
6720
</pre></td></tr></table>
 
6721
<p>A Lua variable that stores the last sensor visited by the marble. This is
 
6722
initially the sensor beneath the start position of the marble. We do get the
 
6723
marble by name, but do store the sensor item beneath it, that is an unnamed
 
6724
object.
 
6725
</p>
 
6726
<table><tr><td>&nbsp;</td><td><pre class="example">67    <var>move</var> = <var>0</var>              -- the count of link moves
 
6727
68    <var>sequence</var> = {}         -- the sequence of the 4 colors that the user did choose
 
6728
</pre></td></tr></table>
 
6729
<p>These are the essential variables for our algorithm. The user is free in
 
6730
selecting the sequence of the colored floors. We do initialize the sequence
 
6731
by an anonymous table that will be filled with the color names. An additional
 
6732
move counter will give us the current index into this table.
 
6733
</p>
 
6734
<table><tr><td>&nbsp;</td><td><pre class="example">70    function <var>gates</var>(<var>value</var>, <var>sender</var>)
 
6735
71        if <var>last</var> ~= <var>sender</var> then
 
6736
</pre></td></tr></table>
 
6737
<p>The callback function provides the sender, the <a href="#it_005fsensor">it_sensor</a>, that caused
 
6738
the action. It is the current sensor. As the marble can return to the last
 
6739
sensor, we have to check that it is a new sensor before taking any actions.
 
6740
A simple object comparison suffices.
 
6741
</p>
 
6742
<table><tr><td>&nbsp;</td><td><pre class="example">72            local <var>middle</var> = <var>last</var> + (<var>sender</var> - <var>last</var>)/<var>2</var>
 
6743
73            local <var>color</var> = <b>fl</b>(<var>middle</var>)[&quot;<var>_color</var>&quot;]
 
6744
</pre></td></tr></table>
 
6745
<p>We need to know the color of the floor strip that the marble did pass. We do
 
6746
calculate the position of the middle of this floor strip by position calculation.
 
6747
We simply take the middle position between the last and the current intersection.
 
6748
Once we have the middle position we can get the floor object and retrieve the
 
6749
private user attribute with the color description.
 
6750
</p>
 
6751
<table><tr><td>&nbsp;</td><td><pre class="example">74            if <var>color</var> == <var>nil</var> then return end  -- someone cheated, avoid throwing an exception
 
6752
</pre></td></tr></table>
 
6753
<p>In regular play we are guaranteed to get a color value. But just in case a
 
6754
gamer cheats he may have moved irregular without visiting neighboring sensors.
 
6755
Just avoid errors. The gamer can not score anyway.
 
6756
</p>
 
6757
<table><tr><td>&nbsp;</td><td><pre class="example">75            <b>st</b>(<i>no</i>[<var>color</var>..&quot;<var>#*</var>&quot;]):<b>close</b>()
 
6758
</pre></td></tr></table>
 
6759
<p>Knowing the color we want to close all doors on same colored floor strips. We
 
6760
did autoname the floors by matching name prefixes. Thus we can retrieve all
 
6761
floors of a given color by concatenating the color string with the suffix
 
6762
&lsquo;<samp>#*</samp>&rsquo; and requesting the named object repository. As we are interested in
 
6763
the doors we do request the stone above every floor. We provide a group of
 
6764
floors and get a group of stones. Not every floor has a door on top. That does
 
6765
not matter as only existing objects are added to the resulting stone group.
 
6766
Knowing the stones we just send them all a &lsquo;<samp>close</samp>&rsquo; message.
 
6767
</p>
 
6768
<table><tr><td>&nbsp;</td><td><pre class="example">76            <var>sequence</var>[<var>move</var>%<var>4</var>] = <var>color</var>
 
6769
</pre></td></tr></table>
 
6770
<p>We need to remember the sequence of colors. We just store the color name in
 
6771
the table at the index given by the move count modulo 4. Yes we could limit
 
6772
this statement to the first four moves. But who cares? The modulo operation
 
6773
is simpler than a conditional expression.
 
6774
</p>
 
6775
<table><tr><td>&nbsp;</td><td><pre class="example">77            if <var>move</var> &gt;= <var>3</var> then
 
6776
78                <b>st</b>(<i>no</i>[<var>sequence</var>[(<var>move</var>+<var>1</var>)%<var>4</var>]..&quot;<var>#*</var>&quot;]):<b>open</b>()
 
6777
79            end
 
6778
</pre></td></tr></table>
 
6779
<p>On the first 3 moves we just do close doors and remember the color sequence.
 
6780
But starting with the 4th move we need to open the next color in sequence.
 
6781
We do retrieve the color string of the next color from the sequence table by
 
6782
a simple modulo calculation. Having the color name we do the same trick as in
 
6783
line 75. But this time we do send the &lsquo;<samp>open</samp>&rsquo; messages to all affected doors.
 
6784
</p>
 
6785
<table><tr><td>&nbsp;</td><td><pre class="example">80            <var>move</var> = <var>move</var> + <var>1</var>
 
6786
81            <var>last</var> = <var>sender</var>
 
6787
</pre></td></tr></table>
 
6788
<p>Finally we just have to increase the move count and to remember the current
 
6789
sender as the last visited sensor.
 
6790
</p>
 
6791
<p>That is all to code a quite complex dynamic level idea like &quot;Color Maze&quot;.
 
6792
</p>
 
6793
<hr size="6">
 
6794
<a name="Weirdly-Wired"></a>
 
6795
<table cellpadding="1" cellspacing="1" border="0">
 
6796
<tr><td valign="middle" align="left">[<a href="#Color-Maze" title="Previous section in reading order"> &lt; </a>]</td>
 
6797
<td valign="middle" align="left">[<a href="#Introduction-to-Datatypes" title="Next section in reading order"> &gt; </a>]</td>
 
6798
<td valign="middle" align="left"> &nbsp; </td>
 
6799
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
6800
<td valign="middle" align="left">[<a href="#Advanced-Lua-Examples" title="Up section"> Up </a>]</td>
 
6801
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
6802
<td valign="middle" align="left"> &nbsp; </td>
 
6803
<td valign="middle" align="left"> &nbsp; </td>
 
6804
<td valign="middle" align="left"> &nbsp; </td>
 
6805
<td valign="middle" align="left"> &nbsp; </td>
 
6806
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
6807
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
6808
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
6809
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
6810
</tr></table>
 
6811
<a name="Weirdly-Wired-1"></a>
 
6812
<h3 class="subsection">5.3.2 Weirdly Wired</h3>
 
6813
<p>You should have restarted this level several times to notice the design changes
 
6814
of the floor pattern and the border panel stones besides the dynamic wiring of
 
6815
the stones.
 
6816
</p>
 
6817
<p>Let us view the Lua source code part. We did add a line count in the first two
 
6818
columns for reference purpose within this section. These line count number are
 
6819
not part of the source code itself!
 
6820
</p>
 
6821
<table><tr><td>&nbsp;</td><td><pre class="example">01      &lt;el:compatibility el:enigma=&quot;1.10&quot;&gt;
 
6822
02         &lt;el:dependency el:path=&quot;lib/libmath&quot; el:id=&quot;lib/libmath&quot; el:release=&quot;1&quot; el:preload=&quot;true&quot;/&gt;
 
6823
03      &lt;/el:compatibility&gt;
 
6824
...
 
6825
04    <i>ti</i>[&quot;<var> </var>&quot;] = {&quot;<b>fl_sahara</b>&quot;, <b>friction</b> = <var>3.5</var>, <b>adhesion</b> = <var>4.0</var>}
 
6826
05    <i>ti</i>[&quot;<var>a</var>&quot;] = {&quot;<b>fl_ivory</b>&quot;, <b>friction</b> = <var>3.5</var>, <b>adhesion</b> = <var>4.0</var>}
 
6827
06    <i>ti</i>[&quot;<var>b</var>&quot;] = {&quot;<b>fl_bright</b>&quot;, <b>friction</b> = <var>3.5</var>, <b>adhesion</b> = <var>4.0</var>}
 
6828
07    <i>ti</i>[&quot;<var>c</var>&quot;] = {&quot;<b>fl_platinum</b>&quot;, <b>friction</b> = <var>3.5</var>, <b>adhesion</b> = <var>4.0</var>}
 
6829
08    <i>ti</i>[&quot;<var>_</var>&quot;] = {&quot;<b>fl_water</b>&quot;}
 
6830
09    <i>ti</i>[&quot;<var>@</var>&quot;] = {&quot;#<b>ac_marble_black</b>&quot;}
 
6831
10    <i>ti</i>[&quot;<var>w</var>&quot;] = {&quot;<b>st_flat_movable</b>&quot;, &quot;<var>wood</var>#&quot;}
 
6832
11    <i>ti</i>[&quot;<var>t</var>&quot;] = {&quot;<b>it_trigger</b>&quot;, &quot;<var>trigger</var>#&quot;}
 
6833
12    <i>ti</i>[&quot;<var>d</var>&quot;] = {&quot;<b>st_blocker</b>&quot;, &quot;<var>door</var>#&quot;}
 
6834
13    <i>ti</i>[&quot;<var>o</var>&quot;] = {&quot;<b>st_oxyd</b>&quot;, <b>oxydcolor</b> = <var>OXYD_YELLOW</var>, <b>flavor</b> = &quot;<var>a</var>&quot;}
 
6835
14    <i>ti</i>[&quot;<var>O</var>&quot;] = {&quot;<b>st_oxyd</b>&quot;, <b>oxydcolor</b> = <var>OXYD_WHITE</var>, <b>flavor</b> = &quot;<var>a</var>&quot;}
 
6836
15    <i>ti</i>[&quot;<var>1</var>&quot;] = {&quot;<b>st_panel</b>&quot;, <b>cluster</b> = <var>1</var>}
 
6837
16    <i>ti</i>[&quot;<var>2</var>&quot;] = {&quot;<b>st_panel</b>&quot;, <b>cluster</b> = <var>2</var>}
 
6838
17    <i>ti</i>[&quot;<var>S</var>&quot;] = {&quot;<b>st_switch</b>&quot;, <b>target</b> = &quot;<var>easy_mode_call</var>&quot;}
 
6839
18
 
6840
19    <var>floors</var>  = {<i>ti</i>[&quot;<var> </var>&quot;], <i>ti</i>[&quot;<var>a</var>&quot;], <i>ti</i>[&quot;<var>b</var>&quot;], <i>ti</i>[&quot;<var>c</var>&quot;]}
 
6841
20    <var>polynom</var> = <i>lib</i>.<i>math</i>.<i>random_vector</i>(<var>10</var>, <var>4</var>)
 
6842
21
 
6843
22    function <var>myresolver</var>(<var>key</var>, <var>x</var>, <var>y</var>)
 
6844
23      if <var>key</var> == &quot;<var> </var>&quot; then
 
6845
24        return <var>floors</var>[<i>lib</i>.<i>math</i>.<i>cubic_polynomial</i>(<var>polynom</var>, <var>x</var>, <var>y</var>) % (#<var>floors</var>) + <var>1</var>]
 
6846
25      elseif    (<var>key</var> == &quot;<var>#</var>&quot;)
 
6847
26            or ((<var>key</var> == &quot;<var>_</var>&quot;) and (<i>random</i>(<var>4</var>) == <var>1</var>))
 
6848
27            or ((<var>key</var> == &quot;<var>S</var>&quot;) and <i>wo</i>[&quot;<b>IsDifficult</b>&quot;]) then
 
6849
28        return <i>ti</i>[&quot;&quot;..<i>random</i>(<var>2</var>)]
 
6850
29      else
 
6851
30        return <i>ti</i>[<var>key</var>]
 
6852
31      end
 
6853
32    end
 
6854
33
 
6855
34    <var>w</var>, <var>h</var> = <i>wo</i>(<var>myresolver</var>, &quot;<var> </var>&quot;, {
 
6856
35     -- 01234567890123456789
 
6857
36       &quot;<var>####################___________________</var>&quot;,
 
6858
37       &quot;<var>#                  #_____###o###_______</var>&quot;,
 
6859
38       &quot;<var>#   w   w t   t    #_____#d   d#_______</var>&quot;,
 
6860
39       &quot;<var>#     w   w t   t  #___### ### ###_____</var>&quot;,
 
6861
40       &quot;<var>#  w     t         #___#d d#_#d d#_____</var>&quot;,
 
6862
41       &quot;<var>#                  ##### ###_### ###___</var>&quot;,
 
6863
42       &quot;<var>S    w   w t @ t        d#___#_#d d#___</var>&quot;,
 
6864
43       &quot;<var>#                  #######_####### #___</var>&quot;,
 
6865
44       &quot;<var>#  w     t         #_______O  d# # o___</var>&quot;,
 
6866
45       &quot;<var>#     w   w t   t  #_______### ### #___</var>&quot;,
 
6867
46       &quot;<var>#   w   w t   t    #_________#d   d#___</var>&quot;,
 
6868
47       &quot;<var>#                  #_________###O###___</var>&quot;,
 
6869
48       &quot;<var>####################___________________</var>&quot;
 
6870
49    })
 
6871
50
 
6872
51    <var>door_p</var> = <i>lib</i>.<i>math</i>.<i>permutation</i>(<var>12</var>)
 
6873
52    <var>wire_p</var> = <i>lib</i>.<i>math</i>.<i>permutation</i>(<var>12</var>)
 
6874
53    <var>woods</var> = <i>no</i>[&quot;<var>wood</var>#*&quot;]
 
6875
54    <var>triggers</var> = <i>no</i>[&quot;<var>trigger</var>#*&quot;]
 
6876
55    <var>doors</var> = <i>no</i>[&quot;<var>door</var>#*&quot;]
 
6877
56
 
6878
57    for <var>j</var> = <var>1</var>, <var>12</var> do
 
6879
58      <var>triggers</var>[<var>j</var>].<b>target</b> = <var>doors</var>[<var>door_p</var>[<var>j</var>]]
 
6880
59    end
 
6881
60
 
6882
61    for <var>j</var> = <var>1</var>, <var>9</var> do
 
6883
62      <i>wo</i>:<b>add</b>({&quot;<b>ot_wire</b>&quot;,
 
6884
63              <b>anchor1</b> = <var>woods</var>[<var>wire_p</var>[<var>j</var> + <var>3</var>]],
 
6885
64              <b>anchor2</b> = <var>woods</var>[<var>wire_p</var>[<var>j</var>%<var>3</var> + <var>1</var>]]})
 
6886
65      <i>wo</i>:<b>add</b>({&quot;<b>ot_wire</b>&quot;, <b>name</b> = &quot;<var>obsolete_wire</var>#&quot;,
 
6887
66              <b>anchor1</b> = <var>woods</var>[<var>wire_p</var>[<var>j</var> + <var>3</var>]],
 
6888
67              <b>anchor2</b> = <var>woods</var>[<var>wire_p</var>[<var>j</var>%<var>9</var> + <var>4</var>]]})
 
6889
68    end
 
6890
69
 
6891
70    function <var>easy_mode_call</var>(<var>is_on</var>, <var>sender</var>)
 
6892
71      if <var>is_on</var> then
 
6893
72        <i>no</i>[&quot;<var>obsolete_wire</var>#*&quot;]:<b>kill</b>()
 
6894
73      else
 
6895
74        for <var>j</var> = <var>1</var>, <var>9</var> do
 
6896
75          <i>wo</i>:<b>add</b>({&quot;<b>ot_wire</b>&quot;, <b>name</b> = &quot;<var>obsolete_wire</var>#&quot;,
 
6897
76                <b>anchor1</b> = <var>woods</var>[<var>wire_p</var>[<var>j</var> + <var>3</var>]],
 
6898
77                <b>anchor2</b> = <var>woods</var>[<var>wire_p</var>[<var>j</var>%<var>9</var> + <var>4</var>]]})
 
6899
78        end
 
6900
79      end
 
6901
80    end
 
6902
</pre></td></tr></table>
 
6903
<p>How is this versatility in design and action achieved as the last lines 69 to
 
6904
79 obviously deal just with the easy mode diffs? Let us analyse the lines
 
6905
that do the real work.
 
6906
</p>
 
6907
<table><tr><td>&nbsp;</td><td><pre class="example">01       &lt;el:compatibility el:enigma=&quot;1.10&quot;&gt;
 
6908
02         &lt;el:dependency el:path=&quot;lib/libmath&quot; el:id=&quot;lib/libmath&quot; el:release=&quot;1&quot; el:preload=&quot;true&quot;/&gt;
 
6909
03       &lt;/el:compatibility&gt;
 
6910
</pre></td></tr></table>
 
6911
<p>We make use of some functions of the <a href="#libmath">libmath</a> library. Thus we need to
 
6912
preload it, besides declaration of compatibility to Enigma 1.10.
 
6913
</p>
 
6914
<table><tr><td>&nbsp;</td><td><pre class="example">04    <i>ti</i>[&quot;<var> </var>&quot;] = {&quot;<b>fl_sahara</b>&quot;, <b>friction</b> = <var>3.5</var>, <b>adhesion</b> = <var>4.0</var>}
 
6915
05    <i>ti</i>[&quot;<var>a</var>&quot;] = {&quot;<b>fl_ivory</b>&quot;, <b>friction</b> = <var>3.5</var>, <b>adhesion</b> = <var>4.0</var>}
 
6916
06    <i>ti</i>[&quot;<var>b</var>&quot;] = {&quot;<b>fl_bright</b>&quot;, <b>friction</b> = <var>3.5</var>, <b>adhesion</b> = <var>4.0</var>}
 
6917
07    <i>ti</i>[&quot;<var>c</var>&quot;] = {&quot;<b>fl_platinum</b>&quot;, <b>friction</b> = <var>3.5</var>, <b>adhesion</b> = <var>4.0</var>}
 
6918
</pre></td></tr></table>
 
6919
<p>Four floor types that the dynamic floor is composed of. They all are unified
 
6920
in the &lsquo;<samp>friction</samp>&rsquo; and &lsquo;<samp>adhesion</samp>&rsquo; to provide smooth movement on the
 
6921
stylish floor.
 
6922
</p>
 
6923
<table><tr><td>&nbsp;</td><td><pre class="example">10    <i>ti</i>[&quot;<var>w</var>&quot;] = {&quot;<b>st_flat_movable</b>&quot;, &quot;<var>wood</var>#&quot;}
 
6924
11    <i>ti</i>[&quot;<var>t</var>&quot;] = {&quot;<b>it_trigger</b>&quot;, &quot;<var>trigger</var>#&quot;}
 
6925
12    <i>ti</i>[&quot;<var>d</var>&quot;] = {&quot;<b>st_blocker</b>&quot;, &quot;<var>door</var>#&quot;}
 
6926
</pre></td></tr></table>
 
6927
<p>The movable stone that will be wired, the target triggers and the doors to be
 
6928
opened. All are autonamed for group retrieval from the named object repository.
 
6929
</p>
 
6930
<table><tr><td>&nbsp;</td><td><pre class="example">13    <i>ti</i>[&quot;<var>o</var>&quot;] = {&quot;<b>st_oxyd</b>&quot;, <b>oxydcolor</b> = <var>OXYD_YELLOW</var>, <b>flavor</b> = &quot;<var>a</var>&quot;}
 
6931
14    <i>ti</i>[&quot;<var>O</var>&quot;] = {&quot;<b>st_oxyd</b>&quot;, <b>oxydcolor</b> = <var>OXYD_WHITE</var>, <b>flavor</b> = &quot;<var>a</var>&quot;}
 
6932
</pre></td></tr></table>
 
6933
<p>A minor design aspect: selecting two unique colors for the <a href="#st_005foxyd">st_oxyd</a>s.
 
6934
</p>
 
6935
<table><tr><td>&nbsp;</td><td><pre class="example">15    <i>ti</i>[&quot;<var>1</var>&quot;] = {&quot;<b>st_panel</b>&quot;, <b>cluster</b> = <var>1</var>}
 
6936
16    <i>ti</i>[&quot;<var>2</var>&quot;] = {&quot;<b>st_panel</b>&quot;, <b>cluster</b> = <var>2</var>}
 
6937
</pre></td></tr></table>
 
6938
<p>The base of the prominent all time different looking <a href="#st_005fpanel">st_panel</a> border
 
6939
design. Two tiles with panel stones assigned to two different clusters. The
 
6940
engine will automatically join all neighboring stones of the same cluster to
 
6941
big unified blocks. Now we just need to assign these tiles to the different
 
6942
grid positions.
 
6943
</p>
 
6944
<table><tr><td>&nbsp;</td><td><pre class="example">17    <i>ti</i>[&quot;<var>S</var>&quot;] = {&quot;<b>st_switch</b>&quot;, <b>target</b> = &quot;<var>easy_mode_call</var>&quot;}
 
6945
</pre></td></tr></table>
 
6946
<p>The left border switch that will just be used in easy mode. It is blocked in
 
6947
line 27 to not appear in the regular mode. The target is the callback function
 
6948
of lines 71 to 81.
 
6949
</p>
 
6950
<table><tr><td>&nbsp;</td><td><pre class="example">19    <var>floors</var>  = {<i>ti</i>[&quot;<var> </var>&quot;], <i>ti</i>[&quot;<var>a</var>&quot;], <i>ti</i>[&quot;<var>b</var>&quot;], <i>ti</i>[&quot;<var>c</var>&quot;]}
 
6951
20    <var>polynom</var> = <i>lib</i>.<i>math</i>.<i>random_vector</i>(<var>10</var>, <var>4</var>)
 
6952
</pre></td></tr></table>
 
6953
<p>Preparations for the floor design. The four floor tiles are stored in a table
 
6954
for number based index access. Ten random numbers in the range 1 to 4 are
 
6955
stored in a table, which we will use as polynom coefficients later on.
 
6956
</p>
 
6957
<table><tr><td>&nbsp;</td><td><pre class="example">22    function <var>myresolver</var>(<var>key</var>, <var>x</var>, <var>y</var>)
 
6958
34    <var>w</var>, <var>h</var> = <i>wo</i>(<var>myresolver</var>, &quot;<var> </var>&quot;, {
 
6959
</pre></td></tr></table>
 
6960
<p>Up to now we did look up the keys used in the map from our tiles repository
 
6961
&lsquo;<samp>ti</samp>&rsquo; that was the first argument of the world initialization call. But
 
6962
now we use a <a href="#Custom-Resolver">Custom Resolver</a>.
 
6963
The function starting in line 22 is called on every tile to be resolved. It has
 
6964
the task of delivering the appropriate tile.
 
6965
</p>
 
6966
<table><tr><td>&nbsp;</td><td><pre class="example">23      if <var>key</var> == &quot;<var> </var>&quot; then
 
6967
24        return <var>floors</var>[<i>lib</i>.<i>math</i>.<i>cubic_polynomial</i>(<var>polynom</var>, <var>x</var>, <var>y</var>) % (#<var>floors</var>) + <var>1</var>]
 
6968
</pre></td></tr></table>
 
6969
<p>These two lines generate the always changing floor design. For every map key
 
6970
&lsquo;<samp> </samp>&rsquo; we calculate the cubic polynomial that is randomized due to the
 
6971
coefficients. The resulting number is limited to the number of our four floors.
 
6972
This number is taken as the index into our &lsquo;<samp>floors</samp>&rsquo; table and the resulting
 
6973
tile definition is returned.
 
6974
</p>
 
6975
<table><tr><td>&nbsp;</td><td><pre class="example">25      elseif    (<var>key</var> == &quot;<var>#</var>&quot;)
 
6976
26            or ((<var>key</var> == &quot;<var>_</var>&quot;) and (<i>random</i>(<var>4</var>) == <var>1</var>))
 
6977
27            or ((<var>key</var> == &quot;<var>S</var>&quot;) and <i>wo</i>[&quot;<b>IsDifficult</b>&quot;]) then
 
6978
28        return <i>ti</i>[&quot;&quot;..<i>random</i>(<var>2</var>)]
 
6979
</pre></td></tr></table>
 
6980
<p>And now we cluster the border panels. First we need to decide where to put
 
6981
panels at all. The positions marked &lsquo;<samp>#</samp>&rsquo; in the map are for sure.
 
6982
Additionally we choose randomly every 4th &lsquo;<samp>_</samp>&rsquo; position to be a panel
 
6983
instead of being a water floor. Finally we replace just in difficult mode
 
6984
the switch marked as &lsquo;<samp>S</samp>&rsquo; by a panel stone. Now we need to assign to this
 
6985
grid position one of the two panel cluster tiles. We simply generate a random
 
6986
number out of 1 and 2. But we do need a string as the tiles key. We force Lua
 
6987
to convert the number to string by concatenating an empty string &lsquo;<samp>&quot;&quot;</samp>&rsquo; with
 
6988
the random number. Choosing the right panel variants to build up closed clusters
 
6989
is done by the engine.
 
6990
</p>
 
6991
<table><tr><td>&nbsp;</td><td><pre class="example">29      else
 
6992
30        return <i>ti</i>[<var>key</var>]
 
6993
</pre></td></tr></table>
 
6994
<p>Finally for all other keys that need no special treatment we just take the
 
6995
tile definition as stored in the tiles repository.
 
6996
</p>
 
6997
<table><tr><td>&nbsp;</td><td><pre class="example">34    <var>w</var>, <var>h</var> = <i>wo</i>(<var>myresolver</var>, &quot;<var> </var>&quot;, {
 
6998
35     -- 01234567890123456789
 
6999
36       &quot;<var>####################___________________</var>&quot;,
 
7000
37       &quot;<var>#                  #_____###o###_______</var>&quot;,
 
7001
38       &quot;<var>#   w   w t   t    #_____#d   d#_______</var>&quot;,
 
7002
39       &quot;<var>#     w   w t   t  #___### ### ###_____</var>&quot;,
 
7003
...
 
7004
</pre></td></tr></table>
 
7005
<p>The map uses the keys as interpreted by the custom resolver. Thus all mandatory
 
7006
panel stones are marked by &lsquo;<samp>#</samp>&rsquo; and all may be water by &lsquo;<samp>_</samp>&rsquo;. All spaces
 
7007
&lsquo;<samp> </samp>&rsquo; do not stand for the sahara floor definition in the tiles repository,
 
7008
but are floor positions for our design floor set up in the custom resolver.
 
7009
Note that even the &lsquo;<samp>w</samp>&rsquo; marked tiles will set a design floor, as the
 
7010
default floor is &lsquo;<samp> </samp>&rsquo;, too.
 
7011
</p>
 
7012
<table><tr><td>&nbsp;</td><td><pre class="example">51    <var>door_p</var> = <i>lib</i>.<i>math</i>.<i>permutation</i>(<var>12</var>)
 
7013
52    <var>wire_p</var> = <i>lib</i>.<i>math</i>.<i>permutation</i>(<var>12</var>)
 
7014
</pre></td></tr></table>
 
7015
<p>Now let us shuffle the trigger/door assignment and the wire distribution. We
 
7016
do this by permuting 12 index numbers to be used for door and wire access.
 
7017
</p>
 
7018
<table><tr><td>&nbsp;</td><td><pre class="example">53    <var>woods</var> = <i>no</i>[&quot;<var>wood</var>#*&quot;]
 
7019
54    <var>triggers</var> = <i>no</i>[&quot;<var>trigger</var>#*&quot;]
 
7020
55    <var>doors</var> = <i>no</i>[&quot;<var>door</var>#*&quot;]
 
7021
</pre></td></tr></table>
 
7022
<p>Get the groups of movable stones, triggers and doors. It is essential to do this
 
7023
once and to store the resulting groups as we want to index the group members.
 
7024
Repeated access to the named object repository does not guarantee a stable
 
7025
sorting of the result groups. Thus we operate on the stable once retrieved
 
7026
and stored groups.
 
7027
</p>
 
7028
<table><tr><td>&nbsp;</td><td><pre class="example">57    for <var>j</var> = <var>1</var>, <var>12</var> do
 
7029
58      <var>triggers</var>[<var>j</var>].<b>target</b> = <var>doors</var>[<var>door_p</var>[<var>j</var>]]
 
7030
59    end
 
7031
</pre></td></tr></table>
 
7032
<p>A random assignment of the triggers to the doors. Every triggers gets a random
 
7033
indexed member of the door group as target. Note the alternative attribute
 
7034
member access on the trigger. Instead of embracing the attributes name in
 
7035
square brackets and quoting the string constant as &lsquo;<samp>[&quot;target&quot;]</samp>&rsquo; the
 
7036
author did prefer to write &lsquo;<samp>.target</samp>&rsquo;. That is a legal Lua alternative
 
7037
statement as long as the attribute&rsquo;s name is a legal Lua name (see <a href="#Caveats">Caveats</a>).
 
7038
</p>
 
7039
<table><tr><td>&nbsp;</td><td><pre class="example">61    for <var>j</var> = <var>1</var>, <var>9</var> do
 
7040
62      <i>wo</i>:<b>add</b>({&quot;<b>ot_wire</b>&quot;,
 
7041
63              <b>anchor1</b> = <var>woods</var>[<var>wire_p</var>[<var>j</var> + <var>3</var>]],
 
7042
64              <b>anchor2</b> = <var>woods</var>[<var>wire_p</var>[<var>j</var>%<var>3</var> + <var>1</var>]]})
 
7043
</pre></td></tr></table>
 
7044
<p>Finally we need to add the <a href="#ot_005fwire">ot_wire</a> between our movable stones. This can
 
7045
not be done within the map. We need to use the <a href="#World">World</a> method
 
7046
&lsquo;<samp>wo:add()</samp>&rsquo;, which takes the two connected stones as two anchor attributes.
 
7047
We select the first 3 stones of our wood group as stones to be connected with
 
7048
3 other stones of the indices 4 to 12. Thus we take in every loop as the first
 
7049
anchor one of the stones 4 to 12 and connect it to one of the first 3 stones by
 
7050
a simple modulo operation. The first three stones now have three wires and are
 
7051
finished. The last 9 stones have just one wire.
 
7052
</p>
 
7053
<table><tr><td>&nbsp;</td><td><pre class="example">65      <i>wo</i>:<b>add</b>({&quot;<b>ot_wire</b>&quot;, <b>name</b> = &quot;<var>obsolete_wire</var>#&quot;,
 
7054
66              <b>anchor1</b> = <var>woods</var>[<var>wire_p</var>[<var>j</var> + <var>3</var>]],
 
7055
67              <b>anchor2</b> = <var>woods</var>[<var>wire_p</var>[<var>j</var>%<var>9</var> + <var>4</var>]]})
 
7056
68    end
 
7057
</pre></td></tr></table>
 
7058
<p>Now we wire these remaining 9 stones in sequence, in a closed circle. That gives
 
7059
each stone 2 additional wires. We do this by connecting each of the stones 4 to
 
7060
11 with its successor and finally connecting stone 12 to stone 4, what is done
 
7061
by the modulo operation. This completes the level for the regular mode.
 
7062
As preparation for the easy mode we do autoname these additional wires.
 
7063
</p>
 
7064
<table><tr><td>&nbsp;</td><td><pre class="example">71    function <var>easy_mode_call</var>(<var>is_on</var>, <var>sender</var>)
 
7065
72      if <var>is_on</var> then
 
7066
73        <i>no</i>[&quot;<var>obsolete_wire</var>#*&quot;]:<b>kill</b>()
 
7067
</pre></td></tr></table>
 
7068
<p>Just for the easy mode we added a switch to remove and recreate the additional
 
7069
wires. As we named these obsolete wires we can simply kill all of them in a
 
7070
single call by applying the &lsquo;<samp>kill()</samp>&rsquo; method to the group of these wires.
 
7071
</p>
 
7072
<table><tr><td>&nbsp;</td><td><pre class="example">73      else
 
7073
74        for <var>j</var> = <var>1</var>, <var>9</var> do
 
7074
75          <i>wo</i>:<b>add</b>({&quot;<b>ot_wire</b>&quot;, <b>name</b> = &quot;<var>obsolete_wire</var>#&quot;,
 
7075
76                <b>anchor1</b> = <var>woods</var>[<var>wire_p</var>[<var>j</var> + <var>3</var>]],
 
7076
77                <b>anchor2</b> = <var>woods</var>[<var>wire_p</var>[<var>j</var>%<var>9</var> + <var>4</var>]]})
 
7077
78        end
 
7078
79      end
 
7079
</pre></td></tr></table>
 
7080
<p>When the user switches off again, the wires should be recreated. That is done
 
7081
by the same code as lines 65 to 68. Note that is essential that we stored and
 
7082
kept the used wire permutation in the variable &lsquo;<samp>wire_p</samp>&rsquo;.
 
7083
</p>
 
7084
 
 
7085
<hr size="6">
 
7086
<a name="Introduction-to-Datatypes"></a>
 
7087
<table cellpadding="1" cellspacing="1" border="0">
 
7088
<tr><td valign="middle" align="left">[<a href="#Weirdly-Wired" title="Previous section in reading order"> &lt; </a>]</td>
 
7089
<td valign="middle" align="left">[<a href="#Syntax-and-Conventions" title="Next section in reading order"> &gt; </a>]</td>
 
7090
<td valign="middle" align="left"> &nbsp; </td>
 
7091
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7092
<td valign="middle" align="left">[<a href="#Lua-API" title="Up section"> Up </a>]</td>
 
7093
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7094
<td valign="middle" align="left"> &nbsp; </td>
 
7095
<td valign="middle" align="left"> &nbsp; </td>
 
7096
<td valign="middle" align="left"> &nbsp; </td>
 
7097
<td valign="middle" align="left"> &nbsp; </td>
 
7098
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7099
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7100
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7101
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7102
</tr></table>
 
7103
<a name="Introduction-to-Datatypes-1"></a>
 
7104
<h2 class="section">5.4 Introduction to Datatypes</h2>
 
7105
 
 
7106
<p>Before describing the datatypes in detail let us look at the used common
 
7107
concepts and conventions.
 
7108
</p>
 
7109
<table class="menu" border="0" cellspacing="0">
 
7110
<tr><td align="left" valign="top"><a href="#Syntax-and-Conventions">5.4.1 Syntax and Conventions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Abbreviations in syntax descriptions
 
7111
</td></tr>
 
7112
<tr><td align="left" valign="top"><a href="#Value-and-Reference">5.4.2 Value and Reference</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Basic differences of datatypes
 
7113
</td></tr>
 
7114
<tr><td align="left" valign="top"><a href="#Polymorphism-and-Overloading">5.4.3 Polymorphism and Overloading</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">   Methods of Object Orientation
 
7115
</td></tr>
 
7116
<tr><td align="left" valign="top"><a href="#Pseudo-Datatypes">5.4.4 Pseudo Datatypes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               Reinterpretation of datatypes
 
7117
</td></tr>
 
7118
</table>
 
7119
 
 
7120
 
 
7121
<hr size="6">
 
7122
<a name="Syntax-and-Conventions"></a>
 
7123
<table cellpadding="1" cellspacing="1" border="0">
 
7124
<tr><td valign="middle" align="left">[<a href="#Introduction-to-Datatypes" title="Previous section in reading order"> &lt; </a>]</td>
 
7125
<td valign="middle" align="left">[<a href="#Value-and-Reference" title="Next section in reading order"> &gt; </a>]</td>
 
7126
<td valign="middle" align="left"> &nbsp; </td>
 
7127
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7128
<td valign="middle" align="left">[<a href="#Introduction-to-Datatypes" title="Up section"> Up </a>]</td>
 
7129
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7130
<td valign="middle" align="left"> &nbsp; </td>
 
7131
<td valign="middle" align="left"> &nbsp; </td>
 
7132
<td valign="middle" align="left"> &nbsp; </td>
 
7133
<td valign="middle" align="left"> &nbsp; </td>
 
7134
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7135
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7136
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7137
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7138
</tr></table>
 
7139
<a name="Syntax-and-Conventions-1"></a>
 
7140
<h3 class="subsection">5.4.1 Syntax and Conventions</h3>
 
7141
 
 
7142
<p>In the following subchapters we will describe the datatypes, their operators
 
7143
and methods, and global functions in detail. We need some syntax and
 
7144
conventions for an efficient description.
 
7145
</p>
 
7146
<p>The following short names, and those derived by appending a number, do always
 
7147
represent a value of the corresponding type:
 
7148
</p><ul>
 
7149
<li> pos - <a href="#Position">Position</a>
 
7150
</li><li> obj - <a href="#Object">Object</a>
 
7151
</li><li> polist - <a href="#PositionList">PositionList</a>
 
7152
</li><li> group - <a href="#Group">Group</a>
 
7153
</li><li> cpos - constant position, a table with two numbers like {2, 3}
 
7154
</li></ul>
 
7155
 
 
7156
<p>On syntax descriptions of datatype operators or methods we need to list allowed
 
7157
argument types. Often several types are possible and you are allowed to choose
 
7158
any of a list. In these cases we enlist the types enclosed by &lsquo;<samp>&lt;</samp>&rsquo; and
 
7159
&lsquo;<samp>&gt;</samp>&rsquo; and separated by &lsquo;<samp>|</samp>&rsquo;. These characters are not part of the
 
7160
operator or method itself and should thus not be typed into the level code. Note
 
7161
that we keep square braces &lsquo;<samp>[</samp>&rsquo;, &lsquo;<samp>]</samp>&rsquo; and curly braces &lsquo;<samp>{</samp>&rsquo;,
 
7162
&lsquo;<samp>}</samp>&rsquo; as literal Lua symbols. When these braces appear in the syntax you
 
7163
need to type them in the code. E.g. the following syntax rule:
 
7164
</p>
 
7165
<table><tr><td>&nbsp;</td><td><pre class="example">result = <var>pos</var> + &lt;<var>pos</var> | <var>obj</var> | <var>cpos</var> | <var>polist</var>&gt;
 
7166
</pre></td></tr></table>
 
7167
 
 
7168
<p>allows you to write any of the following lines in your level
 
7169
</p>
 
7170
<table><tr><td>&nbsp;</td><td><pre class="example"><var>result</var> = <var>pos</var> + <var>pos</var>
 
7171
<var>result</var> = <var>pos</var> + <var>obj</var>
 
7172
<var>result</var> = <var>pos</var> + <var>cpos</var>
 
7173
<var>result</var> = <var>pos</var> + <var>polist</var>
 
7174
</pre></td></tr></table>
 
7175
 
 
7176
<p>But a syntax rule like
 
7177
</p>
 
7178
<table><tr><td>&nbsp;</td><td><pre class="example">x = pos[&quot;x&quot;]
 
7179
</pre></td></tr></table>
 
7180
 
 
7181
<p>requires the Lua square brackets to be coded literally. Of course you are
 
7182
still free to name your position variable and the resulting value variable
 
7183
whatever you like.
 
7184
</p>
 
7185
 
 
7186
<hr size="6">
 
7187
<a name="Value-and-Reference"></a>
 
7188
<table cellpadding="1" cellspacing="1" border="0">
 
7189
<tr><td valign="middle" align="left">[<a href="#Syntax-and-Conventions" title="Previous section in reading order"> &lt; </a>]</td>
 
7190
<td valign="middle" align="left">[<a href="#Polymorphism-and-Overloading" title="Next section in reading order"> &gt; </a>]</td>
 
7191
<td valign="middle" align="left"> &nbsp; </td>
 
7192
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7193
<td valign="middle" align="left">[<a href="#Introduction-to-Datatypes" title="Up section"> Up </a>]</td>
 
7194
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7195
<td valign="middle" align="left"> &nbsp; </td>
 
7196
<td valign="middle" align="left"> &nbsp; </td>
 
7197
<td valign="middle" align="left"> &nbsp; </td>
 
7198
<td valign="middle" align="left"> &nbsp; </td>
 
7199
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7200
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7201
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7202
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7203
</tr></table>
 
7204
<a name="Value-and-Reference-1"></a>
 
7205
<h3 class="subsection">5.4.2 Value and Reference</h3>
 
7206
 
 
7207
<p>Another most important aspect of Lua data types is the difference between
 
7208
values and references. Values are numbers, booleans like &lsquo;<samp>true</samp>&rsquo; and
 
7209
&lsquo;<samp>false</samp>&rsquo;, strings and &lsquo;<samp>nil</samp>&rsquo;. The only reference data type is the Lua
 
7210
table.
 
7211
</p>
 
7212
<p>Values are always constant. They can never be modified. You assign a value to
 
7213
a variable. On calculations you may assign another value to the same variable.
 
7214
But the original value does never get modified. That should be obvious if you
 
7215
think of values like &lsquo;<samp>true</samp>&rsquo; or numbers like &lsquo;<samp>7</samp>&rsquo;. But it is even true
 
7216
for strings like <code>&quot;hello&quot;</code>. When you append two strings you get a new
 
7217
string. But the components themselves do not change. All &quot;string modifying&quot;
 
7218
methods do return a new string with the resulting value. Thus a variable
 
7219
containing the value of the original string still contains the unmodified value.
 
7220
</p>
 
7221
<p>Tables are of a totally opposite nature. They represent data containers. In Lua
 
7222
you are just handling references to these containers. When you add or change
 
7223
a value within the container the table reference remains unmodified but the table
 
7224
contents changes. Thus two variable containing both references to the same
 
7225
table will afterwards both reference the same modified table.
 
7226
</p>
 
7227
<p>We will denote for every new data type the character of being a value or a
 
7228
reference. If you are unfamiliar to the resulting effects you may want to read
 
7229
the appendix about <a href="#Caveats">Caveats</a>.
 
7230
</p>
 
7231
 
 
7232
<hr size="6">
 
7233
<a name="Polymorphism-and-Overloading"></a>
 
7234
<table cellpadding="1" cellspacing="1" border="0">
 
7235
<tr><td valign="middle" align="left">[<a href="#Value-and-Reference" title="Previous section in reading order"> &lt; </a>]</td>
 
7236
<td valign="middle" align="left">[<a href="#Pseudo-Datatypes" title="Next section in reading order"> &gt; </a>]</td>
 
7237
<td valign="middle" align="left"> &nbsp; </td>
 
7238
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7239
<td valign="middle" align="left">[<a href="#Introduction-to-Datatypes" title="Up section"> Up </a>]</td>
 
7240
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7241
<td valign="middle" align="left"> &nbsp; </td>
 
7242
<td valign="middle" align="left"> &nbsp; </td>
 
7243
<td valign="middle" align="left"> &nbsp; </td>
 
7244
<td valign="middle" align="left"> &nbsp; </td>
 
7245
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7246
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7247
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7248
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7249
</tr></table>
 
7250
<a name="Polymorphism-and-Overloading-1"></a>
 
7251
<h3 class="subsection">5.4.3 Polymorphism and Overloading</h3>
 
7252
 
 
7253
<a name="index-polymorphism"></a>
 
7254
<p>You may have noticed that in many operations you can use an <a href="#Object">Object</a> as
 
7255
a <a href="#Position">Position</a>. This is due to the fact that objects support most of the
 
7256
position features as well. Objects are no positions, but they do speak the
 
7257
same language. This feature is called &lsquo;<samp>polymorphism</samp>&rsquo; and helps you to
 
7258
simplify your code significantly. In the following subchapters you should
 
7259
carefully look at the syntax to understand which types of arguments do fit in
 
7260
seamlessly.
 
7261
</p>
 
7262
<a name="index-overloading"></a>
 
7263
<p>The number of usable operators is limited by Lua. Thus an addition of two data
 
7264
by the &lsquo;<samp>+</samp>&rsquo; operator causes different actions depending on the involved data
 
7265
themselves. An addition of two positions results in a vectorial addition. But
 
7266
the addition of two groups results in a join of the groups. This reuse of a
 
7267
single operator is called &lsquo;<samp>overloading</samp>&rsquo;.
 
7268
</p>
 
7269
<p>Overloading combined with polymorphism can cause situations that are ambiguous
 
7270
by design. E.g. we decided to allow the addition of a position with an object
 
7271
resulting in the vectorial addition of the object&rsquo;s position to the first one.
 
7272
At the same time we want to be able to join an object with an existing group
 
7273
by usage of the &lsquo;<samp>+</samp>&rsquo; operator. But what should be the result of an addition
 
7274
of two objects? The vectorial addition of their positions, or the join of both
 
7275
objects in a new group? Either makes sense and would be useful. In this case
 
7276
we decided for the first possibility as the minus operation as the vectorial
 
7277
difference between two objects is a very important feature. Anyway you can
 
7278
always force the operation of your choice to be applied by transforming one
 
7279
object either into a position or a group. Please read carefully the given
 
7280
syntax rules for a clear understanding of the results.
 
7281
</p>
 
7282
 
 
7283
<hr size="6">
 
7284
<a name="Pseudo-Datatypes"></a>
 
7285
<table cellpadding="1" cellspacing="1" border="0">
 
7286
<tr><td valign="middle" align="left">[<a href="#Polymorphism-and-Overloading" title="Previous section in reading order"> &lt; </a>]</td>
 
7287
<td valign="middle" align="left">[<a href="#Position" title="Next section in reading order"> &gt; </a>]</td>
 
7288
<td valign="middle" align="left"> &nbsp; </td>
 
7289
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7290
<td valign="middle" align="left">[<a href="#Introduction-to-Datatypes" title="Up section"> Up </a>]</td>
 
7291
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7292
<td valign="middle" align="left"> &nbsp; </td>
 
7293
<td valign="middle" align="left"> &nbsp; </td>
 
7294
<td valign="middle" align="left"> &nbsp; </td>
 
7295
<td valign="middle" align="left"> &nbsp; </td>
 
7296
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7297
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7298
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7299
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7300
</tr></table>
 
7301
<a name="Pseudo-Datatypes-1"></a>
 
7302
<h3 class="subsection">5.4.4 Pseudo Datatypes</h3>
 
7303
 
 
7304
<p>Even though we introduce just the ten additional fundamental datatypes as
 
7305
described in the following subchapters, the API does additionally differ
 
7306
the same datatype according to its usage. E.g. a standard Lua number is used to
 
7307
describe the <a href="#state">state</a> of an object. Just in rare occurrences the state will
 
7308
reflect a real number like the state of <a href="#ot_005fcounter">ot_counter</a>. For most objects
 
7309
the state will just be one of a given set of allowed values, which happen to
 
7310
be described by numbers by the API. Thus we speak of a pseudo datatype
 
7311
in the case of <a href="#state">state</a> values.
 
7312
</p>
 
7313
<p>The API provides <a href="#Common-Constants">Common Constants</a> for all pseudo datatypes, all written in
 
7314
upper case letters only. You should use exclusively these constants and never
 
7315
their equivalent basic number or other type values. The usage of the constants
 
7316
makes the level code readable and upward compatible if we ever should have the
 
7317
need of changing the assigned values or transforming the pseudo datatype to
 
7318
another datatype.
 
7319
</p>
 
7320
<p>There is one abstract datatype that needs to be mentioned, as it uses two
 
7321
different pseudo datatypes at the same time. This special case is the datatype
 
7322
used to describe the &lsquo;<samp>direction</samp>&rsquo; or &lsquo;<samp>orientation</samp>&rsquo;. Both are
 
7323
essentially the same. But we speak of &lsquo;<samp>orientation</samp>&rsquo; if we are just
 
7324
interested in enlisting the main directions by number values for the purpose of
 
7325
identification. The constant values are given as <a href="#orientations">orientations</a>.
 
7326
</p>
 
7327
<p>Sometimes you need values for calculation of position offsets. In this case we
 
7328
speak of a &lsquo;<samp>direction</samp>&rsquo; and use <a href="#Position">Position</a> values as offset vectors.
 
7329
The most common values are given as constants as listed in subchapter
 
7330
<a href="#direction-offsets">direction offsets</a>. Note that our &lsquo;<samp>direction</samp>&rsquo; values have no need of
 
7331
being normalized to the length of 1.
 
7332
</p>
 
7333
<p>A given &lsquo;<samp>orientation</samp>&rsquo; can be transformed into a &lsquo;<samp>direction</samp>&rsquo; value by
 
7334
the conversion table <a href="#ORI2DIR">ORI2DIR</a>.
 
7335
</p>
 
7336
 
 
7337
<hr size="6">
 
7338
<a name="Position"></a>
 
7339
<table cellpadding="1" cellspacing="1" border="0">
 
7340
<tr><td valign="middle" align="left">[<a href="#Pseudo-Datatypes" title="Previous section in reading order"> &lt; </a>]</td>
 
7341
<td valign="middle" align="left">[<a href="#Position-Addition-and-Subtraction" title="Next section in reading order"> &gt; </a>]</td>
 
7342
<td valign="middle" align="left"> &nbsp; </td>
 
7343
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7344
<td valign="middle" align="left">[<a href="#Lua-API" title="Up section"> Up </a>]</td>
 
7345
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7346
<td valign="middle" align="left"> &nbsp; </td>
 
7347
<td valign="middle" align="left"> &nbsp; </td>
 
7348
<td valign="middle" align="left"> &nbsp; </td>
 
7349
<td valign="middle" align="left"> &nbsp; </td>
 
7350
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7351
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7352
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7353
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7354
</tr></table>
 
7355
<a name="Position-1"></a>
 
7356
<h2 class="section">5.5 Position</h2>
 
7357
 
 
7358
<p>A position is a Lua userdata type introduced by Enigma to handle world positions
 
7359
as introduced in <a href="#World_0027s-Shape-and-Coordinates">World&rsquo;s Shape and Coordinates</a>. A position is a value
 
7360
and thus constant. Once a position is created it can not be modified anymore.
 
7361
But you can calculate with positions by usage of operators. When you add two
 
7362
position values you receive the resulting position as a new value.
 
7363
</p>
 
7364
<p>In contrast to <a href="#Object">Object</a>s positions have an unlimited lifetime and will never
 
7365
cease to exist. Thus you can store position values in global variables and
 
7366
keep them as long as you need. The values are constant and will not change even
 
7367
if the objects from which they have been derived have meanwhile moved to another
 
7368
grid or even been killed.
 
7369
</p>
 
7370
<p>Position values are not limited to valid world coordinates. Both coordinates
 
7371
can take every positive or negative number and zero, too. Thus you can calculate
 
7372
with positions and use them to express offsets between two other positions.
 
7373
</p>
 
7374
<p>Positions are created by the <a href="#Positions-Repository">Positions Repository</a> singleton handle,
 
7375
that allows you to convert coordinates, objects, position constants into
 
7376
positions. The handle allows you to retrieve existing named positions, too.
 
7377
Furtheron positions are implicitly created as return values of many operations.
 
7378
</p>
 
7379
<p>For task driven samples see section <a href="#Position-Tasks">Position Tasks</a>.
 
7380
</p>
 
7381
<p>Let us look at the supported operators:
 
7382
</p>
 
7383
<table class="menu" border="0" cellspacing="0">
 
7384
<tr><td align="left" valign="top"><a href="#Position-Addition-and-Subtraction">5.5.1 Position Addition and Subtraction</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Operators &lsquo;<samp>+</samp>&rsquo; and &lsquo;<samp>-</samp>&rsquo;
 
7385
</td></tr>
 
7386
<tr><td align="left" valign="top"><a href="#Position-Multiplication-and-Division">5.5.2 Position Multiplication and Division</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">  Operators &lsquo;<samp>*</samp>&rsquo; and &lsquo;<samp>/</samp>&rsquo;
 
7387
</td></tr>
 
7388
<tr><td align="left" valign="top"><a href="#Position-Sign">5.5.3 Position Sign</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                         Unary Operator &lsquo;<samp>-</samp>&rsquo;
 
7389
</td></tr>
 
7390
<tr><td align="left" valign="top"><a href="#Position-Center">5.5.4 Position Center</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                       Operator &lsquo;<samp>#</samp>&rsquo;
 
7391
</td></tr>
 
7392
<tr><td align="left" valign="top"><a href="#Position-Comparison">5.5.5 Position Comparison</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                   Equality &lsquo;<samp>==</samp>&rsquo; and Inequality &lsquo;<samp>~=</samp>&rsquo;
 
7393
</td></tr>
 
7394
<tr><td align="left" valign="top"><a href="#Position-Concatenation">5.5.6 Position Concatenation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                Operator &lsquo;<samp>..</samp>&rsquo;
 
7395
</td></tr>
 
7396
<tr><td align="left" valign="top"><a href="#Position-Coordinate-Access">5.5.7 Position Coordinate Access</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Index Operators
 
7397
</td></tr>
 
7398
<tr><td align="left" valign="top"><a href="#Position-Grid-Rounding">5.5.8 Position Grid Rounding</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                Method &lsquo;<samp>grid()</samp>&rsquo;
 
7399
</td></tr>
 
7400
<tr><td align="left" valign="top"><a href="#Position-Existence">5.5.9 Position Existence</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                    Method &lsquo;<samp>exists()</samp>&rsquo;
 
7401
</td></tr>
 
7402
</table>
 
7403
 
 
7404
 
 
7405
<hr size="6">
 
7406
<a name="Position-Addition-and-Subtraction"></a>
 
7407
<table cellpadding="1" cellspacing="1" border="0">
 
7408
<tr><td valign="middle" align="left">[<a href="#Position" title="Previous section in reading order"> &lt; </a>]</td>
 
7409
<td valign="middle" align="left">[<a href="#Position-Multiplication-and-Division" title="Next section in reading order"> &gt; </a>]</td>
 
7410
<td valign="middle" align="left"> &nbsp; </td>
 
7411
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7412
<td valign="middle" align="left">[<a href="#Position" title="Up section"> Up </a>]</td>
 
7413
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7414
<td valign="middle" align="left"> &nbsp; </td>
 
7415
<td valign="middle" align="left"> &nbsp; </td>
 
7416
<td valign="middle" align="left"> &nbsp; </td>
 
7417
<td valign="middle" align="left"> &nbsp; </td>
 
7418
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7419
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7420
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7421
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7422
</tr></table>
 
7423
<a name="Position-Addition-and-Subtraction-1"></a>
 
7424
<h3 class="subsection">5.5.1 Position Addition and Subtraction</h3>
 
7425
 
 
7426
<dl compact="compact">
 
7427
<dt> <b>Syntax:</b></dt>
 
7428
<dd><p>result = <i>pos</i> &lt;<b>+</b>|<b>-</b>&gt; &lt;<i>pos</i> | <i>obj</i> | <i>cpos</i> | <i>polist</i>&gt;
 
7429
</p>
 
7430
<p>result = &lt;<i>pos</i> | <i>obj</i> | <i>cpos</i> | <i>polist</i>&gt; &lt;<b>+</b>|<b>-</b>&gt; <i>pos</i>
 
7431
</p>
 
7432
</dd>
 
7433
<dt> <b>Details:</b></dt>
 
7434
<dd><p>When a position is added to, or subtracted from another position or data
 
7435
convertible to a position the result is the position value representing the
 
7436
vectorial addition or difference of both arguments.
 
7437
</p>
 
7438
<p>If a position is added to, or subtracted from a position list a new list is created
 
7439
with the positions representing the sum or difference of the position with every
 
7440
member of the supplied position list.
 
7441
</p>
 
7442
</dd>
 
7443
<dt> <b>Syntax Samples:</b></dt>
 
7444
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newpos</var> = <i>po</i>(<var>3</var>, <var>4</var>) + {<var>1</var>, <var>2</var>}              -- = po(4, 6)
 
7445
<var>newpos</var> = <var>myobject</var> - <i>po</i>(<var>1</var>, <var>5</var>)
 
7446
<var>newpolist</var> = <i>po</i>(<var>2</var>, <var>3</var>) + <var>NEIGHBORS_4</var>      -- po(1, 3) .. po(2, 4) .. po(3, 3) .. po(2, 2)
 
7447
<var>newpolist</var> = <i>po</i>[&quot;<var>myfloor</var>#*&quot;] - <i>po</i>(<var>3</var>, <var>0</var>)
 
7448
</pre></td></tr></table>
 
7449
</dd>
 
7450
</dl>
 
7451
 
 
7452
 
 
7453
<hr size="6">
 
7454
<a name="Position-Multiplication-and-Division"></a>
 
7455
<table cellpadding="1" cellspacing="1" border="0">
 
7456
<tr><td valign="middle" align="left">[<a href="#Position-Addition-and-Subtraction" title="Previous section in reading order"> &lt; </a>]</td>
 
7457
<td valign="middle" align="left">[<a href="#Position-Sign" title="Next section in reading order"> &gt; </a>]</td>
 
7458
<td valign="middle" align="left"> &nbsp; </td>
 
7459
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7460
<td valign="middle" align="left">[<a href="#Position" title="Up section"> Up </a>]</td>
 
7461
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7462
<td valign="middle" align="left"> &nbsp; </td>
 
7463
<td valign="middle" align="left"> &nbsp; </td>
 
7464
<td valign="middle" align="left"> &nbsp; </td>
 
7465
<td valign="middle" align="left"> &nbsp; </td>
 
7466
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7467
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7468
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7469
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7470
</tr></table>
 
7471
<a name="Position-Multiplication-and-Division-1"></a>
 
7472
<h3 class="subsection">5.5.2 Position Multiplication and Division</h3>
 
7473
 
 
7474
<dl compact="compact">
 
7475
<dt> <b>Syntax:</b></dt>
 
7476
<dd><p>result = <i>pos</i> &lt;<b>*</b>|<b>/</b>&gt; <i>number</i>
 
7477
</p>
 
7478
<p>result = <i>number</i> <b>*</b> <i>pos</i>
 
7479
</p>
 
7480
</dd>
 
7481
<dt> <b>Details:</b></dt>
 
7482
<dd><p>A scalar multiplication or division of a position vector. A position value
 
7483
with both coordinate values multiplicated or divided by the given number
 
7484
is returned.
 
7485
</p>
 
7486
</dd>
 
7487
<dt> <b>Syntax Samples:</b></dt>
 
7488
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newpos</var> = <var>3</var> * <i>po</i>(<var>3</var>, <var>4</var>)   -- = po(9, 12)
 
7489
<var>newpos</var> = <i>po</i>(<var>2</var>, <var>3</var>) / <var>2</var>   -- = po(1, 1.5)
 
7490
</pre></td></tr></table>
 
7491
</dd>
 
7492
</dl>
 
7493
 
 
7494
 
 
7495
<hr size="6">
 
7496
<a name="Position-Sign"></a>
 
7497
<table cellpadding="1" cellspacing="1" border="0">
 
7498
<tr><td valign="middle" align="left">[<a href="#Position-Multiplication-and-Division" title="Previous section in reading order"> &lt; </a>]</td>
 
7499
<td valign="middle" align="left">[<a href="#Position-Center" title="Next section in reading order"> &gt; </a>]</td>
 
7500
<td valign="middle" align="left"> &nbsp; </td>
 
7501
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7502
<td valign="middle" align="left">[<a href="#Position" title="Up section"> Up </a>]</td>
 
7503
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7504
<td valign="middle" align="left"> &nbsp; </td>
 
7505
<td valign="middle" align="left"> &nbsp; </td>
 
7506
<td valign="middle" align="left"> &nbsp; </td>
 
7507
<td valign="middle" align="left"> &nbsp; </td>
 
7508
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7509
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7510
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7511
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7512
</tr></table>
 
7513
<a name="Position-Sign-1"></a>
 
7514
<h3 class="subsection">5.5.3 Position Sign</h3>
 
7515
 
 
7516
<dl compact="compact">
 
7517
<dt> <b>Syntax:</b></dt>
 
7518
<dd><p>result = -<i>pos</i>
 
7519
</p>
 
7520
</dd>
 
7521
<dt> <b>Details:</b></dt>
 
7522
<dd><p>An unary scalar multiplication of a position vector with &lsquo;<samp>-1</samp>&rsquo;. A new
 
7523
position value with both coordinate values multiplicated by &lsquo;<samp>-1</samp>&rsquo; is returned.
 
7524
</p>
 
7525
</dd>
 
7526
<dt> <b>Syntax Samples:</b></dt>
 
7527
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newpos</var> = -<i>po</i>(<var>3</var>, <var>4</var>)   -- = po(-3, -4)
 
7528
</pre></td></tr></table>
 
7529
</dd>
 
7530
</dl>
 
7531
 
 
7532
 
 
7533
<hr size="6">
 
7534
<a name="Position-Center"></a>
 
7535
<table cellpadding="1" cellspacing="1" border="0">
 
7536
<tr><td valign="middle" align="left">[<a href="#Position-Sign" title="Previous section in reading order"> &lt; </a>]</td>
 
7537
<td valign="middle" align="left">[<a href="#Position-Comparison" title="Next section in reading order"> &gt; </a>]</td>
 
7538
<td valign="middle" align="left"> &nbsp; </td>
 
7539
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7540
<td valign="middle" align="left">[<a href="#Position" title="Up section"> Up </a>]</td>
 
7541
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7542
<td valign="middle" align="left"> &nbsp; </td>
 
7543
<td valign="middle" align="left"> &nbsp; </td>
 
7544
<td valign="middle" align="left"> &nbsp; </td>
 
7545
<td valign="middle" align="left"> &nbsp; </td>
 
7546
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7547
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7548
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7549
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7550
</tr></table>
 
7551
<a name="Position-Center-1"></a>
 
7552
<h3 class="subsection">5.5.4 Position Center</h3>
 
7553
 
 
7554
<dl compact="compact">
 
7555
<dt> <b>Syntax:</b></dt>
 
7556
<dd><p>result = #<i>pos</i>
 
7557
</p>
 
7558
</dd>
 
7559
<dt> <b>Details:</b></dt>
 
7560
<dd><p>A rounding of a position vector to the center of the grid. A new position value
 
7561
with coordinates of the center of the containing grid position is returned.
 
7562
</p>
 
7563
</dd>
 
7564
<dt> <b>Syntax Samples:</b></dt>
 
7565
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newpos</var> = #<i>po</i>(<var>3</var>, <var>4</var>)   -- = po(3.5, 4.5)
 
7566
</pre></td></tr></table>
 
7567
</dd>
 
7568
</dl>
 
7569
 
 
7570
 
 
7571
<hr size="6">
 
7572
<a name="Position-Comparison"></a>
 
7573
<table cellpadding="1" cellspacing="1" border="0">
 
7574
<tr><td valign="middle" align="left">[<a href="#Position-Center" title="Previous section in reading order"> &lt; </a>]</td>
 
7575
<td valign="middle" align="left">[<a href="#Position-Concatenation" title="Next section in reading order"> &gt; </a>]</td>
 
7576
<td valign="middle" align="left"> &nbsp; </td>
 
7577
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7578
<td valign="middle" align="left">[<a href="#Position" title="Up section"> Up </a>]</td>
 
7579
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7580
<td valign="middle" align="left"> &nbsp; </td>
 
7581
<td valign="middle" align="left"> &nbsp; </td>
 
7582
<td valign="middle" align="left"> &nbsp; </td>
 
7583
<td valign="middle" align="left"> &nbsp; </td>
 
7584
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7585
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7586
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7587
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7588
</tr></table>
 
7589
<a name="Position-Comparison-1"></a>
 
7590
<h3 class="subsection">5.5.5 Position Comparison</h3>
 
7591
 
 
7592
<p>Equality and Inequality.
 
7593
</p>
 
7594
<dl compact="compact">
 
7595
<dt> <b>Syntax:</b></dt>
 
7596
<dd><p>result = <i>pos1</i> &lt;==|~=&gt; <i>pos2</i>
 
7597
</p>
 
7598
</dd>
 
7599
<dt> <b>Details:</b></dt>
 
7600
<dd><p>A comparison of two position values. Two position values are equal if both
 
7601
coordinates are equal. Otherwise they are unequal. If you want to know whether
 
7602
two positions point to the same grid, you may want to round both position prior
 
7603
comparison. You can round either to the center or to the grid by usage of
 
7604
the position operator &lsquo;<samp>#</samp>&rsquo; or the method &lsquo;<samp>grid()</samp>&rsquo;.
 
7605
</p>
 
7606
</dd>
 
7607
<dt> <b>Syntax Samples:</b></dt>
 
7608
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>bool</var> = <i>po</i>(<var>3</var>, <var>4</var>) == <i>po</i>({<var>3</var>, <var>4</var>})  -- = true
 
7609
<var>bool</var> = <i>po</i>(<var>3</var>, <var>4</var>) == <i>po</i>(<var>4</var>, <var>3</var>)    -- = false
 
7610
<var>bool</var> = <i>po</i>(<var>3</var>, <var>4</var>) ~= <i>po</i>(<var>4</var>, <var>3</var>)    -- = true
 
7611
</pre></td></tr></table>
 
7612
</dd>
 
7613
</dl>
 
7614
 
 
7615
 
 
7616
<hr size="6">
 
7617
<a name="Position-Concatenation"></a>
 
7618
<table cellpadding="1" cellspacing="1" border="0">
 
7619
<tr><td valign="middle" align="left">[<a href="#Position-Comparison" title="Previous section in reading order"> &lt; </a>]</td>
 
7620
<td valign="middle" align="left">[<a href="#Position-Coordinate-Access" title="Next section in reading order"> &gt; </a>]</td>
 
7621
<td valign="middle" align="left"> &nbsp; </td>
 
7622
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7623
<td valign="middle" align="left">[<a href="#Position" title="Up section"> Up </a>]</td>
 
7624
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7625
<td valign="middle" align="left"> &nbsp; </td>
 
7626
<td valign="middle" align="left"> &nbsp; </td>
 
7627
<td valign="middle" align="left"> &nbsp; </td>
 
7628
<td valign="middle" align="left"> &nbsp; </td>
 
7629
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7630
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7631
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7632
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7633
</tr></table>
 
7634
<a name="Position-Concatenation-1"></a>
 
7635
<h3 class="subsection">5.5.6 Position Concatenation</h3>
 
7636
 
 
7637
<dl compact="compact">
 
7638
<dt> <b>Syntax:</b></dt>
 
7639
<dd><p>result = <i>pos1</i> .. &lt;<i>pos2</i> | <i>polist</i>&gt;
 
7640
</p>
 
7641
<p>result = &lt;<i>pos1</i> | <i>polist</i>&gt; .. <i>pos2</i>
 
7642
</p>
 
7643
</dd>
 
7644
<dt> <b>Details:</b></dt>
 
7645
<dd><p>Concatenates two positions or a position with an existing <a href="#PositionList">PositionList</a> to a
 
7646
new PositionList containing all positions in the given order.  Note that this
 
7647
operation is associative, that means it does not matter if you use braces in
 
7648
multiple concatenations or not.
 
7649
</p>
 
7650
</dd>
 
7651
<dt> <b>Syntax Samples:</b></dt>
 
7652
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newpolist</var> = <i>po</i>(<var>3</var>, <var>4</var>) .. <i>po</i>(<var>4</var>, <var>4</var>)
 
7653
</pre></td></tr></table>
 
7654
</dd>
 
7655
</dl>
 
7656
 
 
7657
 
 
7658
<hr size="6">
 
7659
<a name="Position-Coordinate-Access"></a>
 
7660
<table cellpadding="1" cellspacing="1" border="0">
 
7661
<tr><td valign="middle" align="left">[<a href="#Position-Concatenation" title="Previous section in reading order"> &lt; </a>]</td>
 
7662
<td valign="middle" align="left">[<a href="#Position-Grid-Rounding" title="Next section in reading order"> &gt; </a>]</td>
 
7663
<td valign="middle" align="left"> &nbsp; </td>
 
7664
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7665
<td valign="middle" align="left">[<a href="#Position" title="Up section"> Up </a>]</td>
 
7666
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7667
<td valign="middle" align="left"> &nbsp; </td>
 
7668
<td valign="middle" align="left"> &nbsp; </td>
 
7669
<td valign="middle" align="left"> &nbsp; </td>
 
7670
<td valign="middle" align="left"> &nbsp; </td>
 
7671
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7672
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7673
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7674
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7675
</tr></table>
 
7676
<a name="Position-Coordinate-Access-1"></a>
 
7677
<h3 class="subsection">5.5.7 Position Coordinate Access</h3>
 
7678
 
 
7679
<dl compact="compact">
 
7680
<dt> <b>Syntax:</b></dt>
 
7681
<dd><p>result = <i>pos</i>[&quot;x&quot;]
 
7682
</p>
 
7683
<p>result = <i>pos</i>[&quot;y&quot;]
 
7684
</p>
 
7685
<p>result1, result2 = <i>pos</i>:xy()
 
7686
</p>
 
7687
</dd>
 
7688
<dt> <b>Details:</b></dt>
 
7689
<dd><p>The single coordinates of a position can be read anytime. You can retrieve
 
7690
single coordinates by Lua square bracket index access. Of course you can use
 
7691
the Lua alternative dot index access syntax, too (see examples). If you want
 
7692
to evaluate both coordinates, you can make use of the method &lsquo;<samp>xy()</samp>&rsquo;, that
 
7693
returns both numbers at once in a Lua multiple assignment.
 
7694
</p>
 
7695
</dd>
 
7696
<dt> <b>Syntax Samples:</b></dt>
 
7697
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>number</var> = <i>po</i>(<var>3</var>, <var>4</var>)[&quot;<b>x</b>&quot;]            -- = 3
 
7698
<var>number</var> = <i>po</i>(<var>3</var>, <var>4</var>).<b>x</b>               -- = 3
 
7699
<var>number</var> = <i>po</i>(<var>3</var>, <var>4</var>)[&quot;<b>y</b>&quot;]            -- = 4
 
7700
<var>number</var> = <i>po</i>(<var>3</var>, <var>4</var>).<b>y</b>               -- = 4
 
7701
<var>number1</var>, <var>number2</var> = <i>po</i>(<var>3</var>, <var>4</var>):<b>xy</b>()  -- = 3, 4
 
7702
</pre></td></tr></table>
 
7703
</dd>
 
7704
</dl>
 
7705
 
 
7706
 
 
7707
<hr size="6">
 
7708
<a name="Position-Grid-Rounding"></a>
 
7709
<table cellpadding="1" cellspacing="1" border="0">
 
7710
<tr><td valign="middle" align="left">[<a href="#Position-Coordinate-Access" title="Previous section in reading order"> &lt; </a>]</td>
 
7711
<td valign="middle" align="left">[<a href="#Position-Existence" title="Next section in reading order"> &gt; </a>]</td>
 
7712
<td valign="middle" align="left"> &nbsp; </td>
 
7713
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7714
<td valign="middle" align="left">[<a href="#Position" title="Up section"> Up </a>]</td>
 
7715
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7716
<td valign="middle" align="left"> &nbsp; </td>
 
7717
<td valign="middle" align="left"> &nbsp; </td>
 
7718
<td valign="middle" align="left"> &nbsp; </td>
 
7719
<td valign="middle" align="left"> &nbsp; </td>
 
7720
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7721
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7722
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7723
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7724
</tr></table>
 
7725
<a name="Position-Grid-Rounding-1"></a>
 
7726
<h3 class="subsection">5.5.8 Position Grid Rounding</h3>
 
7727
 
 
7728
<dl compact="compact">
 
7729
<dt> <b>Syntax:</b></dt>
 
7730
<dd><p>result = <i>pos</i>:grid()
 
7731
</p>
 
7732
</dd>
 
7733
<dt> <b>Details:</b></dt>
 
7734
<dd><p>Returns a new position value that points to the upper left corner of the grid
 
7735
that contains the position itself.
 
7736
</p>
 
7737
</dd>
 
7738
<dt> <b>Syntax Samples:</b></dt>
 
7739
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newpos</var> = <i>po</i>(<var>3.2</var>, <var>4.7</var>):<b>grid</b>()    -- = 3, 4
 
7740
<var>newpos</var> = <i>po</i>(<var>-2.4</var>, <var>-5.0</var>):<b>grid</b>()  -- = -3, -5
 
7741
</pre></td></tr></table>
 
7742
</dd>
 
7743
</dl>
 
7744
 
 
7745
 
 
7746
<hr size="6">
 
7747
<a name="Position-Existence"></a>
 
7748
<table cellpadding="1" cellspacing="1" border="0">
 
7749
<tr><td valign="middle" align="left">[<a href="#Position-Grid-Rounding" title="Previous section in reading order"> &lt; </a>]</td>
 
7750
<td valign="middle" align="left">[<a href="#Object" title="Next section in reading order"> &gt; </a>]</td>
 
7751
<td valign="middle" align="left"> &nbsp; </td>
 
7752
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7753
<td valign="middle" align="left">[<a href="#Position" title="Up section"> Up </a>]</td>
 
7754
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7755
<td valign="middle" align="left"> &nbsp; </td>
 
7756
<td valign="middle" align="left"> &nbsp; </td>
 
7757
<td valign="middle" align="left"> &nbsp; </td>
 
7758
<td valign="middle" align="left"> &nbsp; </td>
 
7759
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7760
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7761
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7762
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7763
</tr></table>
 
7764
<a name="Position-Existence-1"></a>
 
7765
<h3 class="subsection">5.5.9 Position Existence</h3>
 
7766
 
 
7767
<dl compact="compact">
 
7768
<dt> <b>Syntax:</b></dt>
 
7769
<dd><p>result = <i>pos</i>:exists()
 
7770
</p>
 
7771
</dd>
 
7772
<dt> <b>Details:</b></dt>
 
7773
<dd><p>Checks if the position is part of the world and returns &lsquo;<samp>true</samp>&rsquo; if it is
 
7774
contained. Otherwise &lsquo;<samp>false</samp>&rsquo; is returned.
 
7775
</p>
 
7776
<p>Note that the <a href="#Object">Object</a>s &lsquo;<samp>exists</samp>&rsquo; method reports the existence of the
 
7777
object. Evaluation of &lsquo;<samp>po(obj):exists()</samp>&rsquo; may result in &lsquo;<samp>false</samp>&rsquo; for
 
7778
existing objects. E.g. this result occurs for <a href="#Item-Objects">Item Objects</a> currently
 
7779
being part of a player&rsquo;s inventory. The item exists, but is not part of the
 
7780
world. But items contained in a bag placed in the world will report the same
 
7781
position as the bag.
 
7782
</p>
 
7783
</dd>
 
7784
<dt> <b>Syntax Samples:</b></dt>
 
7785
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>boolean</var> = <i>po</i>(<var>3.2</var>, <var>4.7</var>):<b>exists</b>()
 
7786
</pre></td></tr></table>
 
7787
</dd>
 
7788
</dl>
 
7789
 
 
7790
 
 
7791
 
 
7792
<hr size="6">
 
7793
<a name="Object"></a>
 
7794
<table cellpadding="1" cellspacing="1" border="0">
 
7795
<tr><td valign="middle" align="left">[<a href="#Position-Existence" title="Previous section in reading order"> &lt; </a>]</td>
 
7796
<td valign="middle" align="left">[<a href="#Object-Attribute-Access" title="Next section in reading order"> &gt; </a>]</td>
 
7797
<td valign="middle" align="left"> &nbsp; </td>
 
7798
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7799
<td valign="middle" align="left">[<a href="#Lua-API" title="Up section"> Up </a>]</td>
 
7800
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7801
<td valign="middle" align="left"> &nbsp; </td>
 
7802
<td valign="middle" align="left"> &nbsp; </td>
 
7803
<td valign="middle" align="left"> &nbsp; </td>
 
7804
<td valign="middle" align="left"> &nbsp; </td>
 
7805
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7806
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7807
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7808
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7809
</tr></table>
 
7810
<a name="Object-1"></a>
 
7811
<h2 class="section">5.6 Object</h2>
 
7812
 
 
7813
<p>This datatype handles all world participating objects as described in
 
7814
<a href="#Object-Layers">Object Layers</a>. When you request an object you get a reference to this
 
7815
object and not the object itself. You can modify the object, but the object
 
7816
can be modified by user actions, too. Deleting your reference by assigning
 
7817
another value to your variable does not delete the object itself.
 
7818
</p>
 
7819
<p>On the other hand an object can cease to exist due to user actions while you
 
7820
still have a reference assigned to a Lua variable. Of course this reference
 
7821
gets invalid when the referenced object is deleted. But such an invalid
 
7822
reference, which we call a &lsquo;<samp>NULL</samp>&rsquo; reference, is no longer fatal with the
 
7823
new API. Any write accesses on such references are simply ignored. Thus you can
 
7824
send messages to object references independently of their validity. Just on
 
7825
read accesses you may want to prior check the existence of an object as you
 
7826
would get &lsquo;<samp>nil</samp>&rsquo; values on access of &lsquo;<samp>NULL</samp>&rsquo; references.
 
7827
</p>
 
7828
<p>Objects take attributes that you access by Lua index methods. Additional to
 
7829
the object specific attributes you are free to store your own custom
 
7830
attributes on any object. Custom attributes are any indices starting with an
 
7831
underscore &lsquo;<samp>_</samp>&rsquo; as prefix to their name.
 
7832
</p>
 
7833
<p>The real world objects are created by assigning a tile declaration to
 
7834
a <a href="#World">World</a> position. You retrieve a corresponding object reference either
 
7835
by the <a href="#NamedObjects">NamedObjects</a> repository, by <a href="#Functions">Functions</a> or other methods that
 
7836
return single object references.
 
7837
</p>
 
7838
<p>Objects provide most methods of a <a href="#Position">Position</a> and can in most cases be
 
7839
directly used as a position without explicit conversion. Just special methods
 
7840
like existence differ on both datatypes. Of course all objects placed in the
 
7841
world are limited to positions within the world. But be aware that portable
 
7842
<a href="#Item-Objects">Item Objects</a> can well be part of a player&rsquo;s inventory and thus report a
 
7843
position outside of the world. Actors will always report positions rounded to
 
7844
the containing grid. This feature is legacy. As Lua code is anyway inappropriate
 
7845
to handle actor movements we maintained this rounding feature.
 
7846
</p>
 
7847
<p>Objects support standard set operators of <a href="#Group">Group</a>s, too, as long as one
 
7848
operand is a group and the other an object.
 
7849
</p>
 
7850
<p>For task driven samples see section <a href="#Object-Tasks">Object Tasks</a> and <a href="#Attribute-Tasks">Attribute Tasks</a>.
 
7851
</p>
 
7852
<table class="menu" border="0" cellspacing="0">
 
7853
<tr><td align="left" valign="top"><a href="#Object-Attribute-Access">5.6.1 Object Attribute Access</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Index Operators &lsquo;<samp>[]</samp>&rsquo;
 
7854
</td></tr>
 
7855
<tr><td align="left" valign="top"><a href="#Object-Messaging">5.6.2 Object Messaging</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                  Method Operator &lsquo;<samp>:</samp>&rsquo;
 
7856
</td></tr>
 
7857
<tr><td align="left" valign="top"><a href="#Object-Comparison">5.6.3 Object Comparison</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 Equality &lsquo;<samp>==</samp>&rsquo; and Inequality &lsquo;<samp>~=</samp>&rsquo;
 
7858
</td></tr>
 
7859
<tr><td align="left" valign="top"><a href="#Object-Existence">5.6.4 Object Existence</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                  Method &lsquo;<samp>exists()</samp>&rsquo;
 
7860
</td></tr>
 
7861
<tr><td align="left" valign="top"><a href="#Object-Kill">5.6.5 Object Kill</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                       Method &lsquo;<samp>kill()</samp>&rsquo;
 
7862
</td></tr>
 
7863
<tr><td align="left" valign="top"><a href="#Object-Kind-Check">5.6.6 Object Kind Check</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 Method &lsquo;<samp>kind()</samp>&rsquo; and &lsquo;<samp>is()</samp>&rsquo;
 
7864
</td></tr>
 
7865
<tr><td align="left" valign="top"><a href="#Object-Coordinate-Access">5.6.7 Object Coordinate Access</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Index Operators &lsquo;<samp>[&quot;x&quot;]</samp>&rsquo;, &lsquo;<samp>[&quot;y&quot;]</samp>&rsquo;
 
7866
</td></tr>
 
7867
<tr><td align="left" valign="top"><a href="#Object-Addition-and-Subtraction">5.6.8 Object Addition and Subtraction</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">   Operators &lsquo;<samp>+</samp>&rsquo;, &lsquo;<samp>-</samp>&rsquo;
 
7868
</td></tr>
 
7869
<tr><td align="left" valign="top"><a href="#Object-Center">5.6.9 Object Center</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     Operator &lsquo;<samp>#</samp>&rsquo;
 
7870
</td></tr>
 
7871
<tr><td align="left" valign="top"><a href="#Object-Join">5.6.10 Object Join</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                       Operator &lsquo;<samp>+</samp>&rsquo;
 
7872
</td></tr>
 
7873
<tr><td align="left" valign="top"><a href="#Object-Intersection">5.6.11 Object Intersection</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               Operator &lsquo;<samp>*</samp>&rsquo;
 
7874
</td></tr>
 
7875
<tr><td align="left" valign="top"><a href="#Object-Difference">5.6.12 Object Difference</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 Operator &lsquo;<samp>-</samp>&rsquo;
 
7876
</td></tr>
 
7877
<tr><td align="left" valign="top"><a href="#Object-Sound">5.6.13 Object Sound</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                      Method &lsquo;<samp>sound()</samp>&rsquo;
 
7878
</td></tr>
 
7879
</table>
 
7880
 
 
7881
<hr size="6">
 
7882
<a name="Object-Attribute-Access"></a>
 
7883
<table cellpadding="1" cellspacing="1" border="0">
 
7884
<tr><td valign="middle" align="left">[<a href="#Object" title="Previous section in reading order"> &lt; </a>]</td>
 
7885
<td valign="middle" align="left">[<a href="#Object-Messaging" title="Next section in reading order"> &gt; </a>]</td>
 
7886
<td valign="middle" align="left"> &nbsp; </td>
 
7887
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7888
<td valign="middle" align="left">[<a href="#Object" title="Up section"> Up </a>]</td>
 
7889
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7890
<td valign="middle" align="left"> &nbsp; </td>
 
7891
<td valign="middle" align="left"> &nbsp; </td>
 
7892
<td valign="middle" align="left"> &nbsp; </td>
 
7893
<td valign="middle" align="left"> &nbsp; </td>
 
7894
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7895
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7896
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7897
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7898
</tr></table>
 
7899
<a name="Object-Attribute-Access-1"></a>
 
7900
<h3 class="subsection">5.6.1 Object Attribute Access</h3>
 
7901
 
 
7902
<dl compact="compact">
 
7903
<dt> <b>Syntax:</b></dt>
 
7904
<dd><p>result = <i>obj</i>[&quot;attributename&quot;]
 
7905
</p>
 
7906
<p><i>obj</i>[&quot;attributename&quot;] = value
 
7907
</p>
 
7908
<p><i>obj</i>:set({attributename1=value1, attributename2=value2,...})
 
7909
</p>
 
7910
</dd>
 
7911
<dt> <b>Details:</b></dt>
 
7912
<dd><p>Read or write object attributes as described in the following chapters or
 
7913
custom attributes. The &lsquo;<samp>set</samp>&rsquo; method allows you to set multiple attributes
 
7914
at once. Attribute writes are ignored if the object reference is invalid.
 
7915
Attribute reads require a valid object reference. Otherwise they return
 
7916
&lsquo;<samp>nil</samp>&rsquo;.
 
7917
</p>
 
7918
</dd>
 
7919
<dt> <b>Syntax Samples:</b></dt>
 
7920
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>value</var> = <var>obj</var>[&quot;<b>color</b>&quot;]
 
7921
<var>value</var> = <var>obj</var>.<b>color</b>
 
7922
<var>obj</var>[&quot;<b>color</b>&quot;] = <var>BLACK</var>
 
7923
<var>obj</var>.<b>color</b> = <var>BLACK</var>
 
7924
<var>obj</var>:<b>set</b>({<b>target</b>=<var>mydoor</var>, <b>action</b>=&quot;<b>open</b>&quot;})
 
7925
</pre></td></tr></table>
 
7926
</dd>
 
7927
</dl>
 
7928
 
 
7929
<hr size="6">
 
7930
<a name="Object-Messaging"></a>
 
7931
<table cellpadding="1" cellspacing="1" border="0">
 
7932
<tr><td valign="middle" align="left">[<a href="#Object-Attribute-Access" title="Previous section in reading order"> &lt; </a>]</td>
 
7933
<td valign="middle" align="left">[<a href="#Object-Comparison" title="Next section in reading order"> &gt; </a>]</td>
 
7934
<td valign="middle" align="left"> &nbsp; </td>
 
7935
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7936
<td valign="middle" align="left">[<a href="#Object" title="Up section"> Up </a>]</td>
 
7937
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7938
<td valign="middle" align="left"> &nbsp; </td>
 
7939
<td valign="middle" align="left"> &nbsp; </td>
 
7940
<td valign="middle" align="left"> &nbsp; </td>
 
7941
<td valign="middle" align="left"> &nbsp; </td>
 
7942
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7943
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7944
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7945
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7946
</tr></table>
 
7947
<a name="Object-Messaging-1"></a>
 
7948
<h3 class="subsection">5.6.2 Object Messaging</h3>
 
7949
 
 
7950
<dl compact="compact">
 
7951
<dt> <b>Syntax:</b></dt>
 
7952
<dd><p>result = <i>obj</i>:message(&quot;msg&quot;, value)
 
7953
</p>
 
7954
<p>result = <i>obj</i>:msg(value)
 
7955
</p>
 
7956
</dd>
 
7957
<dt> <b>Details:</b></dt>
 
7958
<dd><p>Send a message with a given value or &lsquo;<samp>nil</samp>&rsquo; to the object. Every message
 
7959
can be sent directly as a method with the given message name. When the object
 
7960
reference is invalid the message is simply ignored.
 
7961
</p>
 
7962
</dd>
 
7963
<dt> <b>Syntax Samples:</b></dt>
 
7964
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>value</var> = <var>obj</var>:<b>message</b>(&quot;<b>open</b>&quot;)
 
7965
<var>value</var> = <var>obj</var>:<b>open</b>()
 
7966
<var>value</var> = <var>obj</var>:<b>message</b>(&quot;<b>signal</b>&quot;, <var>1</var>)
 
7967
<var>value</var> = <var>obj</var>:<b>signal</b>(<var>1</var>)
 
7968
</pre></td></tr></table>
 
7969
</dd>
 
7970
</dl>
 
7971
 
 
7972
<hr size="6">
 
7973
<a name="Object-Comparison"></a>
 
7974
<table cellpadding="1" cellspacing="1" border="0">
 
7975
<tr><td valign="middle" align="left">[<a href="#Object-Messaging" title="Previous section in reading order"> &lt; </a>]</td>
 
7976
<td valign="middle" align="left">[<a href="#Object-Existence" title="Next section in reading order"> &gt; </a>]</td>
 
7977
<td valign="middle" align="left"> &nbsp; </td>
 
7978
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
7979
<td valign="middle" align="left">[<a href="#Object" title="Up section"> Up </a>]</td>
 
7980
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
7981
<td valign="middle" align="left"> &nbsp; </td>
 
7982
<td valign="middle" align="left"> &nbsp; </td>
 
7983
<td valign="middle" align="left"> &nbsp; </td>
 
7984
<td valign="middle" align="left"> &nbsp; </td>
 
7985
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
7986
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
7987
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
7988
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
7989
</tr></table>
 
7990
<a name="Object-Comparison-1"></a>
 
7991
<h3 class="subsection">5.6.3 Object Comparison</h3>
 
7992
 
 
7993
<dl compact="compact">
 
7994
<dt> <b>Syntax:</b></dt>
 
7995
<dd><p>result = <i>obj1</i> &lt;==|~=&gt; <i>obj2</i>
 
7996
</p>
 
7997
</dd>
 
7998
<dt> <b>Details:</b></dt>
 
7999
<dd><p>A comparison of two object values. Two object values are equal if both
 
8000
reference the same, still existing world object. Otherwise they are unequal.
 
8001
</p>
 
8002
</dd>
 
8003
<dt> <b>Syntax Samples:</b></dt>
 
8004
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>bool</var> = <var>obj1</var> == <var>obj1</var>  -- = true
 
8005
<var>bool</var> = <var>obj1</var> == <var>obj2</var>  -- = false, if two different objects
 
8006
<var>bool</var> = <var>obj1</var> ~= <var>obj2</var>  -- = true, if two different objects
 
8007
</pre></td></tr></table>
 
8008
</dd>
 
8009
</dl>
 
8010
 
 
8011
<hr size="6">
 
8012
<a name="Object-Existence"></a>
 
8013
<table cellpadding="1" cellspacing="1" border="0">
 
8014
<tr><td valign="middle" align="left">[<a href="#Object-Comparison" title="Previous section in reading order"> &lt; </a>]</td>
 
8015
<td valign="middle" align="left">[<a href="#Object-Kill" title="Next section in reading order"> &gt; </a>]</td>
 
8016
<td valign="middle" align="left"> &nbsp; </td>
 
8017
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8018
<td valign="middle" align="left">[<a href="#Object" title="Up section"> Up </a>]</td>
 
8019
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8020
<td valign="middle" align="left"> &nbsp; </td>
 
8021
<td valign="middle" align="left"> &nbsp; </td>
 
8022
<td valign="middle" align="left"> &nbsp; </td>
 
8023
<td valign="middle" align="left"> &nbsp; </td>
 
8024
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8025
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8026
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8027
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8028
</tr></table>
 
8029
<a name="Object-Existence-1"></a>
 
8030
<h3 class="subsection">5.6.4 Object Existence</h3>
 
8031
 
 
8032
<dl compact="compact">
 
8033
<dt> <b>Syntax:</b></dt>
 
8034
<dd><p>result = -<i>obj</i>
 
8035
</p>
 
8036
<p>result = <i>obj</i>:exists()
 
8037
</p>
 
8038
</dd>
 
8039
<dt> <b>Details:</b></dt>
 
8040
<dd><p>Checks whether an object reference is still valid. Returns true if the object
 
8041
still exists, otherwise false is returned for &lsquo;<samp>NULL</samp>&rsquo; object references.
 
8042
</p>
 
8043
</dd>
 
8044
<dt> <b>Syntax Samples:</b></dt>
 
8045
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>bool</var> = -<var>obj</var>
 
8046
<var>bool</var> = <var>obj</var>:<b>exists</b>()
 
8047
</pre></td></tr></table>
 
8048
</dd>
 
8049
</dl>
 
8050
 
 
8051
<hr size="6">
 
8052
<a name="Object-Kill"></a>
 
8053
<table cellpadding="1" cellspacing="1" border="0">
 
8054
<tr><td valign="middle" align="left">[<a href="#Object-Existence" title="Previous section in reading order"> &lt; </a>]</td>
 
8055
<td valign="middle" align="left">[<a href="#Object-Kind-Check" title="Next section in reading order"> &gt; </a>]</td>
 
8056
<td valign="middle" align="left"> &nbsp; </td>
 
8057
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8058
<td valign="middle" align="left">[<a href="#Object" title="Up section"> Up </a>]</td>
 
8059
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8060
<td valign="middle" align="left"> &nbsp; </td>
 
8061
<td valign="middle" align="left"> &nbsp; </td>
 
8062
<td valign="middle" align="left"> &nbsp; </td>
 
8063
<td valign="middle" align="left"> &nbsp; </td>
 
8064
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8065
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8066
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8067
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8068
</tr></table>
 
8069
<a name="Object-Kill-1"></a>
 
8070
<h3 class="subsection">5.6.5 Object Kill</h3>
 
8071
 
 
8072
<dl compact="compact">
 
8073
<dt> <b>Syntax:</b></dt>
 
8074
<dd><p><i>obj</i>:kill()
 
8075
</p>
 
8076
</dd>
 
8077
<dt> <b>Details:</b></dt>
 
8078
<dd><p>Kills the object at once. Note that you should never kill a sender object
 
8079
within a callback action. If you have need of killing the sender then add
 
8080
the attribute <a href="#safeaction">safeaction</a> as explained in <a href="#Target-_002d-Action">Target - Action</a>.
 
8081
</p>
 
8082
</dd>
 
8083
<dt> <b>Syntax Samples:</b></dt>
 
8084
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>obj</var>:<b>kill</b>()
 
8085
</pre></td></tr></table>
 
8086
</dd>
 
8087
</dl>
 
8088
 
 
8089
<hr size="6">
 
8090
<a name="Object-Kind-Check"></a>
 
8091
<table cellpadding="1" cellspacing="1" border="0">
 
8092
<tr><td valign="middle" align="left">[<a href="#Object-Kill" title="Previous section in reading order"> &lt; </a>]</td>
 
8093
<td valign="middle" align="left">[<a href="#Object-Coordinate-Access" title="Next section in reading order"> &gt; </a>]</td>
 
8094
<td valign="middle" align="left"> &nbsp; </td>
 
8095
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8096
<td valign="middle" align="left">[<a href="#Object" title="Up section"> Up </a>]</td>
 
8097
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8098
<td valign="middle" align="left"> &nbsp; </td>
 
8099
<td valign="middle" align="left"> &nbsp; </td>
 
8100
<td valign="middle" align="left"> &nbsp; </td>
 
8101
<td valign="middle" align="left"> &nbsp; </td>
 
8102
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8103
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8104
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8105
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8106
</tr></table>
 
8107
<a name="Object-Kind-Check-1"></a>
 
8108
<h3 class="subsection">5.6.6 Object Kind Check</h3>
 
8109
 
 
8110
<dl compact="compact">
 
8111
<dt> <b>Syntax:</b></dt>
 
8112
<dd><p>result = <i>obj</i>:is(&quot;kind&quot;)
 
8113
</p>
 
8114
<p>result = <i>obj</i>:kind()
 
8115
</p>
 
8116
</dd>
 
8117
<dt> <b>Details:</b></dt>
 
8118
<dd><p>These methods allow you to check or retrieve the <a href="#Object-Kind">Object Kind</a>.
 
8119
</p>
 
8120
</dd>
 
8121
<dt> <b>Syntax Samples:</b></dt>
 
8122
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>bool</var> = <var>obj</var>:<b>is</b>(&quot;<b>st_chess</b>&quot;)
 
8123
<var>string</var> = <var>obj</var>:<b>kind</b>()
 
8124
</pre></td></tr></table>
 
8125
</dd>
 
8126
</dl>
 
8127
 
 
8128
<hr size="6">
 
8129
<a name="Object-Coordinate-Access"></a>
 
8130
<table cellpadding="1" cellspacing="1" border="0">
 
8131
<tr><td valign="middle" align="left">[<a href="#Object-Kind-Check" title="Previous section in reading order"> &lt; </a>]</td>
 
8132
<td valign="middle" align="left">[<a href="#Object-Addition-and-Subtraction" title="Next section in reading order"> &gt; </a>]</td>
 
8133
<td valign="middle" align="left"> &nbsp; </td>
 
8134
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8135
<td valign="middle" align="left">[<a href="#Object" title="Up section"> Up </a>]</td>
 
8136
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8137
<td valign="middle" align="left"> &nbsp; </td>
 
8138
<td valign="middle" align="left"> &nbsp; </td>
 
8139
<td valign="middle" align="left"> &nbsp; </td>
 
8140
<td valign="middle" align="left"> &nbsp; </td>
 
8141
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8142
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8143
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8144
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8145
</tr></table>
 
8146
<a name="Object-Coordinate-Access-1"></a>
 
8147
<h3 class="subsection">5.6.7 Object Coordinate Access</h3>
 
8148
 
 
8149
<dl compact="compact">
 
8150
<dt> <b>Syntax:</b></dt>
 
8151
<dd><p>result = <i>obj</i>[&quot;x&quot;]
 
8152
</p>
 
8153
<p>result = <i>obj</i>[&quot;y&quot;]
 
8154
</p>
 
8155
<p>result1, result2 = <i>obj</i>:xy()
 
8156
</p>
 
8157
</dd>
 
8158
<dt> <b>Details:</b></dt>
 
8159
<dd><p>The single position coordinates of an object can be read anytime. You can
 
8160
retrieve single coordinates by Lua square bracket index access. Of course you
 
8161
can use the Lua alternative dot index access syntax, too (see examples). If you
 
8162
want to evaluate both coordinates, you can make use of the method &lsquo;<samp>xy()</samp>&rsquo;,
 
8163
that returns both numbers at once in a Lua multiple assignment. Anyway the
 
8164
coordinates of an object are read only. You can not reposition an object by
 
8165
changing its coordinates.
 
8166
</p>
 
8167
</dd>
 
8168
<dt> <b>Syntax Samples:</b></dt>
 
8169
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>number</var> = <var>obj</var>[&quot;<b>x</b>&quot;]
 
8170
<var>number</var> = <var>obj</var>.<b>x</b>
 
8171
<var>number</var> = <var>obj</var>[&quot;<b>y</b>&quot;]
 
8172
<var>number</var> = <var>obj</var>.<b>y</b>
 
8173
<var>number1</var>, <var>number2</var> = <var>obj</var>:<b>xy</b>()
 
8174
</pre></td></tr></table>
 
8175
</dd>
 
8176
</dl>
 
8177
 
 
8178
<hr size="6">
 
8179
<a name="Object-Addition-and-Subtraction"></a>
 
8180
<table cellpadding="1" cellspacing="1" border="0">
 
8181
<tr><td valign="middle" align="left">[<a href="#Object-Coordinate-Access" title="Previous section in reading order"> &lt; </a>]</td>
 
8182
<td valign="middle" align="left">[<a href="#Object-Center" title="Next section in reading order"> &gt; </a>]</td>
 
8183
<td valign="middle" align="left"> &nbsp; </td>
 
8184
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8185
<td valign="middle" align="left">[<a href="#Object" title="Up section"> Up </a>]</td>
 
8186
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8187
<td valign="middle" align="left"> &nbsp; </td>
 
8188
<td valign="middle" align="left"> &nbsp; </td>
 
8189
<td valign="middle" align="left"> &nbsp; </td>
 
8190
<td valign="middle" align="left"> &nbsp; </td>
 
8191
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8192
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8193
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8194
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8195
</tr></table>
 
8196
<a name="Object-Addition-and-Subtraction-1"></a>
 
8197
<h3 class="subsection">5.6.8 Object Addition and Subtraction</h3>
 
8198
 
 
8199
<dl compact="compact">
 
8200
<dt> <b>Syntax:</b></dt>
 
8201
<dd><p>result = <i>obj</i> &lt;<b>+</b>|<b>-</b>&gt; &lt;<i>pos</i> | <i>obj</i> | <i>cpos</i> | <i>polist</i>&gt;
 
8202
</p>
 
8203
<p>result = &lt;<i>pos</i> | <i>obj</i> | <i>cpos</i> | <i>polist</i>&gt; &lt;<b>+</b>|<b>-</b>&gt; <i>obj</i>
 
8204
</p>
 
8205
</dd>
 
8206
<dt> <b>Details:</b></dt>
 
8207
<dd><p>When an object is added to or subtracted from another position or data
 
8208
convertible to a position the result is the position value representing the
 
8209
vectorial addition or difference of both positions.
 
8210
</p>
 
8211
<p>If an object is added to or subtracted from a position list a new list is created
 
8212
with the positions representing the sum or difference of the position with every
 
8213
member of the supplied position list.
 
8214
</p>
 
8215
</dd>
 
8216
<dt> <b>Syntax Samples:</b></dt>
 
8217
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newpos</var> = <var>obj</var> + {<var>1</var>, <var>2</var>}
 
8218
<var>newpos</var> = <var>myobject</var> - <var>obj</var>
 
8219
<var>newpolist</var> = <var>obj</var> + <var>NEIGHBORS_4</var>
 
8220
<var>newpolist</var> = <i>po</i>[&quot;<var>myfloor</var>#*&quot;] - <var>obj</var>
 
8221
</pre></td></tr></table>
 
8222
</dd>
 
8223
</dl>
 
8224
 
 
8225
<hr size="6">
 
8226
<a name="Object-Center"></a>
 
8227
<table cellpadding="1" cellspacing="1" border="0">
 
8228
<tr><td valign="middle" align="left">[<a href="#Object-Addition-and-Subtraction" title="Previous section in reading order"> &lt; </a>]</td>
 
8229
<td valign="middle" align="left">[<a href="#Object-Join" title="Next section in reading order"> &gt; </a>]</td>
 
8230
<td valign="middle" align="left"> &nbsp; </td>
 
8231
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8232
<td valign="middle" align="left">[<a href="#Object" title="Up section"> Up </a>]</td>
 
8233
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8234
<td valign="middle" align="left"> &nbsp; </td>
 
8235
<td valign="middle" align="left"> &nbsp; </td>
 
8236
<td valign="middle" align="left"> &nbsp; </td>
 
8237
<td valign="middle" align="left"> &nbsp; </td>
 
8238
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8239
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8240
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8241
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8242
</tr></table>
 
8243
<a name="Object-Center-1"></a>
 
8244
<h3 class="subsection">5.6.9 Object Center</h3>
 
8245
 
 
8246
<dl compact="compact">
 
8247
<dt> <b>Syntax:</b></dt>
 
8248
<dd><p>result = #<i>obj</i>
 
8249
</p>
 
8250
</dd>
 
8251
<dt> <b>Details:</b></dt>
 
8252
<dd><p>A rounding of an objects position vector to the center of the grid. A new
 
8253
position value with coordinates of the center of the containing grid position
 
8254
is returned.
 
8255
</p>
 
8256
</dd>
 
8257
<dt> <b>Syntax Samples:</b></dt>
 
8258
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newpos</var> = #<var>obj</var>   -- e.g. po(3.5, 4.5)
 
8259
</pre></td></tr></table>
 
8260
</dd>
 
8261
</dl>
 
8262
 
 
8263
<hr size="6">
 
8264
<a name="Object-Join"></a>
 
8265
<table cellpadding="1" cellspacing="1" border="0">
 
8266
<tr><td valign="middle" align="left">[<a href="#Object-Center" title="Previous section in reading order"> &lt; </a>]</td>
 
8267
<td valign="middle" align="left">[<a href="#Object-Intersection" title="Next section in reading order"> &gt; </a>]</td>
 
8268
<td valign="middle" align="left"> &nbsp; </td>
 
8269
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8270
<td valign="middle" align="left">[<a href="#Object" title="Up section"> Up </a>]</td>
 
8271
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8272
<td valign="middle" align="left"> &nbsp; </td>
 
8273
<td valign="middle" align="left"> &nbsp; </td>
 
8274
<td valign="middle" align="left"> &nbsp; </td>
 
8275
<td valign="middle" align="left"> &nbsp; </td>
 
8276
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8277
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8278
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8279
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8280
</tr></table>
 
8281
<a name="Object-Join-1"></a>
 
8282
<h3 class="subsection">5.6.10 Object Join</h3>
 
8283
 
 
8284
<dl compact="compact">
 
8285
<dt> <b>Syntax:</b></dt>
 
8286
<dd><p>result = <i>obj</i> + <i>group</i>
 
8287
</p>
 
8288
<p>result = <i>group</i> + <i>obj</i>
 
8289
</p>
 
8290
</dd>
 
8291
<dt> <b>Details:</b></dt>
 
8292
<dd><p>A new set containing the objects of the group plus the single object is returned.
 
8293
The object sequence is maintained. If the object is already member of the group
 
8294
the new group will contain just one object reference, namely the first one in
 
8295
sequence.
 
8296
</p>
 
8297
</dd>
 
8298
<dt> <b>Syntax Samples:</b></dt>
 
8299
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newgroup</var> = <var>obj1</var> + <i>grp</i>(<var>obj2</var>, <var>obj3</var>, <var>obj1</var>)   -- = grp(obj1, obj2, obj3)
 
8300
<var>newgroup</var> = <i>grp</i>(<var>obj2</var>, <var>obj3</var>) + <var>obj1</var>         -- = grp(obj2, obj3, obj1)
 
8301
</pre></td></tr></table>
 
8302
</dd>
 
8303
</dl>
 
8304
 
 
8305
<hr size="6">
 
8306
<a name="Object-Intersection"></a>
 
8307
<table cellpadding="1" cellspacing="1" border="0">
 
8308
<tr><td valign="middle" align="left">[<a href="#Object-Join" title="Previous section in reading order"> &lt; </a>]</td>
 
8309
<td valign="middle" align="left">[<a href="#Object-Difference" title="Next section in reading order"> &gt; </a>]</td>
 
8310
<td valign="middle" align="left"> &nbsp; </td>
 
8311
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8312
<td valign="middle" align="left">[<a href="#Object" title="Up section"> Up </a>]</td>
 
8313
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8314
<td valign="middle" align="left"> &nbsp; </td>
 
8315
<td valign="middle" align="left"> &nbsp; </td>
 
8316
<td valign="middle" align="left"> &nbsp; </td>
 
8317
<td valign="middle" align="left"> &nbsp; </td>
 
8318
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8319
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8320
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8321
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8322
</tr></table>
 
8323
<a name="Object-Intersection-1"></a>
 
8324
<h3 class="subsection">5.6.11 Object Intersection</h3>
 
8325
 
 
8326
<dl compact="compact">
 
8327
<dt> <b>Syntax:</b></dt>
 
8328
<dd><p>result = <i>obj</i> * <i>group</i>
 
8329
</p>
 
8330
<p>result = <i>group</i> * <i>obj</i>
 
8331
</p>
 
8332
</dd>
 
8333
<dt> <b>Details:</b></dt>
 
8334
<dd><p>A new set containing just the object itself, in case it is part of the group,
 
8335
too, or an empty group returned.
 
8336
</p>
 
8337
</dd>
 
8338
<dt> <b>Syntax Samples:</b></dt>
 
8339
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newgroup</var> = <var>obj1</var> * <i>grp</i>(<var>obj1</var>, <var>obj2</var>)  -- = grp(obj1)
 
8340
<var>newgroup</var> = <i>grp</i>(<var>obj2</var>) * <var>obj1</var>         -- = grp()
 
8341
</pre></td></tr></table>
 
8342
</dd>
 
8343
</dl>
 
8344
 
 
8345
<hr size="6">
 
8346
<a name="Object-Difference"></a>
 
8347
<table cellpadding="1" cellspacing="1" border="0">
 
8348
<tr><td valign="middle" align="left">[<a href="#Object-Intersection" title="Previous section in reading order"> &lt; </a>]</td>
 
8349
<td valign="middle" align="left">[<a href="#Object-Sound" title="Next section in reading order"> &gt; </a>]</td>
 
8350
<td valign="middle" align="left"> &nbsp; </td>
 
8351
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8352
<td valign="middle" align="left">[<a href="#Object" title="Up section"> Up </a>]</td>
 
8353
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8354
<td valign="middle" align="left"> &nbsp; </td>
 
8355
<td valign="middle" align="left"> &nbsp; </td>
 
8356
<td valign="middle" align="left"> &nbsp; </td>
 
8357
<td valign="middle" align="left"> &nbsp; </td>
 
8358
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8359
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8360
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8361
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8362
</tr></table>
 
8363
<a name="Object-Difference-1"></a>
 
8364
<h3 class="subsection">5.6.12 Object Difference</h3>
 
8365
 
 
8366
<dl compact="compact">
 
8367
<dt> <b>Syntax:</b></dt>
 
8368
<dd><p>result = <i>obj</i> - <i>group</i>
 
8369
</p>
 
8370
<p>result = <i>group</i> - <i>obj</i>
 
8371
</p>
 
8372
</dd>
 
8373
<dt> <b>Details:</b></dt>
 
8374
<dd><p>In the first case a new set containing just the object itself, if it is not part
 
8375
of the group, too, or an empty group returned. In the second case the new group
 
8376
contains all members of the old group without the object. The sequence of
 
8377
objects remains untouched.
 
8378
</p>
 
8379
</dd>
 
8380
<dt> <b>Syntax Samples:</b></dt>
 
8381
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newgroup</var> = <var>obj1</var> - <i>grp</i>(<var>obj2</var>, <var>obj1</var>)  -- = grp()
 
8382
<var>newgroup</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>) - <var>obj1</var>  -- = grp(obj2)
 
8383
</pre></td></tr></table>
 
8384
</dd>
 
8385
</dl>
 
8386
 
 
8387
<hr size="6">
 
8388
<a name="Object-Sound"></a>
 
8389
<table cellpadding="1" cellspacing="1" border="0">
 
8390
<tr><td valign="middle" align="left">[<a href="#Object-Difference" title="Previous section in reading order"> &lt; </a>]</td>
 
8391
<td valign="middle" align="left">[<a href="#Group" title="Next section in reading order"> &gt; </a>]</td>
 
8392
<td valign="middle" align="left"> &nbsp; </td>
 
8393
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8394
<td valign="middle" align="left">[<a href="#Object" title="Up section"> Up </a>]</td>
 
8395
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8396
<td valign="middle" align="left"> &nbsp; </td>
 
8397
<td valign="middle" align="left"> &nbsp; </td>
 
8398
<td valign="middle" align="left"> &nbsp; </td>
 
8399
<td valign="middle" align="left"> &nbsp; </td>
 
8400
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8401
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8402
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8403
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8404
</tr></table>
 
8405
<a name="Object-Sound-1"></a>
 
8406
<h3 class="subsection">5.6.13 Object Sound</h3>
 
8407
 
 
8408
<dl compact="compact">
 
8409
<dt> <b>Syntax:</b></dt>
 
8410
<dd><p>result = <i>obj</i>:sound(&quot;name&quot;, volume)
 
8411
</p>
 
8412
</dd>
 
8413
<dt> <b>Details:</b></dt>
 
8414
<dd><p>Play a sound of given name at the position of the object. The volume defaults
 
8415
to &lsquo;<samp>1</samp>&rsquo;.
 
8416
</p>
 
8417
</dd>
 
8418
<dt> <b>Syntax Samples:</b></dt>
 
8419
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>obj</var>:<b>sound</b>(&quot;<b>quake</b>&quot;)
 
8420
<var>obj</var>:<b>sound</b>(&quot;<b>quake</b>&quot;, <var>2</var>)
 
8421
</pre></td></tr></table>
 
8422
</dd>
 
8423
</dl>
 
8424
 
 
8425
 
 
8426
 
 
8427
<hr size="6">
 
8428
<a name="Group"></a>
 
8429
<table cellpadding="1" cellspacing="1" border="0">
 
8430
<tr><td valign="middle" align="left">[<a href="#Object-Sound" title="Previous section in reading order"> &lt; </a>]</td>
 
8431
<td valign="middle" align="left">[<a href="#Group-Messaging" title="Next section in reading order"> &gt; </a>]</td>
 
8432
<td valign="middle" align="left"> &nbsp; </td>
 
8433
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8434
<td valign="middle" align="left">[<a href="#Lua-API" title="Up section"> Up </a>]</td>
 
8435
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8436
<td valign="middle" align="left"> &nbsp; </td>
 
8437
<td valign="middle" align="left"> &nbsp; </td>
 
8438
<td valign="middle" align="left"> &nbsp; </td>
 
8439
<td valign="middle" align="left"> &nbsp; </td>
 
8440
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8441
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8442
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8443
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8444
</tr></table>
 
8445
<a name="Group-1"></a>
 
8446
<h2 class="section">5.7 Group</h2>
 
8447
 
 
8448
<p>A group is a sorted set of <a href="#Object">Object</a>s. Every object can be contained just
 
8449
in one instance in the group. In contrast to a Lua table the group is a constant
 
8450
value datatype. Once you retrieved a group it can not be modified. But you can
 
8451
calculate and apply operators like join, intersection and difference on
 
8452
groups and generate thereby other group values as results.
 
8453
</p>
 
8454
<p>Even though groups as values are long living you should be careful in keeping
 
8455
a group longer than a callback evaluation. Groups contain object references and
 
8456
objects can be killed. Thus a prior retrieved group may contain invalid
 
8457
object references on a subsequent callback evaluation. This may be uncritical
 
8458
if you just send a message to a group, but in other cases you may need to
 
8459
clean the group from invalid members (see below).
 
8460
</p>
 
8461
<p>You create a group by listing the contained objects as arguments to the
 
8462
&lsquo;<samp>grp()</samp>&rsquo; <a href="#Functions">Functions</a>, by retrieving objects from the <a href="#NamedObjects">NamedObjects</a>
 
8463
repository or as result of other methods and calculations.
 
8464
</p>
 
8465
<p>As groups are constant the sequence of contained objects is stable. All
 
8466
operations that generate resulting new groups maintain this sequence as far
 
8467
as possible. E.g. a join of two groups takes the objects of the first group
 
8468
in the given sequence and appends the additional objects of the second group
 
8469
in the sequence they appear in the second group.
 
8470
</p>
 
8471
<p>All group operations that return new groups clean their results from any
 
8472
meanwhile invalid &lsquo;<samp>NULL</samp>&rsquo; object references. You can use this feature
 
8473
to clean a group by the function &lsquo;<samp>grp()</samp>&rsquo;.
 
8474
</p>
 
8475
<p>Any message sent to a group will be forwarded to all its members in sequence.
 
8476
An attribute write access to a group results in series of attribute writes
 
8477
on every group member in sequence, too.
 
8478
</p>
 
8479
<p>But of course you can iterate over a group and access every member by index
 
8480
access. Several special methods for common group evaluations like shuffling,
 
8481
subgroup, sort, etc. are supported, too.
 
8482
</p>
 
8483
<p>For task driven samples see section <a href="#Group-Tasks">Group Tasks</a>.
 
8484
</p>
 
8485
<table class="menu" border="0" cellspacing="0">
 
8486
<tr><td align="left" valign="top"><a href="#Group-Messaging">5.7.1 Group Messaging</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                  Method Operator &lsquo;<samp>:</samp>&rsquo;
 
8487
</td></tr>
 
8488
<tr><td align="left" valign="top"><a href="#Group-Attribute-Write">5.7.2 Group Attribute Write</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Index Operators &lsquo;<samp>[]</samp>&rsquo;
 
8489
</td></tr>
 
8490
<tr><td align="left" valign="top"><a href="#Group-Comparison">5.7.3 Group Comparison</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 Equality &lsquo;<samp>==</samp>&rsquo; and Inequality &lsquo;<samp>~=</samp>&rsquo;
 
8491
</td></tr>
 
8492
<tr><td align="left" valign="top"><a href="#Group-Length">5.7.4 Group Length</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     Operator &lsquo;<samp>#</samp>&rsquo;
 
8493
</td></tr>
 
8494
<tr><td align="left" valign="top"><a href="#Group-Member-Access">5.7.5 Group Member Access</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              Index Operators &lsquo;<samp>[]</samp>&rsquo;
 
8495
</td></tr>
 
8496
<tr><td align="left" valign="top"><a href="#Group-Loop">5.7.6 Group Loop</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                       &lsquo;<samp>for obj in group do ... end</samp>&rsquo;
 
8497
</td></tr>
 
8498
<tr><td align="left" valign="top"><a href="#Group-Join">5.7.7 Group Join</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                       Operator &lsquo;<samp>+</samp>&rsquo;
 
8499
</td></tr>
 
8500
<tr><td align="left" valign="top"><a href="#Group-Intersection">5.7.8 Group Intersection</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               Operator &lsquo;<samp>*</samp>&rsquo;
 
8501
</td></tr>
 
8502
<tr><td align="left" valign="top"><a href="#Group-Difference">5.7.9 Group Difference</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 Operator &lsquo;<samp>-</samp>&rsquo;
 
8503
</td></tr>
 
8504
<tr><td align="left" valign="top"><a href="#Group-Shuffle">5.7.10 Group Shuffle</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                    Method &lsquo;<samp>shuffle()</samp>&rsquo;
 
8505
</td></tr>
 
8506
<tr><td align="left" valign="top"><a href="#Group-Sorting">5.7.11 Group Sorting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                    Method &lsquo;<samp>sort()</samp>&rsquo;
 
8507
</td></tr>
 
8508
<tr><td align="left" valign="top"><a href="#Group-Subset">5.7.12 Group Subset</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     Method &lsquo;<samp>sub()</samp>&rsquo;
 
8509
</td></tr>
 
8510
<tr><td align="left" valign="top"><a href="#Group-Nearest-Object">5.7.13 Group Nearest Object</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Method &lsquo;<samp>nearest()</samp>&rsquo;
 
8511
</td></tr>
 
8512
</table>
 
8513
 
 
8514
<hr size="6">
 
8515
<a name="Group-Messaging"></a>
 
8516
<table cellpadding="1" cellspacing="1" border="0">
 
8517
<tr><td valign="middle" align="left">[<a href="#Group" title="Previous section in reading order"> &lt; </a>]</td>
 
8518
<td valign="middle" align="left">[<a href="#Group-Attribute-Write" title="Next section in reading order"> &gt; </a>]</td>
 
8519
<td valign="middle" align="left"> &nbsp; </td>
 
8520
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8521
<td valign="middle" align="left">[<a href="#Group" title="Up section"> Up </a>]</td>
 
8522
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8523
<td valign="middle" align="left"> &nbsp; </td>
 
8524
<td valign="middle" align="left"> &nbsp; </td>
 
8525
<td valign="middle" align="left"> &nbsp; </td>
 
8526
<td valign="middle" align="left"> &nbsp; </td>
 
8527
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8528
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8529
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8530
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8531
</tr></table>
 
8532
<a name="Group-Messaging-1"></a>
 
8533
<h3 class="subsection">5.7.1 Group Messaging</h3>
 
8534
 
 
8535
<dl compact="compact">
 
8536
<dt> <b>Syntax:</b></dt>
 
8537
<dd><p>result = <i>group</i>:message(&quot;msg&quot;, value)
 
8538
</p>
 
8539
<p>result = <i>group</i>:msg(value)
 
8540
</p>
 
8541
</dd>
 
8542
<dt> <b>Details:</b></dt>
 
8543
<dd><p>Send a message with a given value or &lsquo;<samp>nil</samp>&rsquo; to all objects in the group.
 
8544
Every message can be sent directly as a method with the given message name.
 
8545
When an object reference is invalid the message is simply ignored. The result
 
8546
is the return value of the message to the last object in the group, or &lsquo;<samp>nil</samp>&rsquo;
 
8547
for an empty group.
 
8548
</p>
 
8549
<p>You are even allowed to send a &lsquo;<samp>kill()</samp>&rsquo; message to all objects in a group.
 
8550
The objects will be killed, but the group remains filled with invalid &lsquo;<samp>NULL</samp>&rsquo;
 
8551
object references.
 
8552
</p>
 
8553
</dd>
 
8554
<dt> <b>Syntax Samples:</b></dt>
 
8555
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>value</var> = <var>group</var>:<b>message</b>(&quot;<b>open</b>&quot;)
 
8556
<var>value</var> = <var>group</var>:<b>open</b>()
 
8557
<var>value</var> = <var>group</var>:<b>message</b>(&quot;<b>signal</b>&quot;, <var>1</var>)
 
8558
<var>value</var> = <var>group</var>:<b>signal</b>(<var>1</var>)
 
8559
<var>value</var> = <var>group</var>:<b>kill</b>()
 
8560
</pre></td></tr></table>
 
8561
</dd>
 
8562
</dl>
 
8563
 
 
8564
<hr size="6">
 
8565
<a name="Group-Attribute-Write"></a>
 
8566
<table cellpadding="1" cellspacing="1" border="0">
 
8567
<tr><td valign="middle" align="left">[<a href="#Group-Messaging" title="Previous section in reading order"> &lt; </a>]</td>
 
8568
<td valign="middle" align="left">[<a href="#Group-Comparison" title="Next section in reading order"> &gt; </a>]</td>
 
8569
<td valign="middle" align="left"> &nbsp; </td>
 
8570
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8571
<td valign="middle" align="left">[<a href="#Group" title="Up section"> Up </a>]</td>
 
8572
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8573
<td valign="middle" align="left"> &nbsp; </td>
 
8574
<td valign="middle" align="left"> &nbsp; </td>
 
8575
<td valign="middle" align="left"> &nbsp; </td>
 
8576
<td valign="middle" align="left"> &nbsp; </td>
 
8577
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8578
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8579
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8580
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8581
</tr></table>
 
8582
<a name="Group-Attribute-Write-1"></a>
 
8583
<h3 class="subsection">5.7.2 Group Attribute Write</h3>
 
8584
 
 
8585
<dl compact="compact">
 
8586
<dt> <b>Syntax:</b></dt>
 
8587
<dd><p><i>group</i>[&quot;attributename&quot;] = value
 
8588
</p>
 
8589
<p><i>group</i>:set({attributename1=value1, attributename2=value2,...})
 
8590
</p>
 
8591
</dd>
 
8592
<dt> <b>Details:</b></dt>
 
8593
<dd><p>Set attributes as described in the following chapters or custom attributes on
 
8594
all objects of the group. The &lsquo;<samp>set</samp>&rsquo; method allows you to set multiple
 
8595
attributes at once. Attribute writes are ignored if an object reference is
 
8596
invalid. Attribute read on groups in not allowed - the group index read is
 
8597
overloaded as a group member access.
 
8598
</p>
 
8599
</dd>
 
8600
<dt> <b>Syntax Samples:</b></dt>
 
8601
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>group</var>[&quot;<b>color</b>&quot;] = <var>BLACK</var>
 
8602
<var>group</var>.<b>color</b> = <var>BLACK</var>
 
8603
<var>group</var>:<b>set</b>({<b>target</b>=<var>mydoor</var>, <b>action</b>=&quot;<b>open</b>&quot;})
 
8604
</pre></td></tr></table>
 
8605
</dd>
 
8606
</dl>
 
8607
 
 
8608
<hr size="6">
 
8609
<a name="Group-Comparison"></a>
 
8610
<table cellpadding="1" cellspacing="1" border="0">
 
8611
<tr><td valign="middle" align="left">[<a href="#Group-Attribute-Write" title="Previous section in reading order"> &lt; </a>]</td>
 
8612
<td valign="middle" align="left">[<a href="#Group-Length" title="Next section in reading order"> &gt; </a>]</td>
 
8613
<td valign="middle" align="left"> &nbsp; </td>
 
8614
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8615
<td valign="middle" align="left">[<a href="#Group" title="Up section"> Up </a>]</td>
 
8616
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8617
<td valign="middle" align="left"> &nbsp; </td>
 
8618
<td valign="middle" align="left"> &nbsp; </td>
 
8619
<td valign="middle" align="left"> &nbsp; </td>
 
8620
<td valign="middle" align="left"> &nbsp; </td>
 
8621
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8622
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8623
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8624
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8625
</tr></table>
 
8626
<a name="Group-Comparison-1"></a>
 
8627
<h3 class="subsection">5.7.3 Group Comparison</h3>
 
8628
 
 
8629
<dl compact="compact">
 
8630
<dt> <b>Syntax:</b></dt>
 
8631
<dd><p>result = <i>group1</i> &lt;==|~=&gt; <i>group2</i>
 
8632
</p>
 
8633
</dd>
 
8634
<dt> <b>Details:</b></dt>
 
8635
<dd><p>A comparison of two groups. Two groups are equal if both contain the same set
 
8636
of objects independent of their sequence within both groups. Otherwise they are
 
8637
unequal.
 
8638
</p>
 
8639
</dd>
 
8640
<dt> <b>Syntax Samples:</b></dt>
 
8641
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>bool</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>) == <i>grp</i>(<var>obj2</var>, <var>obj1</var>)  -- = true
 
8642
<var>bool</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>) == <i>grp</i>(<var>obj1</var>, <var>obj3</var>)  -- = false, if different object contents
 
8643
<var>bool</var> = <i>grp</i>(<var>obj1</var>) ~= <i>grp</i>(<var>obj2</var>, <var>obj1</var>)        -- = true, if different object contents
 
8644
</pre></td></tr></table>
 
8645
</dd>
 
8646
</dl>
 
8647
 
 
8648
<hr size="6">
 
8649
<a name="Group-Length"></a>
 
8650
<table cellpadding="1" cellspacing="1" border="0">
 
8651
<tr><td valign="middle" align="left">[<a href="#Group-Comparison" title="Previous section in reading order"> &lt; </a>]</td>
 
8652
<td valign="middle" align="left">[<a href="#Group-Member-Access" title="Next section in reading order"> &gt; </a>]</td>
 
8653
<td valign="middle" align="left"> &nbsp; </td>
 
8654
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8655
<td valign="middle" align="left">[<a href="#Group" title="Up section"> Up </a>]</td>
 
8656
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8657
<td valign="middle" align="left"> &nbsp; </td>
 
8658
<td valign="middle" align="left"> &nbsp; </td>
 
8659
<td valign="middle" align="left"> &nbsp; </td>
 
8660
<td valign="middle" align="left"> &nbsp; </td>
 
8661
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8662
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8663
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8664
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8665
</tr></table>
 
8666
<a name="Group-Length-1"></a>
 
8667
<h3 class="subsection">5.7.4 Group Length</h3>
 
8668
 
 
8669
<dl compact="compact">
 
8670
<dt> <b>Syntax:</b></dt>
 
8671
<dd><p>result = #<i>group</i>
 
8672
</p>
 
8673
</dd>
 
8674
<dt> <b>Details:</b></dt>
 
8675
<dd><p>Number of objects contained in the group. Invalid &lsquo;<samp>NULL</samp>&rsquo; object references
 
8676
are counted, too.
 
8677
</p>
 
8678
</dd>
 
8679
<dt> <b>Syntax Samples:</b></dt>
 
8680
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>number</var> = #<i>grp</i>(<var>obj1</var>, <var>obj2</var>)         -- = 2
 
8681
for <var>i</var> = <var>1</var>, #<var>group</var> do <var>obj</var> = <var>group</var>[<var>i</var>] ... end
 
8682
</pre></td></tr></table>
 
8683
</dd>
 
8684
</dl>
 
8685
 
 
8686
<hr size="6">
 
8687
<a name="Group-Member-Access"></a>
 
8688
<table cellpadding="1" cellspacing="1" border="0">
 
8689
<tr><td valign="middle" align="left">[<a href="#Group-Length" title="Previous section in reading order"> &lt; </a>]</td>
 
8690
<td valign="middle" align="left">[<a href="#Group-Loop" title="Next section in reading order"> &gt; </a>]</td>
 
8691
<td valign="middle" align="left"> &nbsp; </td>
 
8692
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8693
<td valign="middle" align="left">[<a href="#Group" title="Up section"> Up </a>]</td>
 
8694
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8695
<td valign="middle" align="left"> &nbsp; </td>
 
8696
<td valign="middle" align="left"> &nbsp; </td>
 
8697
<td valign="middle" align="left"> &nbsp; </td>
 
8698
<td valign="middle" align="left"> &nbsp; </td>
 
8699
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8700
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8701
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8702
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8703
</tr></table>
 
8704
<a name="Group-Member-Access-1"></a>
 
8705
<h3 class="subsection">5.7.5 Group Member Access</h3>
 
8706
 
 
8707
<dl compact="compact">
 
8708
<dt> <b>Syntax:</b></dt>
 
8709
<dd><p>result = <i>group</i>[<i>index</i>]
 
8710
</p>
 
8711
<p>result = <i>group</i>[<i>obj</i>]
 
8712
</p>
 
8713
</dd>
 
8714
<dt> <b>Details:</b></dt>
 
8715
<dd><p>An index like read access with an index number between 1 and #<i>group</i> returns
 
8716
the object in the related group sequence position. Negative indices between
 
8717
-#<i>group</i> and -1 give the same objects. Thus you can always access the last
 
8718
object at index -1. All other index positions return an invalid &lsquo;<samp>NULL</samp>&rsquo;
 
8719
object - not &lsquo;<samp>nil</samp>&rsquo; as tables do! Thus you are always able to send messages
 
8720
to returned object references.
 
8721
</p>
 
8722
<p>An index like read access with an object as index returns the sequence position
 
8723
number, the number index, of the object if it is contained in the group or
 
8724
&lsquo;<samp>nil</samp>&rsquo; if it is not contained.
 
8725
</p>
 
8726
</dd>
 
8727
<dt> <b>Syntax Samples:</b></dt>
 
8728
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>object</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>)[2]     -- = obj2
 
8729
<var>object</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>)[-1]    -- = obj2
 
8730
<var>object</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>)[0]     -- = NULL object
 
8731
for <var>i</var> = <var>1</var>, #<var>group</var> do <var>obj</var> = <var>group</var>[<var>i</var>] ... end
 
8732
<var>number</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>)[<var>obj2</var>]  -- = 2
 
8733
<var>number</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>)[<var>obj3</var>]  -- = nil
 
8734
</pre></td></tr></table>
 
8735
</dd>
 
8736
</dl>
 
8737
 
 
8738
<hr size="6">
 
8739
<a name="Group-Loop"></a>
 
8740
<table cellpadding="1" cellspacing="1" border="0">
 
8741
<tr><td valign="middle" align="left">[<a href="#Group-Member-Access" title="Previous section in reading order"> &lt; </a>]</td>
 
8742
<td valign="middle" align="left">[<a href="#Group-Join" title="Next section in reading order"> &gt; </a>]</td>
 
8743
<td valign="middle" align="left"> &nbsp; </td>
 
8744
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8745
<td valign="middle" align="left">[<a href="#Group" title="Up section"> Up </a>]</td>
 
8746
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8747
<td valign="middle" align="left"> &nbsp; </td>
 
8748
<td valign="middle" align="left"> &nbsp; </td>
 
8749
<td valign="middle" align="left"> &nbsp; </td>
 
8750
<td valign="middle" align="left"> &nbsp; </td>
 
8751
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8752
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8753
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8754
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8755
</tr></table>
 
8756
<a name="Group-Loop-1"></a>
 
8757
<h3 class="subsection">5.7.6 Group Loop</h3>
 
8758
 
 
8759
<dl compact="compact">
 
8760
<dt> <b>Syntax:</b></dt>
 
8761
<dd><p>for <i>obj</i> in <i>group</i> do ... end
 
8762
</p>
 
8763
</dd>
 
8764
<dt> <b>Details:</b></dt>
 
8765
<dd><p>Looping over all objects contained in a group. The loop occurs in the sequence
 
8766
of the contained objects and includes all objects, even invalid &lsquo;<samp>NULL</samp>&rsquo;
 
8767
object references.
 
8768
</p>
 
8769
</dd>
 
8770
<dt> <b>Syntax Samples:</b></dt>
 
8771
<dd><table><tr><td>&nbsp;</td><td><pre class="example">for <var>obj</var> in <var>group</var> do <var>obj</var>:<b>toggle</b>() end
 
8772
</pre></td></tr></table>
 
8773
</dd>
 
8774
</dl>
 
8775
 
 
8776
 
 
8777
<hr size="6">
 
8778
<a name="Group-Join"></a>
 
8779
<table cellpadding="1" cellspacing="1" border="0">
 
8780
<tr><td valign="middle" align="left">[<a href="#Group-Loop" title="Previous section in reading order"> &lt; </a>]</td>
 
8781
<td valign="middle" align="left">[<a href="#Group-Intersection" title="Next section in reading order"> &gt; </a>]</td>
 
8782
<td valign="middle" align="left"> &nbsp; </td>
 
8783
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8784
<td valign="middle" align="left">[<a href="#Group" title="Up section"> Up </a>]</td>
 
8785
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8786
<td valign="middle" align="left"> &nbsp; </td>
 
8787
<td valign="middle" align="left"> &nbsp; </td>
 
8788
<td valign="middle" align="left"> &nbsp; </td>
 
8789
<td valign="middle" align="left"> &nbsp; </td>
 
8790
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8791
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8792
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8793
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8794
</tr></table>
 
8795
<a name="Group-Join-1"></a>
 
8796
<h3 class="subsection">5.7.7 Group Join</h3>
 
8797
 
 
8798
<dl compact="compact">
 
8799
<dt> <b>Syntax:</b></dt>
 
8800
<dd><p>result = <i>group</i> + &lt;<i>obj</i>|<i>group</i>&gt;
 
8801
</p>
 
8802
<p>result = &lt;<i>obj</i>|<i>group</i>&gt; + <i>group</i>
 
8803
</p>
 
8804
 
 
8805
</dd>
 
8806
<dt> <b>Details:</b></dt>
 
8807
<dd><p>A new set containing any object of both arguments just once, is returned. The
 
8808
object sequence is maintained. If an object is member of both arguments the new
 
8809
group will contain just one object reference, namely the first one in sequence.
 
8810
</p>
 
8811
</dd>
 
8812
<dt> <b>Syntax Samples:</b></dt>
 
8813
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newgroup</var> = <var>obj1</var> + <i>grp</i>(<var>obj2</var>, <var>obj3</var>, <var>obj1</var>)   -- = grp(obj1, obj2, obj3)
 
8814
<var>newgroup</var> = <i>grp</i>(<var>obj2</var>, <var>obj3</var>) + <i>grp</i>(<var>obj1</var>, <var>obj3</var>)   -- = grp(obj2, obj3, obj1)
 
8815
</pre></td></tr></table>
 
8816
</dd>
 
8817
</dl>
 
8818
 
 
8819
<hr size="6">
 
8820
<a name="Group-Intersection"></a>
 
8821
<table cellpadding="1" cellspacing="1" border="0">
 
8822
<tr><td valign="middle" align="left">[<a href="#Group-Join" title="Previous section in reading order"> &lt; </a>]</td>
 
8823
<td valign="middle" align="left">[<a href="#Group-Difference" title="Next section in reading order"> &gt; </a>]</td>
 
8824
<td valign="middle" align="left"> &nbsp; </td>
 
8825
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8826
<td valign="middle" align="left">[<a href="#Group" title="Up section"> Up </a>]</td>
 
8827
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8828
<td valign="middle" align="left"> &nbsp; </td>
 
8829
<td valign="middle" align="left"> &nbsp; </td>
 
8830
<td valign="middle" align="left"> &nbsp; </td>
 
8831
<td valign="middle" align="left"> &nbsp; </td>
 
8832
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8833
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8834
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8835
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8836
</tr></table>
 
8837
<a name="Group-Intersection-1"></a>
 
8838
<h3 class="subsection">5.7.8 Group Intersection</h3>
 
8839
 
 
8840
<dl compact="compact">
 
8841
<dt> <b>Syntax:</b></dt>
 
8842
<dd><p>result = &lt;<i>obj</i>|<i>group</i>&gt; * <i>group</i>
 
8843
</p>
 
8844
<p>result = <i>group</i> * &lt;<i>obj</i>|<i>group</i>&gt;
 
8845
</p>
 
8846
</dd>
 
8847
<dt> <b>Details:</b></dt>
 
8848
<dd><p>A new set containing just those objects that are contained in both arguments. The
 
8849
objects are returned in the same sequence as they appear in the first argument.
 
8850
</p>
 
8851
</dd>
 
8852
<dt> <b>Syntax Samples:</b></dt>
 
8853
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newgroup</var> = <var>obj1</var> * <i>grp</i>(<var>obj2</var>, <var>obj1</var>)  -- = grp(obj1)
 
8854
<var>newgroup</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>) * <i>grp</i>(<var>obj2</var>, <var>obj1</var>, <var>obj3</var>)  -- = grp(obj1, obj2)
 
8855
</pre></td></tr></table>
 
8856
</dd>
 
8857
</dl>
 
8858
 
 
8859
<hr size="6">
 
8860
<a name="Group-Difference"></a>
 
8861
<table cellpadding="1" cellspacing="1" border="0">
 
8862
<tr><td valign="middle" align="left">[<a href="#Group-Intersection" title="Previous section in reading order"> &lt; </a>]</td>
 
8863
<td valign="middle" align="left">[<a href="#Group-Shuffle" title="Next section in reading order"> &gt; </a>]</td>
 
8864
<td valign="middle" align="left"> &nbsp; </td>
 
8865
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8866
<td valign="middle" align="left">[<a href="#Group" title="Up section"> Up </a>]</td>
 
8867
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8868
<td valign="middle" align="left"> &nbsp; </td>
 
8869
<td valign="middle" align="left"> &nbsp; </td>
 
8870
<td valign="middle" align="left"> &nbsp; </td>
 
8871
<td valign="middle" align="left"> &nbsp; </td>
 
8872
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8873
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8874
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8875
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8876
</tr></table>
 
8877
<a name="Group-Difference-1"></a>
 
8878
<h3 class="subsection">5.7.9 Group Difference</h3>
 
8879
 
 
8880
<dl compact="compact">
 
8881
<dt> <b>Syntax:</b></dt>
 
8882
<dd><p>result = &lt;<i>obj</i>|<i>group</i>&gt; - <i>group</i>
 
8883
</p>
 
8884
<p>result = <i>group</i> - &lt;<i>obj</i>|<i>group</i>&gt;
 
8885
</p>
 
8886
</dd>
 
8887
<dt> <b>Details:</b></dt>
 
8888
<dd><p>A new set containing just those objects of the first argument, that are not
 
8889
contained in the second argument is returned. The sequence of the objects
 
8890
in the new group is the same as in the first argument.
 
8891
</p>
 
8892
</dd>
 
8893
<dt> <b>Syntax Samples:</b></dt>
 
8894
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newgroup</var> = <var>obj1</var> - <i>grp</i>(<var>obj2</var>, <var>obj1</var>)  -- = grp()
 
8895
<var>newgroup</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>, <var>obj3</var>) - <i>grp</i>(<var>obj2</var>, <var>obj4</var>)  -- = grp(obj1, obj3)
 
8896
</pre></td></tr></table>
 
8897
</dd>
 
8898
</dl>
 
8899
 
 
8900
<hr size="6">
 
8901
<a name="Group-Shuffle"></a>
 
8902
<table cellpadding="1" cellspacing="1" border="0">
 
8903
<tr><td valign="middle" align="left">[<a href="#Group-Difference" title="Previous section in reading order"> &lt; </a>]</td>
 
8904
<td valign="middle" align="left">[<a href="#Group-Sorting" title="Next section in reading order"> &gt; </a>]</td>
 
8905
<td valign="middle" align="left"> &nbsp; </td>
 
8906
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8907
<td valign="middle" align="left">[<a href="#Group" title="Up section"> Up </a>]</td>
 
8908
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8909
<td valign="middle" align="left"> &nbsp; </td>
 
8910
<td valign="middle" align="left"> &nbsp; </td>
 
8911
<td valign="middle" align="left"> &nbsp; </td>
 
8912
<td valign="middle" align="left"> &nbsp; </td>
 
8913
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8914
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8915
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8916
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8917
</tr></table>
 
8918
<a name="Group-Shuffle-1"></a>
 
8919
<h3 class="subsection">5.7.10 Group Shuffle</h3>
 
8920
 
 
8921
<dl compact="compact">
 
8922
<dt> <b>Syntax:</b></dt>
 
8923
<dd><p>result = <i>group</i>:shuffle()
 
8924
</p>
 
8925
</dd>
 
8926
<dt> <b>Details:</b></dt>
 
8927
<dd><p>Returns a new group with the same objects in another random sequence. Note that
 
8928
all invalid &lsquo;<samp>NULL</samp>&rsquo; object references are removed in the resulting group by
 
8929
this method call.
 
8930
</p>
 
8931
</dd>
 
8932
<dt> <b>Syntax Samples:</b></dt>
 
8933
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newgroup</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>)
 
8934
</pre></td></tr></table>
 
8935
</dd>
 
8936
</dl>
 
8937
 
 
8938
<hr size="6">
 
8939
<a name="Group-Sorting"></a>
 
8940
<table cellpadding="1" cellspacing="1" border="0">
 
8941
<tr><td valign="middle" align="left">[<a href="#Group-Shuffle" title="Previous section in reading order"> &lt; </a>]</td>
 
8942
<td valign="middle" align="left">[<a href="#Group-Subset" title="Next section in reading order"> &gt; </a>]</td>
 
8943
<td valign="middle" align="left"> &nbsp; </td>
 
8944
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8945
<td valign="middle" align="left">[<a href="#Group" title="Up section"> Up </a>]</td>
 
8946
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
8947
<td valign="middle" align="left"> &nbsp; </td>
 
8948
<td valign="middle" align="left"> &nbsp; </td>
 
8949
<td valign="middle" align="left"> &nbsp; </td>
 
8950
<td valign="middle" align="left"> &nbsp; </td>
 
8951
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
8952
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
8953
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
8954
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
8955
</tr></table>
 
8956
<a name="Group-Sorting-1"></a>
 
8957
<h3 class="subsection">5.7.11 Group Sorting</h3>
 
8958
 
 
8959
<dl compact="compact">
 
8960
<dt> <b>Syntax:</b></dt>
 
8961
<dd><p>result = <i>group</i>:sort(&quot;circular&quot;)
 
8962
</p>
 
8963
<p>result = <i>group</i>:sort(&quot;linear&quot; &lt;, <i>direction</i>&gt;)
 
8964
</p>
 
8965
<p>result = <i>group</i>:sort()
 
8966
</p>
 
8967
</dd>
 
8968
<dt> <b>Details:</b></dt>
 
8969
<dd><p>Returns a new group with the same objects in another sorted sequence. Note that
 
8970
all invalid &lsquo;<samp>NULL</samp>&rsquo; object reference are removed in the resulting group by
 
8971
this method call.
 
8972
</p>
 
8973
<p>With a string argument <code>&quot;circular&quot;</code> the objects are arranged around their
 
8974
center by their angle. The distance from this center has no influence.
 
8975
</p>
 
8976
<p>With a string argument <code>&quot;linear&quot;</code> the objects are arranged in a linear
 
8977
fashion. You either supply a <a href="#Position">Position</a> as sorting direction vector, or
 
8978
the first two objects of the group will define the sorting direction as default.
 
8979
</p>
 
8980
<p>If no sorting argument is supplied the objects will be sorted by their name
 
8981
in lexical order.
 
8982
</p>
 
8983
</dd>
 
8984
<dt> <b>Syntax Samples:</b></dt>
 
8985
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newgroup</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>, <var>obj3</var>):sort(&quot;linear&quot;, po(2,1))
 
8986
<var>newgroup</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>, <var>obj3</var>):sort(&quot;circular&quot;)
 
8987
<var>newgroup</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>, <var>obj3</var>):sort()
 
8988
</pre></td></tr></table>
 
8989
</dd>
 
8990
</dl>
 
8991
 
 
8992
<hr size="6">
 
8993
<a name="Group-Subset"></a>
 
8994
<table cellpadding="1" cellspacing="1" border="0">
 
8995
<tr><td valign="middle" align="left">[<a href="#Group-Sorting" title="Previous section in reading order"> &lt; </a>]</td>
 
8996
<td valign="middle" align="left">[<a href="#Group-Nearest-Object" title="Next section in reading order"> &gt; </a>]</td>
 
8997
<td valign="middle" align="left"> &nbsp; </td>
 
8998
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
8999
<td valign="middle" align="left">[<a href="#Group" title="Up section"> Up </a>]</td>
 
9000
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9001
<td valign="middle" align="left"> &nbsp; </td>
 
9002
<td valign="middle" align="left"> &nbsp; </td>
 
9003
<td valign="middle" align="left"> &nbsp; </td>
 
9004
<td valign="middle" align="left"> &nbsp; </td>
 
9005
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9006
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9007
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9008
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9009
</tr></table>
 
9010
<a name="Group-Subset-1"></a>
 
9011
<h3 class="subsection">5.7.12 Group Subset</h3>
 
9012
 
 
9013
<dl compact="compact">
 
9014
<dt> <b>Syntax:</b></dt>
 
9015
<dd><p>result = <i>group</i>:sub(<i>number</i>)
 
9016
</p>
 
9017
<p>result = <i>group</i>:sub(<i>start</i>, <i>end</i>)
 
9018
</p>
 
9019
<p>result = <i>group</i>:sub(<i>start</i>, -<i>number</i>)
 
9020
</p>
 
9021
</dd>
 
9022
<dt> <b>Details:</b></dt>
 
9023
<dd><p>Returns a new group with a subset of the contained objects. The sequence of
 
9024
objects in the new group is identical to the sequence in the originating group.
 
9025
Note that all invalid &lsquo;<samp>NULL</samp>&rsquo; object reference are removed in the resulting
 
9026
group by this method call after determination of the sub set candidate objects.
 
9027
</p>
 
9028
<p>With a number as argument you determine the number of requested objects. A
 
9029
positive number returns the amount of objects starting with the first object
 
9030
of the group. Whereas a negative number returns objects from the tail of the
 
9031
group. In this case the absolute value determines the number of selected objects
 
9032
counted backwards from the last one in sequence.
 
9033
</p>
 
9034
<p>With two positive numbers as arguments you define the first and the last sequence
 
9035
index of the requested subset.
 
9036
</p>
 
9037
<p>With two numbers, but the second one being negative, you define the first object
 
9038
and the with the absolute value of the second number you define the amount of
 
9039
objects you want in your subset.
 
9040
</p>
 
9041
</dd>
 
9042
<dt> <b>Syntax Samples:</b></dt>
 
9043
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newgroup</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>, <var>obj3</var>, <var>obj4</var>):sub(2)     -- = grp(obj1, obj2)
 
9044
<var>newgroup</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>, <var>obj3</var>, <var>obj4</var>):sub(-2)    -- = grp(obj3, obj4)
 
9045
<var>newgroup</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>, <var>obj3</var>, <var>obj4</var>):sub(2, 4)  -- = grp(obj2, obj3, obj4)
 
9046
<var>newgroup</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>, <var>obj3</var>, <var>obj4</var>):sub(2, -2) -- = grp(obj2, obj3)
 
9047
</pre></td></tr></table>
 
9048
</dd>
 
9049
</dl>
 
9050
 
 
9051
<hr size="6">
 
9052
<a name="Group-Nearest-Object"></a>
 
9053
<table cellpadding="1" cellspacing="1" border="0">
 
9054
<tr><td valign="middle" align="left">[<a href="#Group-Subset" title="Previous section in reading order"> &lt; </a>]</td>
 
9055
<td valign="middle" align="left">[<a href="#NamedObjects" title="Next section in reading order"> &gt; </a>]</td>
 
9056
<td valign="middle" align="left"> &nbsp; </td>
 
9057
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9058
<td valign="middle" align="left">[<a href="#Group" title="Up section"> Up </a>]</td>
 
9059
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9060
<td valign="middle" align="left"> &nbsp; </td>
 
9061
<td valign="middle" align="left"> &nbsp; </td>
 
9062
<td valign="middle" align="left"> &nbsp; </td>
 
9063
<td valign="middle" align="left"> &nbsp; </td>
 
9064
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9065
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9066
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9067
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9068
</tr></table>
 
9069
<a name="Group-Nearest-Object-1"></a>
 
9070
<h3 class="subsection">5.7.13 Group Nearest Object</h3>
 
9071
 
 
9072
<dl compact="compact">
 
9073
<dt> <b>Syntax:</b></dt>
 
9074
<dd><p>result = <i>group</i>:nearest(<i>obj</i>)
 
9075
</p>
 
9076
</dd>
 
9077
<dt> <b>Details:</b></dt>
 
9078
<dd><p>Returns the object contained in the group that is nearest to the given reference
 
9079
object. The distances are calculated exactly without rounding actor positions.
 
9080
In case two objects have the same distance from the reference object one is
 
9081
chosen by chance as the result.
 
9082
</p>
 
9083
</dd>
 
9084
<dt> <b>Syntax Samples:</b></dt>
 
9085
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newobject</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>, <var>obj3</var>):nearest(<var>obj4</var>)
 
9086
</pre></td></tr></table>
 
9087
</dd>
 
9088
</dl>
 
9089
 
 
9090
 
 
9091
 
 
9092
<hr size="6">
 
9093
<a name="NamedObjects"></a>
 
9094
<table cellpadding="1" cellspacing="1" border="0">
 
9095
<tr><td valign="middle" align="left">[<a href="#Group-Nearest-Object" title="Previous section in reading order"> &lt; </a>]</td>
 
9096
<td valign="middle" align="left">[<a href="#NamedObjects-Repository-Request" title="Next section in reading order"> &gt; </a>]</td>
 
9097
<td valign="middle" align="left"> &nbsp; </td>
 
9098
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9099
<td valign="middle" align="left">[<a href="#Lua-API" title="Up section"> Up </a>]</td>
 
9100
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9101
<td valign="middle" align="left"> &nbsp; </td>
 
9102
<td valign="middle" align="left"> &nbsp; </td>
 
9103
<td valign="middle" align="left"> &nbsp; </td>
 
9104
<td valign="middle" align="left"> &nbsp; </td>
 
9105
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9106
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9107
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9108
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9109
</tr></table>
 
9110
<a name="NamedObjects-1"></a>
 
9111
<h2 class="section">5.8 NamedObjects</h2>
 
9112
 
 
9113
<p>The datatype NamedObjects is used by just one object, the singleton repository
 
9114
of named objects. Whenever you name an object, see section <a href="#Object-Naming">Object Naming</a>, this
 
9115
repository registers its name and allows you to retrieve the object lateron
 
9116
by providing its name.
 
9117
</p>
 
9118
<p>Being a singleton you can not create new NamedObjects. The singleton is stored
 
9119
at the global variable &lsquo;<samp>no</samp>&rsquo; on level load.
 
9120
</p>
 
9121
<table class="menu" border="0" cellspacing="0">
 
9122
<tr><td align="left" valign="top"><a href="#NamedObjects-Repository-Request">5.8.1 NamedObjects Repository Request</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">  Index Operator &lsquo;<samp>[]</samp>&rsquo; read
 
9123
</td></tr>
 
9124
<tr><td align="left" valign="top"><a href="#NamedObjects-Object-Naming">5.8.2 NamedObjects Object Naming</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Index Operator &lsquo;<samp>[]</samp>&rsquo; write
 
9125
</td></tr>
 
9126
</table>
 
9127
 
 
9128
<hr size="6">
 
9129
<a name="NamedObjects-Repository-Request"></a>
 
9130
<table cellpadding="1" cellspacing="1" border="0">
 
9131
<tr><td valign="middle" align="left">[<a href="#NamedObjects" title="Previous section in reading order"> &lt; </a>]</td>
 
9132
<td valign="middle" align="left">[<a href="#NamedObjects-Object-Naming" title="Next section in reading order"> &gt; </a>]</td>
 
9133
<td valign="middle" align="left"> &nbsp; </td>
 
9134
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9135
<td valign="middle" align="left">[<a href="#NamedObjects" title="Up section"> Up </a>]</td>
 
9136
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9137
<td valign="middle" align="left"> &nbsp; </td>
 
9138
<td valign="middle" align="left"> &nbsp; </td>
 
9139
<td valign="middle" align="left"> &nbsp; </td>
 
9140
<td valign="middle" align="left"> &nbsp; </td>
 
9141
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9142
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9143
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9144
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9145
</tr></table>
 
9146
<a name="NamedObjects-Repository-Request-1"></a>
 
9147
<h3 class="subsection">5.8.1 NamedObjects Repository Request</h3>
 
9148
 
 
9149
<dl compact="compact">
 
9150
<dt> <b>Syntax:</b></dt>
 
9151
<dd><p>result = no[&quot;<i>name</i>&quot;]
 
9152
</p>
 
9153
</dd>
 
9154
<dt> <b>Details:</b></dt>
 
9155
<dd><p>Request of one or several objects from the repository. If no wildcard
 
9156
characters are used in the name an <a href="#Object">Object</a> value is returned. It is either
 
9157
the unique object with the given name, or an invalid &lsquo;<samp>NULL</samp>&rsquo; object if no
 
9158
object exists with the given name.
 
9159
</p>
 
9160
<p>If the requested name contains a wildcard character, either an asterisk &lsquo;<samp>*</samp>&rsquo;
 
9161
or a question mark &lsquo;<samp>?</samp>&rsquo;, a <a href="#Group">Group</a> containing all objects with matching
 
9162
names is returned. An asterisk matches zero, one or several arbitrary characters.
 
9163
A question mark matches a single arbitrary character. Both wildcard characters
 
9164
can be used anywhere in the string and in arbitrary multiplicity. Anyway the
 
9165
result is always returned as a <a href="#Group">Group</a>. The group may contain multiple
 
9166
objects, just a single object, or even no objects at all when no existing object
 
9167
matches your name pattern.
 
9168
</p>
 
9169
</dd>
 
9170
<dt> <b>Syntax Samples:</b></dt>
 
9171
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>obj</var> = <i>no</i>[&quot;<var>mydoor</var>&quot;]       -- exact name match
 
9172
<var>group</var> = <i>no</i>[&quot;<var>mydoors#*</var>&quot;]  -- any suffix
 
9173
<var>group</var> = <i>no</i>[&quot;<var>mydoor?</var>&quot;]    -- just one char suffix
 
9174
<var>group</var> = <i>no</i>[&quot;<var>mydoors?#*</var>&quot;] -- matches e.g. &quot;mydoorsA#123435&quot;, &quot;mydoorsB#1213&quot;
 
9175
</pre></td></tr></table>
 
9176
</dd>
 
9177
</dl>
 
9178
 
 
9179
<hr size="6">
 
9180
<a name="NamedObjects-Object-Naming"></a>
 
9181
<table cellpadding="1" cellspacing="1" border="0">
 
9182
<tr><td valign="middle" align="left">[<a href="#NamedObjects-Repository-Request" title="Previous section in reading order"> &lt; </a>]</td>
 
9183
<td valign="middle" align="left">[<a href="#PositionList" title="Next section in reading order"> &gt; </a>]</td>
 
9184
<td valign="middle" align="left"> &nbsp; </td>
 
9185
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9186
<td valign="middle" align="left">[<a href="#NamedObjects" title="Up section"> Up </a>]</td>
 
9187
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9188
<td valign="middle" align="left"> &nbsp; </td>
 
9189
<td valign="middle" align="left"> &nbsp; </td>
 
9190
<td valign="middle" align="left"> &nbsp; </td>
 
9191
<td valign="middle" align="left"> &nbsp; </td>
 
9192
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9193
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9194
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9195
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9196
</tr></table>
 
9197
<a name="NamedObjects-Object-Naming-1"></a>
 
9198
<h3 class="subsection">5.8.2 NamedObjects Object Naming</h3>
 
9199
 
 
9200
<dl compact="compact">
 
9201
<dt> <b>Syntax:</b></dt>
 
9202
<dd><p>no[&quot;<i>name</i>&quot;] = <i>obj</i>
 
9203
</p>
 
9204
</dd>
 
9205
<dt> <b>Details:</b></dt>
 
9206
<dd><p>Index write accesses to the singleton allows you to name or rename objects. Note
 
9207
that you can name or rename objects by <a href="#Object">Object</a> attribute writes, too.
 
9208
The object&rsquo;s name is stored as attribute <code>&quot;name&quot;</code>. Both ways of naming
 
9209
an object are totally equivalent.
 
9210
</p>
 
9211
</dd>
 
9212
<dt> <b>Syntax Samples:</b></dt>
 
9213
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><i>no</i>[&quot;<var>myobject</var>&quot;] = <var>obj</var>
 
9214
</pre></td></tr></table>
 
9215
</dd>
 
9216
</dl>
 
9217
 
 
9218
 
 
9219
 
 
9220
<hr size="6">
 
9221
<a name="PositionList"></a>
 
9222
<table cellpadding="1" cellspacing="1" border="0">
 
9223
<tr><td valign="middle" align="left">[<a href="#NamedObjects-Object-Naming" title="Previous section in reading order"> &lt; </a>]</td>
 
9224
<td valign="middle" align="left">[<a href="#PositionList-Comparison" title="Next section in reading order"> &gt; </a>]</td>
 
9225
<td valign="middle" align="left"> &nbsp; </td>
 
9226
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9227
<td valign="middle" align="left">[<a href="#Lua-API" title="Up section"> Up </a>]</td>
 
9228
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9229
<td valign="middle" align="left"> &nbsp; </td>
 
9230
<td valign="middle" align="left"> &nbsp; </td>
 
9231
<td valign="middle" align="left"> &nbsp; </td>
 
9232
<td valign="middle" align="left"> &nbsp; </td>
 
9233
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9234
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9235
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9236
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9237
</tr></table>
 
9238
<a name="PositionList-1"></a>
 
9239
<h2 class="section">5.9 PositionList</h2>
 
9240
 
 
9241
<p>A PositionList is a sorted set, known as list, of <a href="#Position">Position</a>s. Like a
 
9242
<a href="#Group">Group</a> this container is a constant datatype, that can not be modified. But
 
9243
you can easily compose new position lists by concatenation of existing lists and
 
9244
single positions.
 
9245
</p>
 
9246
<p>An important difference to a group is the ability of a position list to store
 
9247
a position multiple times at different locations in its sequence. Thus a
 
9248
position list is suited to describe paths, even paths that are closed or
 
9249
cross itself.
 
9250
</p>
 
9251
<p>As <a href="#Position">Position</a>s are values that never become invalid, position lists once
 
9252
created will never change or get invalid. They are true values themselves. Thus
 
9253
they are the containers of choice for longterm storage.
 
9254
</p>
 
9255
<p>You can easily create a position list by <a href="#PositionList-Conversion">PositionList Conversion</a>, which
 
9256
is featured by the <a href="#Positions-Repository">Positions Repository</a> singleton and allows you to
 
9257
transform a group into a position list by the simple expression
 
9258
&lsquo;<samp>po(group)</samp>&rsquo;. On the other hand you can retrieve all <a href="#Object">Object</a>s of a
 
9259
basic kind located along a position list path by <a href="#Functions">Functions</a> like
 
9260
&lsquo;<samp>st(polist)</samp>&rsquo;, &lsquo;<samp>it(polist)</samp>&rsquo; and &lsquo;<samp>fl(polist)</samp>&rsquo;.
 
9261
</p>
 
9262
<p>As a unique floor object is guaranteed to be on every grid position, you can
 
9263
convert a given list of unique grid positions to a group of floors without
 
9264
loosing any information. Now you can apply all group methods on the floors, like
 
9265
shuffling, sorting, subgrouping, etc.. Finally you can convert the resulting
 
9266
group back to a persistent position list. Of course the conversions preserve
 
9267
the sequence of members.
 
9268
</p>
 
9269
<p>Some additional position specific operators are supplied to allow simple
 
9270
translations and stretchings of position lists.
 
9271
</p>
 
9272
<p>Note that in contrast to a <a href="#Group">Group</a> this datatype can not directly be stored
 
9273
in an <a href="#Object">Object</a> attribute. But you can always store a <a href="#Group">Group</a> of floors
 
9274
in an attribute. In case floors can be destroyed you may need to name these
 
9275
floors as discussed in <a href="#Named-Positions">Named Positions</a>.
 
9276
</p>
 
9277
<p>For task driven samples see section <a href="#Named-Positions-Tasks">Named Positions Tasks</a>.
 
9278
</p>
 
9279
<table class="menu" border="0" cellspacing="0">
 
9280
<tr><td align="left" valign="top"><a href="#PositionList-Comparison">5.9.1 PositionList Comparison</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Equality &lsquo;<samp>==</samp>&rsquo; and Inequality &lsquo;<samp>~=</samp>&rsquo;
 
9281
</td></tr>
 
9282
<tr><td align="left" valign="top"><a href="#PositionList-Length">5.9.2 PositionList Length</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              Operator &lsquo;<samp>#</samp>&rsquo;
 
9283
</td></tr>
 
9284
<tr><td align="left" valign="top"><a href="#PositionList-Member-Access">5.9.3 PositionList Member Access</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Index Operators &lsquo;<samp>[]</samp>&rsquo;
 
9285
</td></tr>
 
9286
<tr><td align="left" valign="top"><a href="#PositionList-Concatenation">5.9.4 PositionList Concatenation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Operator &lsquo;<samp>..</samp>&rsquo;
 
9287
</td></tr>
 
9288
<tr><td align="left" valign="top"><a href="#PositionList-Translation">5.9.5 PositionList Translation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Operators &lsquo;<samp>+</samp>&rsquo; and &lsquo;<samp>-</samp>&rsquo;
 
9289
</td></tr>
 
9290
<tr><td align="left" valign="top"><a href="#PositionList-Stretching">5.9.6 PositionList Stretching</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Operators &lsquo;<samp>*</samp>&rsquo; and &lsquo;<samp>/</samp>&rsquo;
 
9291
</td></tr>
 
9292
</table>
 
9293
 
 
9294
<hr size="6">
 
9295
<a name="PositionList-Comparison"></a>
 
9296
<table cellpadding="1" cellspacing="1" border="0">
 
9297
<tr><td valign="middle" align="left">[<a href="#PositionList" title="Previous section in reading order"> &lt; </a>]</td>
 
9298
<td valign="middle" align="left">[<a href="#PositionList-Length" title="Next section in reading order"> &gt; </a>]</td>
 
9299
<td valign="middle" align="left"> &nbsp; </td>
 
9300
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9301
<td valign="middle" align="left">[<a href="#PositionList" title="Up section"> Up </a>]</td>
 
9302
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9303
<td valign="middle" align="left"> &nbsp; </td>
 
9304
<td valign="middle" align="left"> &nbsp; </td>
 
9305
<td valign="middle" align="left"> &nbsp; </td>
 
9306
<td valign="middle" align="left"> &nbsp; </td>
 
9307
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9308
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9309
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9310
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9311
</tr></table>
 
9312
<a name="PositionList-Comparison-1"></a>
 
9313
<h3 class="subsection">5.9.1 PositionList Comparison</h3>
 
9314
 
 
9315
<dl compact="compact">
 
9316
<dt> <b>Syntax:</b></dt>
 
9317
<dd><p>result = <i>polist1</i> &lt;==|~=&gt; <i>polist2</i>
 
9318
</p>
 
9319
</dd>
 
9320
<dt> <b>Details:</b></dt>
 
9321
<dd><p>A comparison of two position lists. Two position lists are equal if both contain
 
9322
the same positions in the identical sequence. Otherwise they are unequal.
 
9323
</p>
 
9324
</dd>
 
9325
<dt> <b>Syntax Samples:</b></dt>
 
9326
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>bool</var> = (<i>po</i>(<var>2</var>,<var>3</var>).. <i>po</i>(<var>5</var>,<var>7</var>)) == (<i>po</i>(<var>2</var>,<var>3</var>) .. <i>po</i>(<var>5</var>,<var>7</var>))  -- = true
 
9327
<var>bool</var> = (<i>po</i>(<var>2</var>,<var>3</var>).. <i>po</i>(<var>5</var>,<var>7</var>)) == (<i>po</i>(<var>4</var>,<var>0</var>) .. <i>po</i>(<var>5</var>,<var>7</var>))  -- = false, different positions
 
9328
<var>bool</var> = (<i>po</i>(<var>2</var>,<var>3</var>).. <i>po</i>(<var>5</var>,<var>7</var>)) == (<i>po</i>(<var>5</var>,<var>7</var>) .. <i>po</i>(<var>2</var>,<var>3</var>))  -- = false, different sequence
 
9329
</pre></td></tr></table>
 
9330
</dd>
 
9331
</dl>
 
9332
 
 
9333
<hr size="6">
 
9334
<a name="PositionList-Length"></a>
 
9335
<table cellpadding="1" cellspacing="1" border="0">
 
9336
<tr><td valign="middle" align="left">[<a href="#PositionList-Comparison" title="Previous section in reading order"> &lt; </a>]</td>
 
9337
<td valign="middle" align="left">[<a href="#PositionList-Member-Access" title="Next section in reading order"> &gt; </a>]</td>
 
9338
<td valign="middle" align="left"> &nbsp; </td>
 
9339
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9340
<td valign="middle" align="left">[<a href="#PositionList" title="Up section"> Up </a>]</td>
 
9341
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9342
<td valign="middle" align="left"> &nbsp; </td>
 
9343
<td valign="middle" align="left"> &nbsp; </td>
 
9344
<td valign="middle" align="left"> &nbsp; </td>
 
9345
<td valign="middle" align="left"> &nbsp; </td>
 
9346
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9347
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9348
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9349
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9350
</tr></table>
 
9351
<a name="PositionList-Length-1"></a>
 
9352
<h3 class="subsection">5.9.2 PositionList Length</h3>
 
9353
 
 
9354
<dl compact="compact">
 
9355
<dt> <b>Syntax:</b></dt>
 
9356
<dd><p>result = #<i>polist</i>
 
9357
</p>
 
9358
</dd>
 
9359
<dt> <b>Details:</b></dt>
 
9360
<dd><p>Number of positions contained in the list.
 
9361
</p>
 
9362
</dd>
 
9363
<dt> <b>Syntax Samples:</b></dt>
 
9364
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>number</var> = #(<i>po</i>(<var>2</var>,<var>3</var>) .. <i>po</i>(<var>5</var>,<var>7</var>)) -- = 2
 
9365
for <var>i</var> = <var>1</var>, #<var>polist</var> do <var>pos</var> = <var>polist</var>[<var>i</var>] ... end
 
9366
</pre></td></tr></table>
 
9367
</dd>
 
9368
</dl>
 
9369
 
 
9370
<hr size="6">
 
9371
<a name="PositionList-Member-Access"></a>
 
9372
<table cellpadding="1" cellspacing="1" border="0">
 
9373
<tr><td valign="middle" align="left">[<a href="#PositionList-Length" title="Previous section in reading order"> &lt; </a>]</td>
 
9374
<td valign="middle" align="left">[<a href="#PositionList-Concatenation" title="Next section in reading order"> &gt; </a>]</td>
 
9375
<td valign="middle" align="left"> &nbsp; </td>
 
9376
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9377
<td valign="middle" align="left">[<a href="#PositionList" title="Up section"> Up </a>]</td>
 
9378
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9379
<td valign="middle" align="left"> &nbsp; </td>
 
9380
<td valign="middle" align="left"> &nbsp; </td>
 
9381
<td valign="middle" align="left"> &nbsp; </td>
 
9382
<td valign="middle" align="left"> &nbsp; </td>
 
9383
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9384
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9385
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9386
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9387
</tr></table>
 
9388
<a name="PositionList-Member-Access-1"></a>
 
9389
<h3 class="subsection">5.9.3 PositionList Member Access</h3>
 
9390
 
 
9391
<dl compact="compact">
 
9392
<dt> <b>Syntax:</b></dt>
 
9393
<dd><p>result = <i>group</i>[<i>index</i>]
 
9394
</p>
 
9395
</dd>
 
9396
<dt> <b>Details:</b></dt>
 
9397
<dd><p>An index like read access with an index number between 1 and #<i>polist</i> returns
 
9398
the position in the related position list position. Negative indices between
 
9399
-#<i>polist</i> and -1 give the same positions. Thus you can always access the last
 
9400
position at index -1. All other indices return a Lua &lsquo;<samp>nil</samp>&rsquo; value like
 
9401
tables.
 
9402
</p>
 
9403
</dd>
 
9404
<dt> <b>Syntax Samples:</b></dt>
 
9405
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>pos</var> = (<i>po</i>(<var>2</var>,<var>3</var>) .. <i>po</i>(<var>5</var>,<var>7</var>))[2]     -- = po(5,7)
 
9406
<var>pos</var> = (<i>po</i>(<var>2</var>,<var>3</var>) .. <i>po</i>(<var>5</var>,<var>7</var>))[-1]    -- = po(5,7)
 
9407
<var>pos</var> = (<i>po</i>(<var>2</var>,<var>3</var>) .. <i>po</i>(<var>5</var>,<var>7</var>))[0]     -- = nil
 
9408
for <var>i</var> = <var>1</var>, #<var>polist</var> do <var>pos</var> = <var>polist</var>[<var>i</var>] ... end
 
9409
</pre></td></tr></table>
 
9410
</dd>
 
9411
</dl>
 
9412
 
 
9413
<hr size="6">
 
9414
<a name="PositionList-Concatenation"></a>
 
9415
<table cellpadding="1" cellspacing="1" border="0">
 
9416
<tr><td valign="middle" align="left">[<a href="#PositionList-Member-Access" title="Previous section in reading order"> &lt; </a>]</td>
 
9417
<td valign="middle" align="left">[<a href="#PositionList-Translation" title="Next section in reading order"> &gt; </a>]</td>
 
9418
<td valign="middle" align="left"> &nbsp; </td>
 
9419
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9420
<td valign="middle" align="left">[<a href="#PositionList" title="Up section"> Up </a>]</td>
 
9421
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9422
<td valign="middle" align="left"> &nbsp; </td>
 
9423
<td valign="middle" align="left"> &nbsp; </td>
 
9424
<td valign="middle" align="left"> &nbsp; </td>
 
9425
<td valign="middle" align="left"> &nbsp; </td>
 
9426
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9427
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9428
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9429
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9430
</tr></table>
 
9431
<a name="PositionList-Concatenation-1"></a>
 
9432
<h3 class="subsection">5.9.4 PositionList Concatenation</h3>
 
9433
 
 
9434
<dl compact="compact">
 
9435
<dt> <b>Syntax:</b></dt>
 
9436
<dd><p>result = <i>polist1</i> .. &lt;<i>pos</i> | <i>polist2</i>&gt;
 
9437
</p>
 
9438
<p>result = &lt;<i>pos</i> | <i>polist1</i>&gt; .. <i>polist2</i>
 
9439
</p>
 
9440
</dd>
 
9441
<dt> <b>Details:</b></dt>
 
9442
<dd><p>Concatenates two position lists or a position with a position list to a
 
9443
new PositionList containing all positions in the given order. Note that this
 
9444
operation is associative, that means it does not matter if you use braces in
 
9445
multiple concatenations or not.
 
9446
</p>
 
9447
</dd>
 
9448
<dt> <b>Syntax Samples:</b></dt>
 
9449
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newpolist</var> = <i>po</i>(<i>po</i>(<var>2</var>,<var>3</var>), <i>po</i>(<var>5</var>,<var>7</var>)) .. <i>po</i>(<var>4</var>, <var>4</var>) -- = (2,3),(5,7),(4,4)
 
9450
</pre></td></tr></table>
 
9451
 
 
9452
</dd>
 
9453
<dt> <b>Caveats:</b></dt>
 
9454
<dd><p>Note that due to the value nature of position lists the concatenation creates
 
9455
a new value. This is an expensive operation. When you are collecting potentially
 
9456
large number of positions in a loop, you should not concat each new candidate
 
9457
to an existing position list. Avoid the creation of numerous position list
 
9458
values and collect the positions in a standard Lua table. Convert this table
 
9459
at the end to a position list (See section <a href="#PositionList-Conversion">PositionList Conversion</a>).
 
9460
</p>
 
9461
<table><tr><td>&nbsp;</td><td><pre class="example"><var>result</var> = {}
 
9462
for <var>x</var> = 1, 200 do
 
9463
    table.insert(<var>result</var>, <i>po</i>(<var>x</var>, 17))
 
9464
end
 
9465
return <i>po</i>(<var>result</var>)
 
9466
</pre></td></tr></table>
 
9467
 
 
9468
</dd>
 
9469
</dl>
 
9470
 
 
9471
<hr size="6">
 
9472
<a name="PositionList-Translation"></a>
 
9473
<table cellpadding="1" cellspacing="1" border="0">
 
9474
<tr><td valign="middle" align="left">[<a href="#PositionList-Concatenation" title="Previous section in reading order"> &lt; </a>]</td>
 
9475
<td valign="middle" align="left">[<a href="#PositionList-Stretching" title="Next section in reading order"> &gt; </a>]</td>
 
9476
<td valign="middle" align="left"> &nbsp; </td>
 
9477
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9478
<td valign="middle" align="left">[<a href="#PositionList" title="Up section"> Up </a>]</td>
 
9479
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9480
<td valign="middle" align="left"> &nbsp; </td>
 
9481
<td valign="middle" align="left"> &nbsp; </td>
 
9482
<td valign="middle" align="left"> &nbsp; </td>
 
9483
<td valign="middle" align="left"> &nbsp; </td>
 
9484
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9485
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9486
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9487
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9488
</tr></table>
 
9489
<a name="PositionList-Translation-1"></a>
 
9490
<h3 class="subsection">5.9.5 PositionList Translation</h3>
 
9491
 
 
9492
<dl compact="compact">
 
9493
<dt> <b>Syntax:</b></dt>
 
9494
<dd><p>result = <i>polist</i> &lt;<b>+</b>|<b>-</b>&gt; &lt;<i>pos</i> | <i>obj</i> | <i>cpos</i>&gt;
 
9495
</p>
 
9496
<p>result = &lt;<i>pos</i> | <i>obj</i> | <i>cpos</i>&gt; &lt;<b>+</b>|<b>-</b>&gt; <i>polist</i>
 
9497
</p>
 
9498
</dd>
 
9499
<dt> <b>Details:</b></dt>
 
9500
<dd><p>If a position or data convertible to a position is added to or subtracted from
 
9501
a position list a new list is created with the positions representing the sum or
 
9502
difference of the position with every member of the position list. In total the
 
9503
position list is shifted by the position as a vector.
 
9504
</p>
 
9505
</dd>
 
9506
<dt> <b>Syntax Samples:</b></dt>
 
9507
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newpolist</var> = <i>po</i>(<var>2</var>, <var>3</var>) + <var>NEIGHBORS_4</var>      -- po(1, 3) .. po(2, 4) .. po(3, 3) .. po(2, 2)
 
9508
<var>newpolist</var> = <i>po</i>[&quot;<var>myfloor</var>#*&quot;] - <i>po</i>(<var>3</var>, <var>0</var>)
 
9509
</pre></td></tr></table>
 
9510
</dd>
 
9511
</dl>
 
9512
 
 
9513
<hr size="6">
 
9514
<a name="PositionList-Stretching"></a>
 
9515
<table cellpadding="1" cellspacing="1" border="0">
 
9516
<tr><td valign="middle" align="left">[<a href="#PositionList-Translation" title="Previous section in reading order"> &lt; </a>]</td>
 
9517
<td valign="middle" align="left">[<a href="#Positions-Repository" title="Next section in reading order"> &gt; </a>]</td>
 
9518
<td valign="middle" align="left"> &nbsp; </td>
 
9519
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9520
<td valign="middle" align="left">[<a href="#PositionList" title="Up section"> Up </a>]</td>
 
9521
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9522
<td valign="middle" align="left"> &nbsp; </td>
 
9523
<td valign="middle" align="left"> &nbsp; </td>
 
9524
<td valign="middle" align="left"> &nbsp; </td>
 
9525
<td valign="middle" align="left"> &nbsp; </td>
 
9526
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9527
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9528
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9529
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9530
</tr></table>
 
9531
<a name="PositionList-Stretching-1"></a>
 
9532
<h3 class="subsection">5.9.6 PositionList Stretching</h3>
 
9533
 
 
9534
<dl compact="compact">
 
9535
<dt> <b>Syntax:</b></dt>
 
9536
<dd><p>result = <i>polist</i> <b>*</b> <i>number</i>
 
9537
</p>
 
9538
<p>result = <i>number</i> <b>*</b> <i>polist</i>
 
9539
</p>
 
9540
</dd>
 
9541
<dt> <b>Details:</b></dt>
 
9542
<dd><p>A scalar multiplication or division of all positions in a position list. All
 
9543
position values are multiplicated or divided by the given number in both
 
9544
coordinate values. In total the position list is stretched by a scalar factor.
 
9545
</p>
 
9546
</dd>
 
9547
<dt> <b>Syntax Samples:</b></dt>
 
9548
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newpolist</var> = <var>2</var> * <var>NEIGHBORS_4</var>              -- = po(9, 12)
 
9549
<var>newpolist</var> = (<i>po</i>(<var>2</var>,<var>4</var>) .. <i>po</i>(<var>6</var>,<var>7</var>)) * <var>1/2</var>   -- = (1, 2), (3, 3.5)
 
9550
</pre></td></tr></table>
 
9551
</dd>
 
9552
</dl>
 
9553
 
 
9554
 
 
9555
 
 
9556
<hr size="6">
 
9557
<a name="Positions-Repository"></a>
 
9558
<table cellpadding="1" cellspacing="1" border="0">
 
9559
<tr><td valign="middle" align="left">[<a href="#PositionList-Stretching" title="Previous section in reading order"> &lt; </a>]</td>
 
9560
<td valign="middle" align="left">[<a href="#Positions-Repository-Request" title="Next section in reading order"> &gt; </a>]</td>
 
9561
<td valign="middle" align="left"> &nbsp; </td>
 
9562
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9563
<td valign="middle" align="left">[<a href="#Lua-API" title="Up section"> Up </a>]</td>
 
9564
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9565
<td valign="middle" align="left"> &nbsp; </td>
 
9566
<td valign="middle" align="left"> &nbsp; </td>
 
9567
<td valign="middle" align="left"> &nbsp; </td>
 
9568
<td valign="middle" align="left"> &nbsp; </td>
 
9569
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9570
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9571
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9572
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9573
</tr></table>
 
9574
<a name="Positions-Repository-1"></a>
 
9575
<h2 class="section">5.10 Positions Repository</h2>
 
9576
 
 
9577
<p>The Positions datatype is just used by a single instance, the singleton
 
9578
repository of named positions. Besides the management of named positions it
 
9579
provides useful conversions of other datatypes to position based types.
 
9580
</p>
 
9581
<p>Being a singleton you can not create a new Positions Repository. The singleton
 
9582
that is available on level load is stored at the global variable &lsquo;<samp>po</samp>&rsquo;.
 
9583
</p>
 
9584
<p>The position repository is an extension of the <a href="#NamedObjects">NamedObjects</a> repository.
 
9585
Whenever you name an object, See section <a href="#Object-Naming">Object Naming</a>, this repository registers
 
9586
its name and allows you to retrieve lateron the current object&rsquo;s position by
 
9587
providing its name. But even when a floor object gets killed, its position
 
9588
entry remains stored as <a href="#Named-Positions">Named Positions</a>. Of course you can name positions
 
9589
yourself, but positions of existing named objects will always override plane
 
9590
named positions on name clashes.
 
9591
</p>
 
9592
<p>For task driven samples see section <a href="#Named-Positions-Tasks">Named Positions Tasks</a>.
 
9593
</p>
 
9594
<table class="menu" border="0" cellspacing="0">
 
9595
<tr><td align="left" valign="top"><a href="#Positions-Repository-Request">5.10.1 Positions Repository Request</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">  Index Operator &lsquo;<samp>[]</samp>&rsquo; read
 
9596
</td></tr>
 
9597
<tr><td align="left" valign="top"><a href="#Positions-Repository-Storage">5.10.2 Positions Repository Storage</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">  Index Operator &lsquo;<samp>[]</samp>&rsquo; write
 
9598
</td></tr>
 
9599
<tr><td align="left" valign="top"><a href="#Position-Conversion">5.10.3 Position Conversion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Function &lsquo;<samp>po()</samp>&rsquo;
 
9600
</td></tr>
 
9601
<tr><td align="left" valign="top"><a href="#PositionList-Conversion">5.10.4 PositionList Conversion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Function &lsquo;<samp>po()</samp>&rsquo;
 
9602
</td></tr>
 
9603
</table>
 
9604
 
 
9605
<hr size="6">
 
9606
<a name="Positions-Repository-Request"></a>
 
9607
<table cellpadding="1" cellspacing="1" border="0">
 
9608
<tr><td valign="middle" align="left">[<a href="#Positions-Repository" title="Previous section in reading order"> &lt; </a>]</td>
 
9609
<td valign="middle" align="left">[<a href="#Positions-Repository-Storage" title="Next section in reading order"> &gt; </a>]</td>
 
9610
<td valign="middle" align="left"> &nbsp; </td>
 
9611
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9612
<td valign="middle" align="left">[<a href="#Positions-Repository" title="Up section"> Up </a>]</td>
 
9613
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9614
<td valign="middle" align="left"> &nbsp; </td>
 
9615
<td valign="middle" align="left"> &nbsp; </td>
 
9616
<td valign="middle" align="left"> &nbsp; </td>
 
9617
<td valign="middle" align="left"> &nbsp; </td>
 
9618
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9619
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9620
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9621
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9622
</tr></table>
 
9623
<a name="Positions-Repository-Request-1"></a>
 
9624
<h3 class="subsection">5.10.1 Positions Repository Request</h3>
 
9625
 
 
9626
<dl compact="compact">
 
9627
<dt> <b>Syntax:</b></dt>
 
9628
<dd><p>result = po[&quot;<i>name</i>&quot;]
 
9629
</p>
 
9630
</dd>
 
9631
<dt> <b>Details:</b></dt>
 
9632
<dd><p>Request of one or several positions from the repository. If no wildcard
 
9633
characters are used in the name the <a href="#Position">Position</a> value of the unique object
 
9634
with the given name, if existent, is returned. It no object exists with the
 
9635
name, the last position stored with the same name is returned. If no position
 
9636
exists the value &lsquo;<samp>nil</samp>&rsquo; is returned.
 
9637
</p>
 
9638
<p>If the requested name contains a wildcard character, either an asterisk &lsquo;<samp>*</samp>&rsquo;
 
9639
or a question mark &lsquo;<samp>?</samp>&rsquo;, a <a href="#PositionList">PositionList</a> containing all positions with
 
9640
matching names is returned. An asterisk matches zero, one or several arbitrary
 
9641
characters. A question mark matches a single arbitrary character. Both wildcard
 
9642
characters can be used anywhere in the string and in arbitrary multiplicity.
 
9643
Anyway the result is always returned as a <a href="#PositionList">PositionList</a>. The list may
 
9644
contain multiple positions, just a single position, or even no position at all
 
9645
when no existing position matches your name pattern.
 
9646
</p>
 
9647
</dd>
 
9648
<dt> <b>Syntax Samples:</b></dt>
 
9649
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>pos</var> = <i>po</i>[&quot;<var>mydoor</var>&quot;]        -- exact name match
 
9650
<var>polist</var> = <i>po</i>[&quot;<var>mydoors#*</var>&quot;]  -- any suffix
 
9651
<var>polist</var> = <i>po</i>[&quot;<var>mydoor?</var>&quot;]    -- just one char suffix
 
9652
<var>polist</var> = <i>po</i>[&quot;<var>mydoors?#*</var>&quot;] -- matches e.g. &quot;mydoorsA#123435&quot;, &quot;mydoorsB#1213&quot;
 
9653
</pre></td></tr></table>
 
9654
</dd>
 
9655
</dl>
 
9656
 
 
9657
<hr size="6">
 
9658
<a name="Positions-Repository-Storage"></a>
 
9659
<table cellpadding="1" cellspacing="1" border="0">
 
9660
<tr><td valign="middle" align="left">[<a href="#Positions-Repository-Request" title="Previous section in reading order"> &lt; </a>]</td>
 
9661
<td valign="middle" align="left">[<a href="#Position-Conversion" title="Next section in reading order"> &gt; </a>]</td>
 
9662
<td valign="middle" align="left"> &nbsp; </td>
 
9663
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9664
<td valign="middle" align="left">[<a href="#Positions-Repository" title="Up section"> Up </a>]</td>
 
9665
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9666
<td valign="middle" align="left"> &nbsp; </td>
 
9667
<td valign="middle" align="left"> &nbsp; </td>
 
9668
<td valign="middle" align="left"> &nbsp; </td>
 
9669
<td valign="middle" align="left"> &nbsp; </td>
 
9670
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9671
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9672
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9673
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9674
</tr></table>
 
9675
<a name="Positions-Repository-Storage-1"></a>
 
9676
<h3 class="subsection">5.10.2 Positions Repository Storage</h3>
 
9677
 
 
9678
<dl compact="compact">
 
9679
<dt> <b>Syntax:</b></dt>
 
9680
<dd><p>po[&quot;<i>name</i>&quot;] = <i>obj</i>
 
9681
</p>
 
9682
</dd>
 
9683
<dt> <b>Details:</b></dt>
 
9684
<dd><p>Index write accesses to the singleton allows you to name or rename positions.
 
9685
Note that can not assign a new position to a name that currently references
 
9686
an existing <a href="#Object">Object</a>. Such write access are silently ignored.
 
9687
</p>
 
9688
</dd>
 
9689
<dt> <b>Syntax Samples:</b></dt>
 
9690
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><i>po</i>[&quot;<var>mypos</var>&quot;] = <var>pos</var>
 
9691
</pre></td></tr></table>
 
9692
</dd>
 
9693
</dl>
 
9694
 
 
9695
<hr size="6">
 
9696
<a name="Position-Conversion"></a>
 
9697
<table cellpadding="1" cellspacing="1" border="0">
 
9698
<tr><td valign="middle" align="left">[<a href="#Positions-Repository-Storage" title="Previous section in reading order"> &lt; </a>]</td>
 
9699
<td valign="middle" align="left">[<a href="#PositionList-Conversion" title="Next section in reading order"> &gt; </a>]</td>
 
9700
<td valign="middle" align="left"> &nbsp; </td>
 
9701
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9702
<td valign="middle" align="left">[<a href="#Positions-Repository" title="Up section"> Up </a>]</td>
 
9703
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9704
<td valign="middle" align="left"> &nbsp; </td>
 
9705
<td valign="middle" align="left"> &nbsp; </td>
 
9706
<td valign="middle" align="left"> &nbsp; </td>
 
9707
<td valign="middle" align="left"> &nbsp; </td>
 
9708
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9709
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9710
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9711
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9712
</tr></table>
 
9713
<a name="Position-Conversion-1"></a>
 
9714
<h3 class="subsection">5.10.3 Position Conversion</h3>
 
9715
 
 
9716
<dl compact="compact">
 
9717
<dt> <b>Syntax:</b></dt>
 
9718
<dd><p>result = po(&lt;<i>obj</i> | <i>pos</i> | {<var>x</var>, <var>y</var>} | <var>x</var>, <var>y</var> &gt;)
 
9719
</p>
 
9720
</dd>
 
9721
<dt> <b>Details:</b></dt>
 
9722
<dd><p>Converts its argument to a new position value.
 
9723
</p>
 
9724
</dd>
 
9725
<dt> <b>Syntax Samples:</b></dt>
 
9726
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>pos</var> = <i>po</i>(<var>pos2</var>)
 
9727
<var>pos</var> = <i>po</i>(<var>obj</var>)
 
9728
<var>pos</var> = <i>po</i>({<var>2</var>, <var>4</var>})
 
9729
<var>pos</var> = <i>po</i>(<var>3</var>, <var>7</var>)
 
9730
</pre></td></tr></table>
 
9731
</dd>
 
9732
</dl>
 
9733
 
 
9734
<hr size="6">
 
9735
<a name="PositionList-Conversion"></a>
 
9736
<table cellpadding="1" cellspacing="1" border="0">
 
9737
<tr><td valign="middle" align="left">[<a href="#Position-Conversion" title="Previous section in reading order"> &lt; </a>]</td>
 
9738
<td valign="middle" align="left">[<a href="#Tile-and-Object-Declaration" title="Next section in reading order"> &gt; </a>]</td>
 
9739
<td valign="middle" align="left"> &nbsp; </td>
 
9740
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9741
<td valign="middle" align="left">[<a href="#Positions-Repository" title="Up section"> Up </a>]</td>
 
9742
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9743
<td valign="middle" align="left"> &nbsp; </td>
 
9744
<td valign="middle" align="left"> &nbsp; </td>
 
9745
<td valign="middle" align="left"> &nbsp; </td>
 
9746
<td valign="middle" align="left"> &nbsp; </td>
 
9747
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9748
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9749
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9750
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9751
</tr></table>
 
9752
<a name="PositionList-Conversion-1"></a>
 
9753
<h3 class="subsection">5.10.4 PositionList Conversion</h3>
 
9754
 
 
9755
<dl compact="compact">
 
9756
<dt> <b>Syntax:</b></dt>
 
9757
<dd><p>result = po(<i>group</i> | {<i>pos1</i>, <i>pos2</i>, <i>pos3</i>})
 
9758
</p>
 
9759
</dd>
 
9760
<dt> <b>Details:</b></dt>
 
9761
<dd><p>Converts the given group or table of positions to a new <a href="#PositionList">PositionList</a>
 
9762
value, that contains the positions of all valid group <a href="#Object">Object</a>s or table
 
9763
members in the same sequence.
 
9764
</p>
 
9765
</dd>
 
9766
<dt> <b>Syntax Samples:</b></dt>
 
9767
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>polist</var> = <i>po</i>(<var>group</var>)
 
9768
<var>polist</var> = <i>po</i>({<i>po</i>(<var>3</var>, <var>7</var>), <i>po</i>(<var>2</var>, <var>6</var>)})
 
9769
<var>polist</var> = <i>po</i>({})  -- an empty position list
 
9770
</pre></td></tr></table>
 
9771
</dd>
 
9772
</dl>
 
9773
 
 
9774
 
 
9775
<hr size="6">
 
9776
<a name="Tile-and-Object-Declaration"></a>
 
9777
<table cellpadding="1" cellspacing="1" border="0">
 
9778
<tr><td valign="middle" align="left">[<a href="#PositionList-Conversion" title="Previous section in reading order"> &lt; </a>]</td>
 
9779
<td valign="middle" align="left">[<a href="#Tile-concat" title="Next section in reading order"> &gt; </a>]</td>
 
9780
<td valign="middle" align="left"> &nbsp; </td>
 
9781
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9782
<td valign="middle" align="left">[<a href="#Lua-API" title="Up section"> Up </a>]</td>
 
9783
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9784
<td valign="middle" align="left"> &nbsp; </td>
 
9785
<td valign="middle" align="left"> &nbsp; </td>
 
9786
<td valign="middle" align="left"> &nbsp; </td>
 
9787
<td valign="middle" align="left"> &nbsp; </td>
 
9788
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9789
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9790
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9791
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9792
</tr></table>
 
9793
<a name="Tile-and-Object-Declaration-1"></a>
 
9794
<h2 class="section">5.11 Tile and Object Declaration</h2>
 
9795
 
 
9796
<p>A tile is the description of one or several objects that should be positioned
 
9797
on the same grid position. A single object can be set up by a straight
 
9798
object declaration, an anonymous Lua table with entries for the object kind
 
9799
and all attributes. The object declaration comes in three minor variations:
 
9800
</p>
 
9801
<table><tr><td>&nbsp;</td><td><pre class="example">{&quot;<b>st_chess</b>&quot;, <b>name</b>=&quot;<var>jumper</var>&quot;, <b>color</b>=<var>WHITE</var>}
 
9802
{&quot;<b>st_chess_white</b>&quot;, &quot;<var>jumper</var>&quot;, <var>_myattr</var>=<var>5</var>}
 
9803
{&quot;<b>ac_marble</b>&quot;, 0.2, 0.6, <b>name</b>=&quot;<var>blacky</var>&quot;}
 
9804
</pre></td></tr></table>
 
9805
 
 
9806
<p>The first entry, the one stored at table position &lsquo;<samp>1</samp>&rsquo;, has always to be
 
9807
the kind name of a supported Enigma object. In the first example all other
 
9808
table entries are key value pairs with the key being the attribute name. The
 
9809
second example uses the shortcut of specifying the name attribute value as
 
9810
second table entry, that will be stored at table position &lsquo;<samp>2</samp>&rsquo;. It has to
 
9811
be a string value. The third variation, that is useful for actor declarations,
 
9812
stores the grid offsets in x and y directions in the table positions &lsquo;<samp>2</samp>&rsquo; and
 
9813
&lsquo;<samp>3</samp>&rsquo;. Of course you can not use the name attribute shortcut in the same
 
9814
declaration.
 
9815
</p>
 
9816
<p>These table driven object declarations are always sufficient if you just want to
 
9817
set a single object at once. But tiles do often take an item or a stone besides
 
9818
a floor. So we need an Enigma data type being able to handle these multiple
 
9819
declarations. This is the &lsquo;<samp>tile</samp>&rsquo; data type. It can take just one object
 
9820
declaration or an arbitrary list of declarations. You convert a table object
 
9821
declaration into a tile by the <a href="#Tiles-Repository">Tiles Repository</a> handle. Once you have a
 
9822
tile you can concat other tiles or table object declarations to set up new
 
9823
tiles.
 
9824
</p>
 
9825
<p>Enigma guarantees that the objects will be set to the world in the sequence
 
9826
of declarations in the tile.
 
9827
</p>
 
9828
<a name="index-fl_005fnil"></a>
 
9829
<a name="index-it_005fnil"></a>
 
9830
<a name="index-st_005fnil"></a>
 
9831
<a name="index-nil"></a>
 
9832
<p>Even though in most cases you use object declarations and tiles to set objects
 
9833
you may need in some advanced usage cases to supply such a datatype in
 
9834
situations where you want to add nothing at all or even want to kill a
 
9835
possibly existing object. In these cases you can supply one of the pseudo object
 
9836
kind names <code>&quot;fl_nil&quot;</code>, <code>&quot;it_nil&quot;</code>, <code>&quot;st_nil&quot;</code> or <code>&quot;nil&quot;</code>.
 
9837
While the first three pseudo kinds will kill existing objects on the given
 
9838
layer, the last pseudo kind will just do nothing. It is equivalent, but more
 
9839
expressive than an empty Lua table being used as an object declaration:
 
9840
</p>
 
9841
<table><tr><td>&nbsp;</td><td><pre class="example"><i>ti</i>[&quot;<var>D</var>&quot;] = <i>cond</i>(<i>wo</i>[&quot;<b>IsDifficult&quot;</b>], {&quot;<b>st_death</b>&quot;}, {&quot;<b>nil</b>&quot;})
 
9842
<i>ti</i>[&quot;<var>S</var>&quot;] = {&quot;<b>st_surprise</b>&quot;, <b>selection</b>={&quot;<b>st_box</b>&quot;, &quot;<b>st_nil</b>&quot;}}
 
9843
function <var>customresolver</var>(<var>key</var>, <var>x</var>, <var>y</var>)
 
9844
    if <var>key</var> == &quot;<var>a</var>&quot; then
 
9845
        return {&quot;<b>nil</b>&quot;}
 
9846
    elseif <var>key</var> == &quot;<var>b</var>&quot; then
 
9847
        return {}
 
9848
    else
 
9849
        return <i>ti</i>[<var>key</var>]
 
9850
    end
 
9851
end
 
9852
</pre></td></tr></table>
 
9853
 
 
9854
<p>The first sample uses the pseudo to supply a valid third arguement to the
 
9855
<a href="#cond">cond</a> function that causes no syntax error when being passed to the
 
9856
world in easy mode.
 
9857
</p>
 
9858
<p>The second sample uses the pseudo to kill the <a href="#st_005fsurprise">st_surprise</a> even when
 
9859
no substitution stone is being set.
 
9860
</p>
 
9861
<p>The last example of a <a href="#Custom-Resolver">Custom Resolver</a> provides a solution for avoiding
 
9862
the change of the world on a given key in the world map. Usually you will always
 
9863
set at least a floor object. But if you draw a map during runtime there is no
 
9864
longer the need of setting inital floors. In cases where this can not be handled
 
9865
by proper usage of default keys the pseudo kind <code>&quot;nil&quot;</code> is your friend.
 
9866
</p>
 
9867
<p>For task driven samples see section <a href="#Tiles-and-World-Tasks">Tiles and World Tasks</a>.
 
9868
</p>
 
9869
<table class="menu" border="0" cellspacing="0">
 
9870
<tr><td align="left" valign="top"><a href="#Tile-concat">5.11.1 Tile concat</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Compose a new tile as concatenation of two other
 
9871
</td></tr>
 
9872
</table>
 
9873
 
 
9874
 
 
9875
<hr size="6">
 
9876
<a name="Tile-concat"></a>
 
9877
<table cellpadding="1" cellspacing="1" border="0">
 
9878
<tr><td valign="middle" align="left">[<a href="#Tile-and-Object-Declaration" title="Previous section in reading order"> &lt; </a>]</td>
 
9879
<td valign="middle" align="left">[<a href="#Tiles-Repository" title="Next section in reading order"> &gt; </a>]</td>
 
9880
<td valign="middle" align="left"> &nbsp; </td>
 
9881
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9882
<td valign="middle" align="left">[<a href="#Tile-and-Object-Declaration" title="Up section"> Up </a>]</td>
 
9883
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9884
<td valign="middle" align="left"> &nbsp; </td>
 
9885
<td valign="middle" align="left"> &nbsp; </td>
 
9886
<td valign="middle" align="left"> &nbsp; </td>
 
9887
<td valign="middle" align="left"> &nbsp; </td>
 
9888
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9889
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9890
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9891
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9892
</tr></table>
 
9893
<a name="Tile-concat-1"></a>
 
9894
<h3 class="subsection">5.11.1 Tile concat</h3>
 
9895
 
 
9896
<dl compact="compact">
 
9897
<dt> <b>Syntax:</b></dt>
 
9898
<dd><p>result = <i>tile</i> .. &lt;<i>tile</i> | <i>odecl</i>&gt;
 
9899
</p>
 
9900
<p>result = &lt;<i>tile</i> | <i>odecl</i>&gt; .. <i>tile</i>
 
9901
</p>
 
9902
</dd>
 
9903
<dt> <b>Details:</b></dt>
 
9904
<dd><p>Compose a new tile by concatenation of a tile with another tile or a table
 
9905
object declaration. In a concatenated chain of tiles and object declarations
 
9906
one of the first two evaluated arguments needs to be a tile as two Lua tables
 
9907
do not know how to concat.
 
9908
</p>
 
9909
<p>Note that Lua does evaluate the &lsquo;<samp>..</samp>&rsquo; operator from right to left! Thus you
 
9910
need either use proper braces or you need to guarantee that at least one of the
 
9911
two rightmost tokens is a tile.
 
9912
</p>
 
9913
</dd>
 
9914
<dt> <b>Syntax Samples:</b></dt>
 
9915
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newtile</var> = <i>ti</i>{&quot;<b>st_chess</b>&quot;} .. {&quot;<b>fl_sahara</b>&quot;}
 
9916
<var>newtile</var> = <i>ti</i>{&quot;<b>st_chess</b>&quot;} .. {&quot;<b>fl_sahara</b>&quot;} .. {&quot;<b>it_cherry</b>&quot;}   -- Lua error due to right to left evaluation
 
9917
<var>newtile</var> = (<i>ti</i>{&quot;<b>st_chess</b>&quot;} .. {&quot;<b>fl_sahara</b>&quot;}) .. {&quot;<b>it_cherry</b>&quot;} -- evaluation order fixed
 
9918
<var>newtile</var> = <i>ti</i>{&quot;<b>st_chess</b>&quot;} .. {&quot;<b>fl_sahara</b>&quot;} .. <i>ti</i>{&quot;<b>it_cherry</b>&quot;} -- converted one of the two critical declarations
 
9919
</pre></td></tr></table>
 
9920
 
 
9921
</dd>
 
9922
</dl>
 
9923
 
 
9924
 
 
9925
 
 
9926
<hr size="6">
 
9927
<a name="Tiles-Repository"></a>
 
9928
<table cellpadding="1" cellspacing="1" border="0">
 
9929
<tr><td valign="middle" align="left">[<a href="#Tile-concat" title="Previous section in reading order"> &lt; </a>]</td>
 
9930
<td valign="middle" align="left">[<a href="#Tiles-Storage" title="Next section in reading order"> &gt; </a>]</td>
 
9931
<td valign="middle" align="left"> &nbsp; </td>
 
9932
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9933
<td valign="middle" align="left">[<a href="#Lua-API" title="Up section"> Up </a>]</td>
 
9934
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9935
<td valign="middle" align="left"> &nbsp; </td>
 
9936
<td valign="middle" align="left"> &nbsp; </td>
 
9937
<td valign="middle" align="left"> &nbsp; </td>
 
9938
<td valign="middle" align="left"> &nbsp; </td>
 
9939
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9940
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9941
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9942
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9943
</tr></table>
 
9944
<a name="Tiles-Repository-1"></a>
 
9945
<h2 class="section">5.12 Tiles Repository</h2>
 
9946
 
 
9947
<p>The Tiles datatype is just used by a single instance, the singleton repository of
 
9948
<a href="#Tile-and-Object-Declaration">Tile and Object Declaration</a>s. Besides the management of tiles it provides
 
9949
useful conversions of table based object declarations to tiles.
 
9950
</p>
 
9951
<p>Being a singleton you can not create a new Tiles repository. The singleton is
 
9952
stored at the global variable &lsquo;<samp>ti</samp>&rsquo; on level load.
 
9953
</p>
 
9954
<p>The repository stores tiles for given string keys. The key strings can be
 
9955
of any length. Due to Lua limitations they need to be composed of printable
 
9956
7-bit ASCII characters.
 
9957
</p>
 
9958
<p>You can assign a tile to every key just once. A reassign causes an error. On
 
9959
one hand this allows internal implementation optimization, but on the other hand
 
9960
an unforeseen key reassignment is the most common level coding error that
 
9961
needs to be reported.
 
9962
</p>
 
9963
<p>For task driven samples see section <a href="#Tiles-and-World-Tasks">Tiles and World Tasks</a>.
 
9964
</p>
 
9965
<table class="menu" border="0" cellspacing="0">
 
9966
<tr><td align="left" valign="top"><a href="#Tiles-Storage">5.12.1 Tiles Storage</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Store a tile for a key
 
9967
</td></tr>
 
9968
<tr><td align="left" valign="top"><a href="#Tiles-Request">5.12.2 Tiles Request</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Retrieve a tile for a key
 
9969
</td></tr>
 
9970
<tr><td align="left" valign="top"><a href="#Tile-Conversion">5.12.3 Tile Conversion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">   Convert an object declaration into a tile
 
9971
</td></tr>
 
9972
</table>
 
9973
 
 
9974
 
 
9975
<hr size="6">
 
9976
<a name="Tiles-Storage"></a>
 
9977
<table cellpadding="1" cellspacing="1" border="0">
 
9978
<tr><td valign="middle" align="left">[<a href="#Tiles-Repository" title="Previous section in reading order"> &lt; </a>]</td>
 
9979
<td valign="middle" align="left">[<a href="#Tiles-Request" title="Next section in reading order"> &gt; </a>]</td>
 
9980
<td valign="middle" align="left"> &nbsp; </td>
 
9981
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
9982
<td valign="middle" align="left">[<a href="#Tiles-Repository" title="Up section"> Up </a>]</td>
 
9983
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
9984
<td valign="middle" align="left"> &nbsp; </td>
 
9985
<td valign="middle" align="left"> &nbsp; </td>
 
9986
<td valign="middle" align="left"> &nbsp; </td>
 
9987
<td valign="middle" align="left"> &nbsp; </td>
 
9988
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
9989
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
9990
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
9991
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
9992
</tr></table>
 
9993
<a name="Tiles-Storage-1"></a>
 
9994
<h3 class="subsection">5.12.1 Tiles Storage</h3>
 
9995
 
 
9996
<dl compact="compact">
 
9997
<dt> <b>Syntax:</b></dt>
 
9998
<dd><p>ti[&quot;<i>key</i>&quot;] = &lt;<i>tile</i>|<i>odecl</i>&gt;
 
9999
</p>
 
10000
</dd>
 
10001
<dt> <b>Details:</b></dt>
 
10002
<dd><p>Index write accesses to the singleton allows you to assign a tile or an table
 
10003
based object declaration, that is autoconverted to a tile, to a given key. The
 
10004
key must be a unique string. Unique in the sense that you can not reassign a
 
10005
new tile to key to which previously another tile has been assigned.
 
10006
</p>
 
10007
</dd>
 
10008
<dt> <b>Syntax Samples:</b></dt>
 
10009
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><i>ti</i>[&quot;<var>#</var>&quot;] = <var>tile</var>
 
10010
<i>ti</i>[&quot;<var>$</var>&quot;] = {&quot;<b>st_chess</b>&quot;}
 
10011
<i>ti</i>[&quot;<var>$</var>&quot;] = {&quot;<b>st_switch</b>&quot;}   -- error of key reassignment
 
10012
<i>ti</i>[&quot;<var>anykey</var>&quot;] = {&quot;<b>st_chess</b>&quot;}
 
10013
</pre></td></tr></table>
 
10014
</dd>
 
10015
</dl>
 
10016
 
 
10017
 
 
10018
 
 
10019
<hr size="6">
 
10020
<a name="Tiles-Request"></a>
 
10021
<table cellpadding="1" cellspacing="1" border="0">
 
10022
<tr><td valign="middle" align="left">[<a href="#Tiles-Storage" title="Previous section in reading order"> &lt; </a>]</td>
 
10023
<td valign="middle" align="left">[<a href="#Tile-Conversion" title="Next section in reading order"> &gt; </a>]</td>
 
10024
<td valign="middle" align="left"> &nbsp; </td>
 
10025
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
10026
<td valign="middle" align="left">[<a href="#Tiles-Repository" title="Up section"> Up </a>]</td>
 
10027
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
10028
<td valign="middle" align="left"> &nbsp; </td>
 
10029
<td valign="middle" align="left"> &nbsp; </td>
 
10030
<td valign="middle" align="left"> &nbsp; </td>
 
10031
<td valign="middle" align="left"> &nbsp; </td>
 
10032
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
10033
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
10034
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
10035
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
10036
</tr></table>
 
10037
<a name="Tiles-Request-1"></a>
 
10038
<h3 class="subsection">5.12.2 Tiles Request</h3>
 
10039
 
 
10040
<dl compact="compact">
 
10041
<dt> <b>Syntax:</b></dt>
 
10042
<dd><p>result = ti[&quot;<i>key</i>&quot;]
 
10043
</p>
 
10044
</dd>
 
10045
<dt> <b>Details:</b></dt>
 
10046
<dd><p>Request of the tile that has been assigned to the given key. If no tile has yet
 
10047
been stored for the key a Lua &lsquo;<samp>nil</samp>&rsquo; value is returned. Note that this
 
10048
tiles repository does not use wildcard characters as the named objects and
 
10049
positions repositories do. The asterisk &lsquo;<samp>*</samp>&rsquo; and question mark &lsquo;<samp>?</samp>&rsquo; are
 
10050
just keys as any other characters.
 
10051
</p>
 
10052
</dd>
 
10053
<dt> <b>Syntax Samples:</b></dt>
 
10054
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>tile</var> = <i>ti</i>[&quot;<var>#</var>&quot;]
 
10055
</pre></td></tr></table>
 
10056
</dd>
 
10057
</dl>
 
10058
 
 
10059
 
 
10060
<hr size="6">
 
10061
<a name="Tile-Conversion"></a>
 
10062
<table cellpadding="1" cellspacing="1" border="0">
 
10063
<tr><td valign="middle" align="left">[<a href="#Tiles-Request" title="Previous section in reading order"> &lt; </a>]</td>
 
10064
<td valign="middle" align="left">[<a href="#World" title="Next section in reading order"> &gt; </a>]</td>
 
10065
<td valign="middle" align="left"> &nbsp; </td>
 
10066
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
10067
<td valign="middle" align="left">[<a href="#Tiles-Repository" title="Up section"> Up </a>]</td>
 
10068
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
10069
<td valign="middle" align="left"> &nbsp; </td>
 
10070
<td valign="middle" align="left"> &nbsp; </td>
 
10071
<td valign="middle" align="left"> &nbsp; </td>
 
10072
<td valign="middle" align="left"> &nbsp; </td>
 
10073
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
10074
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
10075
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
10076
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
10077
</tr></table>
 
10078
<a name="Tile-Conversion-1"></a>
 
10079
<h3 class="subsection">5.12.3 Tile Conversion</h3>
 
10080
 
 
10081
<dl compact="compact">
 
10082
<dt> <b>Syntax:</b></dt>
 
10083
<dd><p>result = ti(<i>odecl</i>)
 
10084
</p>
 
10085
</dd>
 
10086
<dt> <b>Details:</b></dt>
 
10087
<dd><p>Converts a table based object declaration to a new tile value.
 
10088
</p>
 
10089
</dd>
 
10090
<dt> <b>Syntax Samples:</b></dt>
 
10091
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>tile</var> = <i>ti</i>({&quot;<b>st_chess</b>&quot;})
 
10092
<var>tile</var> = <i>ti</i>{&quot;<b>st_chess</b>&quot;}   -- Lua syntax equivalence
 
10093
</pre></td></tr></table>
 
10094
</dd>
 
10095
</dl>
 
10096
 
 
10097
 
 
10098
 
 
10099
<hr size="6">
 
10100
<a name="World"></a>
 
10101
<table cellpadding="1" cellspacing="1" border="0">
 
10102
<tr><td valign="middle" align="left">[<a href="#Tile-Conversion" title="Previous section in reading order"> &lt; </a>]</td>
 
10103
<td valign="middle" align="left">[<a href="#World-Creation" title="Next section in reading order"> &gt; </a>]</td>
 
10104
<td valign="middle" align="left"> &nbsp; </td>
 
10105
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
10106
<td valign="middle" align="left">[<a href="#Lua-API" title="Up section"> Up </a>]</td>
 
10107
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
10108
<td valign="middle" align="left"> &nbsp; </td>
 
10109
<td valign="middle" align="left"> &nbsp; </td>
 
10110
<td valign="middle" align="left"> &nbsp; </td>
 
10111
<td valign="middle" align="left"> &nbsp; </td>
 
10112
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
10113
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
10114
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
10115
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
10116
</tr></table>
 
10117
<a name="World-1"></a>
 
10118
<h2 class="section">5.13 World</h2>
 
10119
 
 
10120
<p>The World datatype is just used by a single instance, another singleton object.
 
10121
A reference to this singleton is stored at the Lua global variable &lsquo;<samp>wo</samp>&rsquo; on
 
10122
level load. Being a singleton you can not instantiate another World object.
 
10123
</p>
 
10124
<p>But even though the singleton &lsquo;<samp>wo</samp>&rsquo; already exists on load of a level the
 
10125
world is still undefined in all aspects. From the first line of Lua code you
 
10126
can access the <a href="#Global-Attributes">Global Attributes</a>. But the world gets really set up with
 
10127
the <a href="#World-Creation">World Creation</a>. After this call the world has a well defined size
 
10128
and is filled with an initial set of objects that you can access and modify
 
10129
from this moment on.
 
10130
</p>
 
10131
<table class="menu" border="0" cellspacing="0">
 
10132
<tr><td align="left" valign="top"><a href="#World-Creation">5.13.1 World Creation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Set up world with objects
 
10133
</td></tr>
 
10134
<tr><td align="left" valign="top"><a href="#World-Tile-Set">5.13.2 World Tile Set</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Index Operator &lsquo;<samp>[]</samp>&rsquo; write
 
10135
</td></tr>
 
10136
<tr><td align="left" valign="top"><a href="#Global-Attribute-Set">5.13.3 Global Attribute Set</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">  Index Operator &lsquo;<samp>[]</samp>&rsquo; write
 
10137
</td></tr>
 
10138
<tr><td align="left" valign="top"><a href="#Global-Attribute-Get">5.13.4 Global Attribute Get</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">  Index Operator &lsquo;<samp>[]</samp>&rsquo; read
 
10139
</td></tr>
 
10140
<tr><td align="left" valign="top"><a href="#add">5.13.5 add</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                   Add single objects to the world or an inventory
 
10141
</td></tr>
 
10142
<tr><td align="left" valign="top"><a href="#drawBorder">5.13.6 drawBorder</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Draw a rectangular border with a tile
 
10143
</td></tr>
 
10144
<tr><td align="left" valign="top"><a href="#drawMap">5.13.7 drawMap</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               Draw objects given by a map of tile keys
 
10145
</td></tr>
 
10146
<tr><td align="left" valign="top"><a href="#drawRect">5.13.8 drawRect</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              Fill a complete rectangle with a tile
 
10147
</td></tr>
 
10148
<tr><td align="left" valign="top"><a href="#world-floor">5.13.9 world floor</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Retrieval of floor objects
 
10149
</td></tr>
 
10150
<tr><td align="left" valign="top"><a href="#world-item">5.13.10 world item</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Retrieval of item objects
 
10151
</td></tr>
 
10152
<tr><td align="left" valign="top"><a href="#shuffleOxyd">5.13.11 shuffleOxyd</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Oxyd Shuffling Rules
 
10153
</td></tr>
 
10154
<tr><td align="left" valign="top"><a href="#world-stone">5.13.12 world stone</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Retrieval of stone objects
 
10155
</td></tr>
 
10156
</table>
 
10157
 
 
10158
 
 
10159
<hr size="6">
 
10160
<a name="World-Creation"></a>
 
10161
<table cellpadding="1" cellspacing="1" border="0">
 
10162
<tr><td valign="middle" align="left">[<a href="#World" title="Previous section in reading order"> &lt; </a>]</td>
 
10163
<td valign="middle" align="left">[<a href="#World-Tile-Set" title="Next section in reading order"> &gt; </a>]</td>
 
10164
<td valign="middle" align="left"> &nbsp; </td>
 
10165
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
10166
<td valign="middle" align="left">[<a href="#World" title="Up section"> Up </a>]</td>
 
10167
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
10168
<td valign="middle" align="left"> &nbsp; </td>
 
10169
<td valign="middle" align="left"> &nbsp; </td>
 
10170
<td valign="middle" align="left"> &nbsp; </td>
 
10171
<td valign="middle" align="left"> &nbsp; </td>
 
10172
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
10173
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
10174
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
10175
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
10176
</tr></table>
 
10177
<a name="World-Creation-1"></a>
 
10178
<h3 class="subsection">5.13.1 World Creation</h3>
 
10179
 
 
10180
<p>Once all parameters have been set and all tiles have been declared it is time
 
10181
to create the level world with all its objects. This is done by the following
 
10182
constructor that appears in three variations.
 
10183
</p>
 
10184
<dl compact="compact">
 
10185
<dt> <b>Syntax:</b></dt>
 
10186
<dd><p>width, height = <b>wo</b>(<i>topresolver</i>, <i>defaultkey</i>, <i>map</i>)
 
10187
</p>
 
10188
<p>width, height = <b>wo</b>(<i>topresolver</i>, <i>libmap</i>)
 
10189
</p>
 
10190
<p>width, height = <b>wo</b>(<i>topresolver</i>, <i>defaultkey</i>, <i>width</i>, <i>height</i>)
 
10191
</p>
 
10192
<dl compact="compact">
 
10193
<dt> <i>topresolver</i> = <code>ti</code> | <i>resolver</i> | <i>localresolver</i></dt>
 
10194
<dd><p>Every tile in the world is given by a key that needs to be resolved to its
 
10195
declaration. This can be done either by the <a href="#Tiles-Repository">Tiles Repository</a> &lsquo;<samp>ti</samp>&rsquo;, or
 
10196
by given library <a href="#Resolvers">Resolvers</a> or by a local <a href="#Custom-Resolver">Custom Resolver</a> function.
 
10197
This argument takes the top resolver that is requested first.
 
10198
</p></dd>
 
10199
<dt> <i>defaultkey</i></dt>
 
10200
<dd><p>A string that defines the key that should be taken as default. It is taken
 
10201
if no other key is given and it is added to a tile if a floor object is
 
10202
missing. The character length of this key defines the key size within the map
 
10203
</p></dd>
 
10204
<dt> <i>map</i></dt>
 
10205
<dd><p>A table of strings. Each string describes a row of tiles by its tile keys.
 
10206
If a map is given, the world size is determined from the longest string and
 
10207
the number of rows.
 
10208
</p></dd>
 
10209
<dt> <i>libmap</i></dt>
 
10210
<dd><p>A map of the library <a href="#libmap">libmap</a>
 
10211
</p></dd>
 
10212
<dt> <i>width</i></dt>
 
10213
<dd><p>As an argument that is given instead of a map it describes the width of the
 
10214
desired world.
 
10215
</p></dd>
 
10216
<dt> <i>height</i></dt>
 
10217
<dd><p>As an argument that is given instead of a map it describes the height of the
 
10218
desired world.
 
10219
</p></dd>
 
10220
</dl>
 
10221
 
 
10222
</dd>
 
10223
<dt> <b>Syntax Samples:</b></dt>
 
10224
<dd><table><tr><td>&nbsp;</td><td><pre class="example">w, h = wo(ti, &quot;  &quot;, 20, 13)
 
10225
w, h = wo(resolver, &quot; &quot;, {
 
10226
       &quot;                    &quot;,
 
10227
       ...
 
10228
       &quot;                    &quot;})
 
10229
w, h = wo(ti, mylibmap)
 
10230
</pre></td></tr></table>
 
10231
 
 
10232
</dd>
 
10233
<dt> <b>Details:</b></dt>
 
10234
<dd><p>This world constructor may just be called once. Every subsequent call causes
 
10235
an error. This call sets the size of the world to fixed values that are reported
 
10236
by its two return values. The world size can later on be retrieved by the world
 
10237
attributes <a href="#Width">Width</a> and <a href="#Height">Height</a>, too.
 
10238
</p>
 
10239
<p>A mapless world is filled with default tiles. Rows in a given map that are
 
10240
shorter than others are filled with default tiles, too. Any tile that does
 
10241
not define a floor object will add the floor object of the default tile.
 
10242
</p>
 
10243
<p>Every key is resolved to its tile declaration via the given resolver chain.
 
10244
The top resolver is given to this call as a parameter. If it is &lsquo;<samp>ti</samp>&rsquo; the
 
10245
chain consists just of one element and the tile declaration stored in the tiles
 
10246
repository at the given key is taken. Otherwise the resolvers will be evaluated
 
10247
as explained in <a href="#Resolver-Chaining">Resolver Chaining</a>.
 
10248
</p>
 
10249
</dd>
 
10250
</dl>
 
10251
 
 
10252
<hr size="6">
 
10253
<a name="World-Tile-Set"></a>
 
10254
<table cellpadding="1" cellspacing="1" border="0">
 
10255
<tr><td valign="middle" align="left">[<a href="#World-Creation" title="Previous section in reading order"> &lt; </a>]</td>
 
10256
<td valign="middle" align="left">[<a href="#Global-Attribute-Set" title="Next section in reading order"> &gt; </a>]</td>
 
10257
<td valign="middle" align="left"> &nbsp; </td>
 
10258
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
10259
<td valign="middle" align="left">[<a href="#World" title="Up section"> Up </a>]</td>
 
10260
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
10261
<td valign="middle" align="left"> &nbsp; </td>
 
10262
<td valign="middle" align="left"> &nbsp; </td>
 
10263
<td valign="middle" align="left"> &nbsp; </td>
 
10264
<td valign="middle" align="left"> &nbsp; </td>
 
10265
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
10266
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
10267
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
10268
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
10269
</tr></table>
 
10270
<a name="World-Tile-Set-1"></a>
 
10271
<h3 class="subsection">5.13.2 World Tile Set</h3>
 
10272
 
 
10273
<dl compact="compact">
 
10274
<dt> <b>Syntax:</b></dt>
 
10275
<dd><p><b>wo</b>[&lt;<i>object</i> | <i>position</i> | <i>table</i> | <i>group</i> | <i>polist</i>&gt;] = <i>tile_declarations</i>
 
10276
</p>
 
10277
</dd>
 
10278
<dt> <b>Details:</b></dt>
 
10279
<dd><p>Index write accesses to an index that can be interpreted as a grid position or
 
10280
a list of grid positions allows you to set one or several new objects to the
 
10281
given positions according to the supplied tile declaration.
 
10282
</p>
 
10283
</dd>
 
10284
<dt> <b>Syntax Samples:</b></dt>
 
10285
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><i>wo</i>[<i>no</i>[&quot;<var>myobjectname</var>&quot;]] = {&quot;<b>st_chess</b>&quot;}
 
10286
<i>wo</i>[<i>po</i>(<var>3</var>, <var>4</var>)] = <i>ti</i>[&quot;<var>x</var>&quot;]
 
10287
<i>wo</i>[{<var>2</var>, <var>5</var>}] = <i>ti</i>[&quot;<var>x</var>&quot;] .. <i>ti</i>[&quot;<var>y</var>&quot;]
 
10288
<i>wo</i>[<i>no</i>[&quot;<var>floorgroup#*</var>&quot;]] = {&quot;<b>it_burnable_oil</b>&quot;}
 
10289
<i>wo</i>[<i>no</i>[&quot;<var>myobjectname</var>&quot;] + <b>NEIGHBORS_4</b>] = <i>ti</i>[&quot;<var>x</var>&quot;]
 
10290
</pre></td></tr></table>
 
10291
</dd>
 
10292
</dl>
 
10293
 
 
10294
 
 
10295
<hr size="6">
 
10296
<a name="Global-Attribute-Set"></a>
 
10297
<table cellpadding="1" cellspacing="1" border="0">
 
10298
<tr><td valign="middle" align="left">[<a href="#World-Tile-Set" title="Previous section in reading order"> &lt; </a>]</td>
 
10299
<td valign="middle" align="left">[<a href="#Global-Attribute-Get" title="Next section in reading order"> &gt; </a>]</td>
 
10300
<td valign="middle" align="left"> &nbsp; </td>
 
10301
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
10302
<td valign="middle" align="left">[<a href="#World" title="Up section"> Up </a>]</td>
 
10303
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
10304
<td valign="middle" align="left"> &nbsp; </td>
 
10305
<td valign="middle" align="left"> &nbsp; </td>
 
10306
<td valign="middle" align="left"> &nbsp; </td>
 
10307
<td valign="middle" align="left"> &nbsp; </td>
 
10308
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
10309
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
10310
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
10311
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
10312
</tr></table>
 
10313
<a name="Global-Attribute-Set-1"></a>
 
10314
<h3 class="subsection">5.13.3 Global Attribute Set</h3>
 
10315
 
 
10316
<dl compact="compact">
 
10317
<dt> <b>Syntax:</b></dt>
 
10318
<dd><p><b>wo</b>[&quot;attritbutename&quot;] = value
 
10319
</p>
 
10320
</dd>
 
10321
<dt> <b>Details:</b></dt>
 
10322
<dd><p>Write accesses to string type indices allows you to change <a href="#Global-Attributes">Global Attributes</a>.
 
10323
Just existing attributes with write accessibility may be changed. Note that
 
10324
some attributes must be set prior <a href="#World-Creation">World Creation</a> to take proper affect.
 
10325
</p>
 
10326
</dd>
 
10327
<dt> <b>Syntax Samples:</b></dt>
 
10328
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><i>wo</i>[&quot;<b>ConserveLevel</b>&quot;] = true
 
10329
</pre></td></tr></table>
 
10330
</dd>
 
10331
</dl>
 
10332
 
 
10333
 
 
10334
<hr size="6">
 
10335
<a name="Global-Attribute-Get"></a>
 
10336
<table cellpadding="1" cellspacing="1" border="0">
 
10337
<tr><td valign="middle" align="left">[<a href="#Global-Attribute-Set" title="Previous section in reading order"> &lt; </a>]</td>
 
10338
<td valign="middle" align="left">[<a href="#add" title="Next section in reading order"> &gt; </a>]</td>
 
10339
<td valign="middle" align="left"> &nbsp; </td>
 
10340
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
10341
<td valign="middle" align="left">[<a href="#World" title="Up section"> Up </a>]</td>
 
10342
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
10343
<td valign="middle" align="left"> &nbsp; </td>
 
10344
<td valign="middle" align="left"> &nbsp; </td>
 
10345
<td valign="middle" align="left"> &nbsp; </td>
 
10346
<td valign="middle" align="left"> &nbsp; </td>
 
10347
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
10348
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
10349
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
10350
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
10351
</tr></table>
 
10352
<a name="Global-Attribute-Get-1"></a>
 
10353
<h3 class="subsection">5.13.4 Global Attribute Get</h3>
 
10354
 
 
10355
<dl compact="compact">
 
10356
<dt> <b>Syntax:</b></dt>
 
10357
<dd><p><var>var</var> = <b>wo</b>[&quot;attritbutename&quot;]
 
10358
</p>
 
10359
</dd>
 
10360
<dt> <b>Details:</b></dt>
 
10361
<dd><p>Read accesses to string type indices allows you to retrieve <a href="#Global-Attributes">Global Attributes</a>.
 
10362
Just existing attributes with read accessibility can be read. Note that
 
10363
some attributes report proper values just after <a href="#World-Creation">World Creation</a>.
 
10364
</p>
 
10365
</dd>
 
10366
<dt> <b>Syntax Samples:</b></dt>
 
10367
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>var</var> = <i>wo</i>[&quot;<b>IsDifficult</b>&quot;]
 
10368
</pre></td></tr></table>
 
10369
</dd>
 
10370
</dl>
 
10371
 
 
10372
 
 
10373
<hr size="6">
 
10374
<a name="add"></a>
 
10375
<table cellpadding="1" cellspacing="1" border="0">
 
10376
<tr><td valign="middle" align="left">[<a href="#Global-Attribute-Get" title="Previous section in reading order"> &lt; </a>]</td>
 
10377
<td valign="middle" align="left">[<a href="#drawBorder" title="Next section in reading order"> &gt; </a>]</td>
 
10378
<td valign="middle" align="left"> &nbsp; </td>
 
10379
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
10380
<td valign="middle" align="left">[<a href="#World" title="Up section"> Up </a>]</td>
 
10381
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
10382
<td valign="middle" align="left"> &nbsp; </td>
 
10383
<td valign="middle" align="left"> &nbsp; </td>
 
10384
<td valign="middle" align="left"> &nbsp; </td>
 
10385
<td valign="middle" align="left"> &nbsp; </td>
 
10386
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
10387
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
10388
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
10389
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
10390
</tr></table>
 
10391
<a name="add-1"></a>
 
10392
<h3 class="subsection">5.13.5 add</h3>
 
10393
 
 
10394
<p>Add <a href="#Other-Objects">Other Objects</a> to the world or a portable item to an inventory or
 
10395
other container object.
 
10396
</p>
 
10397
<dl compact="compact">
 
10398
<dt> <b>Syntax:</b></dt>
 
10399
<dd><p><b>wo:add</b>(<i>tile_declarations</i>)
 
10400
</p>
 
10401
<p><b>wo:add</b>(<i>target</i>, <i>tile_declarations</i>)
 
10402
</p>
 
10403
<dl compact="compact">
 
10404
<dt> <i>tile_declarations</i></dt>
 
10405
<dd><p>One or many other object declarations given as tiles or anonymous tables.
 
10406
</p></dd>
 
10407
<dt> <i>target</i></dt>
 
10408
<dd><p>&lsquo;<samp>YIN</samp>&rsquo;, &lsquo;<samp>YANG</samp>&rsquo; or valid <a href="#Object-Reference">Object Reference</a>
 
10409
</p></dd>
 
10410
</dl>
 
10411
 
 
10412
</dd>
 
10413
<dt> <b>Syntax Samples:</b></dt>
 
10414
<dd><table><tr><td>&nbsp;</td><td><pre class="example">wo:add({&quot;ot_rubberband&quot;, anchor1=&quot;a1&quot;, anchor2=&quot;w&quot;, length=2, strength=80, threshold=0})
 
10415
wo:add(ti[&quot;r&quot;] .. {&quot;ot_wire&quot;, anchor1=&quot;w1&quot;, anchor2=&quot;w2&quot;})
 
10416
wo:add(YIN, {&quot;it_magicwand&quot;})
 
10417
wo:add(no[&quot;mybag&quot;], {&quot;it_magicwand&quot;} .. ti[&quot;h&quot;] .. ti[&quot;c&quot;])
 
10418
</pre></td></tr></table>
 
10419
 
 
10420
</dd>
 
10421
<dt> <b>Details:</b></dt>
 
10422
<dd><p>Just <a href="#Other-Objects">Other Objects</a> can be directly added to the world. Just portable
 
10423
<a href="#Item-Objects">Item Objects</a> can be added to the player&rsquo;s inventories &lsquo;<samp>YIN</samp>&rsquo; and
 
10424
&lsquo;<samp>YANG</samp>&rsquo; and to <a href="#it_005fbag">it_bag</a>s. No other targets do currently add objects by
 
10425
this method.
 
10426
</p>
 
10427
</dd>
 
10428
</dl>
 
10429
 
 
10430
<hr size="6">
 
10431
<a name="drawBorder"></a>
 
10432
<table cellpadding="1" cellspacing="1" border="0">
 
10433
<tr><td valign="middle" align="left">[<a href="#add" title="Previous section in reading order"> &lt; </a>]</td>
 
10434
<td valign="middle" align="left">[<a href="#drawMap" title="Next section in reading order"> &gt; </a>]</td>
 
10435
<td valign="middle" align="left"> &nbsp; </td>
 
10436
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
10437
<td valign="middle" align="left">[<a href="#World" title="Up section"> Up </a>]</td>
 
10438
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
10439
<td valign="middle" align="left"> &nbsp; </td>
 
10440
<td valign="middle" align="left"> &nbsp; </td>
 
10441
<td valign="middle" align="left"> &nbsp; </td>
 
10442
<td valign="middle" align="left"> &nbsp; </td>
 
10443
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
10444
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
10445
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
10446
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
10447
</tr></table>
 
10448
<a name="drawBorder-1"></a>
 
10449
<h3 class="subsection">5.13.6 drawBorder</h3>
 
10450
 
 
10451
<p>Draw a border around a rectangle out of given tiles.
 
10452
</p>
 
10453
<dl compact="compact">
 
10454
<dt> <b>Syntax:</b></dt>
 
10455
<dd><p><b>wo:drawBorder</b>(<i>upperleft_edge</i>, <i>lowerright_edge</i>, &lt;<i>tile</i> | <i>key</i>, <i>resolver</i>&gt;)
 
10456
</p>
 
10457
<p><b>wo:drawBorder</b>(<i>upperleft_edge</i>, <i>width</i>, <i>height</i>, &lt;<i>tile</i> | <i>key</i>, <i>resolver</i>&gt;)
 
10458
</p>
 
10459
<dl compact="compact">
 
10460
<dt> <i>upperleft_edge</i></dt>
 
10461
<dd><p>Upper left anchor position of the rectangle.
 
10462
</p></dd>
 
10463
<dt> <i>lowerright_edge</i></dt>
 
10464
<dd><p>Lower right end position of the rectangle.
 
10465
</p></dd>
 
10466
<dt> <i>width</i></dt>
 
10467
<dd><p>Width of the rectangle.
 
10468
</p></dd>
 
10469
<dt> <i>height</i></dt>
 
10470
<dd><p>Height of the rectangle.
 
10471
</p></dd>
 
10472
<dt> <i>tile</i></dt>
 
10473
<dd><p>A tile or an object declaration.
 
10474
</p></dd>
 
10475
<dt> <i>key</i></dt>
 
10476
<dd><p>A key string to be resolved via the given resolver.
 
10477
</p></dd>
 
10478
<dt> <i>resolver</i></dt>
 
10479
<dd><p>A resolver to be used for resolving the key to a valid tile.
 
10480
</p></dd>
 
10481
</dl>
 
10482
 
 
10483
</dd>
 
10484
<dt> <b>Syntax Samples:</b></dt>
 
10485
<dd><table><tr><td>&nbsp;</td><td><pre class="example">wo:drawBorder(po(0, 0), wo[&quot;Width&quot;], wo[&quot;Height&quot;], ti[&quot;#&quot;])
 
10486
wo:drawBorder(no[&quot;myRectUL&quot;], no[&quot;myRectLR&quot;], {&quot;st_grate1&quot;})
 
10487
wo:drawBorder(no[&quot;myRectUL&quot;], no[&quot;myRectLR&quot;], {&quot;fl_water&quot;} .. ti[&quot;X&quot;])
 
10488
wo:drawBorder(no[&quot;myRectUL&quot;], no[&quot;myRectLR&quot;], &quot;x&quot;, myresolver)
 
10489
</pre></td></tr></table>
 
10490
 
 
10491
</dd>
 
10492
<dt> <b>Details:</b></dt>
 
10493
<dd><p>The rectangle as four one grid thick lines is drawn with the given tile. That
 
10494
means on every position of the rectangle itself an instance of every object of
 
10495
the tile declaration is set. The rectangle may degenerate to a single line.
 
10496
</p>
 
10497
</dd>
 
10498
</dl>
 
10499
 
 
10500
<hr size="6">
 
10501
<a name="drawMap"></a>
 
10502
<table cellpadding="1" cellspacing="1" border="0">
 
10503
<tr><td valign="middle" align="left">[<a href="#drawBorder" title="Previous section in reading order"> &lt; </a>]</td>
 
10504
<td valign="middle" align="left">[<a href="#drawRect" title="Next section in reading order"> &gt; </a>]</td>
 
10505
<td valign="middle" align="left"> &nbsp; </td>
 
10506
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
10507
<td valign="middle" align="left">[<a href="#World" title="Up section"> Up </a>]</td>
 
10508
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
10509
<td valign="middle" align="left"> &nbsp; </td>
 
10510
<td valign="middle" align="left"> &nbsp; </td>
 
10511
<td valign="middle" align="left"> &nbsp; </td>
 
10512
<td valign="middle" align="left"> &nbsp; </td>
 
10513
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
10514
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
10515
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
10516
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
10517
</tr></table>
 
10518
<a name="drawMap-1"></a>
 
10519
<h3 class="subsection">5.13.7 drawMap</h3>
 
10520
 
 
10521
<p>Even if the world is initialized by a map on creation of the world
 
10522
(see section <a href="#World-Creation">World Creation</a>), it is sometime useful to
 
10523
be able to draw smaller submaps either as part of the initialization or as
 
10524
dynamic level changes within <a href="#Callback-Function">Callback Function</a>. Of course the main purpose
 
10525
of &lsquo;<samp>drawMap</samp>&rsquo; is the drawing of repeating patterns.
 
10526
</p>
 
10527
<dl compact="compact">
 
10528
<dt> <b>Syntax:</b></dt>
 
10529
<dd>
 
10530
<p><b>wo:drawMap</b>(<i>resolver</i>, <i>anchor</i>, <i>ignore</i>, <i>map</i>, [<i>readdir</i>])
 
10531
</p>
 
10532
<p><b>wo:drawMap</b>(<i>resolver</i>, <i>anchor</i>, <i>libmap-map</i>, [<i>readdir</i>])
 
10533
</p>
 
10534
<dl compact="compact">
 
10535
<dt> <i>subresolver</i></dt>
 
10536
<dd><p>Resolver to which unresolved requests should be forwarded. May be &lsquo;<samp>ti</samp>&rsquo;
 
10537
as the final resolver of the resolver chain.
 
10538
</p></dd>
 
10539
<dt> <i>anchor</i></dt>
 
10540
<dd><p>The anchor position where the upper left tile of the map should be drawn.
 
10541
</p></dd>
 
10542
<dt> <i>ignore</i></dt>
 
10543
<dd><p>A tile key string that should be ignored. This key string is mandatory, even
 
10544
if it not used within the map.
 
10545
</p></dd>
 
10546
<dt> <i>map</i></dt>
 
10547
<dd><p>A table of strings. Each string describes a row of tiles by its tile keys.
 
10548
</p></dd>
 
10549
<dt> <i>libmap-map</i></dt>
 
10550
<dd><p>If the map used is created via <a href="#libmap">libmap</a>, the &lsquo;<samp>ignore</samp>&rsquo;-string can
 
10551
be omitted. The map&rsquo;s default key will then be ignored instead.
 
10552
</p></dd>
 
10553
<dt> <i>readdir</i></dt>
 
10554
<dd><p>An optional argument to modify the direction of the map relative to the world.
 
10555
This argument can be any of the constants described in <a href="#Rotating-and-Mirroring-Maps">Rotating and Mirroring Maps</a>.
 
10556
</p></dd>
 
10557
</dl>
 
10558
 
 
10559
</dd>
 
10560
<dt> <b>Syntax Samples:</b></dt>
 
10561
<dd><table><tr><td>&nbsp;</td><td><pre class="example">wo:drawMap(ti, po(5, 7), &quot;-&quot;, {&quot;abcabc&quot;})
 
10562
wo:drawMap(ti, anchor_object, &quot;--&quot;, {&quot;--##--##&quot;,&quot;##--##&quot;})
 
10563
wo:drawMap(ti, {12, 5}, &quot; &quot;, {&quot;122  221&quot;}, MAP_ROT_CW)
 
10564
</pre></td></tr></table>
 
10565
 
 
10566
</dd>
 
10567
<dt> <b>Details:</b></dt>
 
10568
<dd><p>The syntax is similar to the world creation call. But there are two essential
 
10569
differences you need to be aware of. First the map is drawn in the already
 
10570
existing world. Thus we need to define the position. This is done via the
 
10571
anchor position, which can be an already existing object, too.
 
10572
</p>
 
10573
<p>The second difference is in the definition of a tile key string for tiles in
 
10574
the map that should be ignored. Remember that the world initialization requested
 
10575
a default tile key string. This default is still valid. But with the given
 
10576
ignore key string we can draw arbitrary shaped patterns by filling unused
 
10577
grids in the map with this key.
 
10578
</p>
 
10579
<p>The length of the ignore key defines the map key length. It is strongly
 
10580
recommended to use the same key length as in the world map.
 
10581
</p>
 
10582
<p>The rows of the supplied map are drawn from the anchor position. The rows may
 
10583
be of different length and may start with ignore tile keys. The anchor must be
 
10584
the position composed of the smallest x and smallest y coordinate within the
 
10585
pattern.
 
10586
</p>
 
10587
<p>You can use drawMap anywhere after the world creation. You are even allowed to
 
10588
use it within the world creation in a resolver.
 
10589
</p>
 
10590
</dd>
 
10591
<dt> <b>Full Example:</b></dt>
 
10592
<dd><table><tr><td>&nbsp;</td><td><pre class="example">01    <i>ti</i>[&quot;<var> </var>&quot;] = {&quot;<b>fl_plank</b>&quot;}
 
10593
02    <i>ti</i>[&quot;<var>X</var>&quot;] = {&quot;<b>st_oxyd</b>&quot;}
 
10594
03    <i>ti</i>[&quot;<var>B</var>&quot;] = {&quot;<b>st_passage_black</b>&quot;, <b>flavor</b>=&quot;<var>frame</var>&quot;}
 
10595
04    <i>ti</i>[&quot;<var>W</var>&quot;] = {&quot;<b>st_passage_white</b>&quot;, <b>flavor</b>=&quot;<var>frame</var>&quot;}
 
10596
05    <i>ti</i>[&quot;<var>y</var>&quot;] = {&quot;<b>it_yinyang</b>&quot;}
 
10597
06    <i>ti</i>[&quot;<var>1</var>&quot;] = {&quot;<b>#ac_marble_black</b>&quot;}
 
10598
07    <i>ti</i>[&quot;<var>2</var>&quot;] = {&quot;<b>#ac_marble_white</b>&quot;}
 
10599
08
 
10600
09    function <var>myresolver</var>(<var>key</var>, <var>x</var>, <var>y</var>)
 
10601
10        if <var>key</var> == &quot;<b>w</b>&quot; then
 
10602
11            <i>wo</i>:<b>drawMap</b>(ti, po(x-1, y-1), &quot;-&quot;, {&quot;-W-&quot;,
 
10603
12                                               &quot;WXW&quot;,
 
10604
13                                               &quot;-W-&quot;})
 
10605
14            return <i>ti</i>({})
 
10606
15        elseif <var>key</var> == &quot;<b>b</b>&quot; then
 
10607
16            <i>wo</i>:<b>drawMap</b>(ti, po(x-1, y-1), &quot;-&quot;, {&quot;-B&quot;,
 
10608
17                                               &quot;BXB&quot;,
 
10609
18                                               &quot;-B&quot;})
 
10610
19            return <i>ti</i>({})
 
10611
20        else
 
10612
21            return <i>ti</i>[<var>key</var>]
 
10613
22        end
 
10614
23    end
 
10615
24
 
10616
25    w, h = <i>wo</i>(<i>myresolver</i>, &quot;<var> </var>&quot;, {
 
10617
26      &quot;                    &quot;,
 
10618
27      &quot;  b         b       &quot;,
 
10619
28      &quot;       w       w    &quot;,
 
10620
29      &quot;                    &quot;,
 
10621
30      &quot;                    &quot;,
 
10622
31      &quot;   w                &quot;,
 
10623
32      &quot;         12      b  &quot;,
 
10624
33      &quot;              w     &quot;,
 
10625
34      &quot;         w          &quot;,
 
10626
35      &quot;      b             &quot;,
 
10627
36      &quot;   w           b    &quot;,
 
10628
37      &quot;         b          &quot;,
 
10629
38      &quot;                    &quot;
 
10630
39    })
 
10631
40    <i>wo</i>:<b>shuffleOxyd</b>()
 
10632
</pre></td></tr></table>
 
10633
</dd>
 
10634
</dl>
 
10635
 
 
10636
<hr size="6">
 
10637
<a name="drawRect"></a>
 
10638
<table cellpadding="1" cellspacing="1" border="0">
 
10639
<tr><td valign="middle" align="left">[<a href="#drawMap" title="Previous section in reading order"> &lt; </a>]</td>
 
10640
<td valign="middle" align="left">[<a href="#world-floor" title="Next section in reading order"> &gt; </a>]</td>
 
10641
<td valign="middle" align="left"> &nbsp; </td>
 
10642
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
10643
<td valign="middle" align="left">[<a href="#World" title="Up section"> Up </a>]</td>
 
10644
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
10645
<td valign="middle" align="left"> &nbsp; </td>
 
10646
<td valign="middle" align="left"> &nbsp; </td>
 
10647
<td valign="middle" align="left"> &nbsp; </td>
 
10648
<td valign="middle" align="left"> &nbsp; </td>
 
10649
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
10650
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
10651
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
10652
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
10653
</tr></table>
 
10654
<a name="drawRect-1"></a>
 
10655
<h3 class="subsection">5.13.8 drawRect</h3>
 
10656
 
 
10657
<p>Fill a rectangle with a given tile.
 
10658
</p>
 
10659
<dl compact="compact">
 
10660
<dt> <b>Syntax:</b></dt>
 
10661
<dd><p><b>wo:drawRect</b>(<i>upperleft_edge</i>, <i>lowerright_edge</i>, &lt;<i>tile</i> | <i>key</i>, <i>resolver</i>&gt;)
 
10662
</p>
 
10663
<p><b>wo:drawRect</b>(<i>upperleft_edge</i>, <i>width</i>, <i>height</i>, &lt;<i>tile</i> | <i>key</i>, <i>resolver</i>&gt;)
 
10664
</p>
 
10665
<dl compact="compact">
 
10666
<dt> <i>upperleft_edge</i></dt>
 
10667
<dd><p>Upper left anchor position of the rectangle.
 
10668
</p></dd>
 
10669
<dt> <i>lowerright_edge</i></dt>
 
10670
<dd><p>Lower right end position of the rectangle.
 
10671
</p></dd>
 
10672
<dt> <i>width</i></dt>
 
10673
<dd><p>Width of the rectangle.
 
10674
</p></dd>
 
10675
<dt> <i>height</i></dt>
 
10676
<dd><p>Height of the rectangle.
 
10677
</p></dd>
 
10678
<dt> <i>tile</i></dt>
 
10679
<dd><p>A tile or an object declaration.
 
10680
</p></dd>
 
10681
<dt> <i>key</i></dt>
 
10682
<dd><p>A key string to be resolved via the given resolver.
 
10683
</p></dd>
 
10684
<dt> <i>resolver</i></dt>
 
10685
<dd><p>A resolver to be used for resolving the key to a valid tile.
 
10686
</p></dd>
 
10687
</dl>
 
10688
 
 
10689
</dd>
 
10690
<dt> <b>Syntax Samples:</b></dt>
 
10691
<dd><table><tr><td>&nbsp;</td><td><pre class="example">wo:drawRect(po(0, 0), wo[&quot;Width&quot;], wo[&quot;Height&quot;], ti[&quot; &quot;])
 
10692
wo:drawRect(no[&quot;myRectUL&quot;], no[&quot;myRectLR&quot;], {&quot;fl_water&quot;})
 
10693
wo:drawRect(no[&quot;myRectUL&quot;], no[&quot;myRectLR&quot;], {&quot;fl_water&quot;} .. ti[&quot;#&quot;])
 
10694
wo:drawRect(no[&quot;myRectUL&quot;], no[&quot;myRectLR&quot;], &quot;x&quot;, myresolver)
 
10695
</pre></td></tr></table>
 
10696
 
 
10697
</dd>
 
10698
<dt> <b>Details:</b></dt>
 
10699
<dd><p>The complete rectangle is filled with the given tile. That means on every
 
10700
position of the rectangle and its interior an instance of every object of
 
10701
the tile declaration is set. The rectangle may degenerate to a single line.
 
10702
</p>
 
10703
</dd>
 
10704
</dl>
 
10705
 
 
10706
<hr size="6">
 
10707
<a name="world-floor"></a>
 
10708
<table cellpadding="1" cellspacing="1" border="0">
 
10709
<tr><td valign="middle" align="left">[<a href="#drawRect" title="Previous section in reading order"> &lt; </a>]</td>
 
10710
<td valign="middle" align="left">[<a href="#world-item" title="Next section in reading order"> &gt; </a>]</td>
 
10711
<td valign="middle" align="left"> &nbsp; </td>
 
10712
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
10713
<td valign="middle" align="left">[<a href="#World" title="Up section"> Up </a>]</td>
 
10714
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
10715
<td valign="middle" align="left"> &nbsp; </td>
 
10716
<td valign="middle" align="left"> &nbsp; </td>
 
10717
<td valign="middle" align="left"> &nbsp; </td>
 
10718
<td valign="middle" align="left"> &nbsp; </td>
 
10719
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
10720
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
10721
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
10722
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
10723
</tr></table>
 
10724
<a name="world-floor-1"></a>
 
10725
<h3 class="subsection">5.13.9 world floor</h3>
 
10726
 
 
10727
<p>Retrieves the floor objects for the given position or positions.
 
10728
</p>
 
10729
<dl compact="compact">
 
10730
<dt> <b>Syntax:</b></dt>
 
10731
<dd><p>result = <b>wo</b>:<b>fl</b>(&lt;<i>pos</i>| {<i>x</i>, <i>y</i>}|<i>x</i>, <i>y</i>| <i>obj</i> | <i>group</i>| <i>polist</i>&gt;)
 
10732
</p>
 
10733
</dd>
 
10734
<dt> <b>Details:</b></dt>
 
10735
<dd><p>This world method is identical to the global function <a href="#fl">fl</a>.
 
10736
</p>
 
10737
</dd>
 
10738
</dl>
 
10739
 
 
10740
<hr size="6">
 
10741
<a name="world-item"></a>
 
10742
<table cellpadding="1" cellspacing="1" border="0">
 
10743
<tr><td valign="middle" align="left">[<a href="#world-floor" title="Previous section in reading order"> &lt; </a>]</td>
 
10744
<td valign="middle" align="left">[<a href="#shuffleOxyd" title="Next section in reading order"> &gt; </a>]</td>
 
10745
<td valign="middle" align="left"> &nbsp; </td>
 
10746
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
10747
<td valign="middle" align="left">[<a href="#World" title="Up section"> Up </a>]</td>
 
10748
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
10749
<td valign="middle" align="left"> &nbsp; </td>
 
10750
<td valign="middle" align="left"> &nbsp; </td>
 
10751
<td valign="middle" align="left"> &nbsp; </td>
 
10752
<td valign="middle" align="left"> &nbsp; </td>
 
10753
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
10754
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
10755
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
10756
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
10757
</tr></table>
 
10758
<a name="world-item-1"></a>
 
10759
<h3 class="subsection">5.13.10 world item</h3>
 
10760
 
 
10761
<p>Retrieves the item objects for the given position or positions.
 
10762
</p>
 
10763
<dl compact="compact">
 
10764
<dt> <b>Syntax:</b></dt>
 
10765
<dd><p>result = <b>wo</b>:<b>it</b>(&lt;<i>pos</i>| {<i>x</i>, <i>y</i>}|<i>x</i>, <i>y</i>| <i>obj</i> | <i>group</i>| <i>polist</i>&gt;)
 
10766
</p>
 
10767
</dd>
 
10768
<dt> <b>Details:</b></dt>
 
10769
<dd><p>This world method is identical to the global function <a href="#it">it</a>.
 
10770
</p>
 
10771
</dd>
 
10772
</dl>
 
10773
 
 
10774
<hr size="6">
 
10775
<a name="shuffleOxyd"></a>
 
10776
<table cellpadding="1" cellspacing="1" border="0">
 
10777
<tr><td valign="middle" align="left">[<a href="#world-item" title="Previous section in reading order"> &lt; </a>]</td>
 
10778
<td valign="middle" align="left">[<a href="#world-stone" title="Next section in reading order"> &gt; </a>]</td>
 
10779
<td valign="middle" align="left"> &nbsp; </td>
 
10780
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
10781
<td valign="middle" align="left">[<a href="#World" title="Up section"> Up </a>]</td>
 
10782
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
10783
<td valign="middle" align="left"> &nbsp; </td>
 
10784
<td valign="middle" align="left"> &nbsp; </td>
 
10785
<td valign="middle" align="left"> &nbsp; </td>
 
10786
<td valign="middle" align="left"> &nbsp; </td>
 
10787
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
10788
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
10789
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
10790
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
10791
</tr></table>
 
10792
<a name="shuffleOxyd-1"></a>
 
10793
<h3 class="subsection">5.13.11 shuffleOxyd</h3>
 
10794
 
 
10795
<p>Shuffling the color distribution of the <a href="#st_005foxyd">st_oxyd</a> makes every level, that
 
10796
is no meditation, a bit generic. On every level start the level looks a little
 
10797
bit different and the user has to solve a modified level. This provides long
 
10798
term amusement. Thus the call of this method is part of most levels.
 
10799
</p>
 
10800
<p>Many levels just call this method without any arguments. This results in a
 
10801
shuffling of all <a href="#st_005foxyd">st_oxyd</a> that are not excluded by a &lsquo;<samp>noshuffle</samp>&rsquo;
 
10802
attribute.
 
10803
</p>
 
10804
<p>But sometimes levels need to influence the shuffling, either for ensuring that
 
10805
the level remains solvable, or simply to ensure fairness. Imagine a level that
 
10806
has two <a href="#st_005foxyd">st_oxyd</a>s in every corner. If by chance a user gets a distribution
 
10807
where he has in each corner a pair of same colored oxyds, the level might be
 
10808
trivial. Another level may have a passage that the marble can pass just a few
 
10809
times. With 5 or more oxyds on each side of the passage you need to ensure that
 
10810
the marble never needs to pass the passage more often than possible. Both
 
10811
situations can be handled by providing proper rules as arguments to this method.
 
10812
</p>
 
10813
<dl compact="compact">
 
10814
<dt> <b>Syntax:</b></dt>
 
10815
<dd>
 
10816
<p><b>wo:shuffleOxyd</b>(<i>rules</i>)
 
10817
</p>
 
10818
<dl compact="compact">
 
10819
<dt> <i>rules</i> = <i>rule</i>, <i>rule</i>,...</dt>
 
10820
<dd><p>No rule or as many as you like, all separated by a comma.
 
10821
</p></dd>
 
10822
<dt> <i>rule</i> = {<i>group1</i>, <i>group2</i>, <i>maxrule</i>, <i>minrule</i>, <i>circularrule</i>, <i>linearrule</i>, <i>log</i>}</dt>
 
10823
<dd><p>Each rule is a table with a subset of the listed entries. The <i>group1</i> entry
 
10824
is mandatory. All other entries are optional and can be added in any combination.
 
10825
</p></dd>
 
10826
<dt> <i>group1</i> = <i>group</i> | <i>objectreference</i> | <i>objectspecifier</i></dt>
 
10827
<dd><p>A description of oxyd objects that are part of the first rule group. Either
 
10828
a group or a single object reference or a string specifier that resolves to a
 
10829
single or via wildcard to several oxyd objects are legal descriptors.
 
10830
</p></dd>
 
10831
<dt> <i>group2</i> = <i>group</i> | <i>objectreference</i> | <i>objectspecifier</i></dt>
 
10832
<dd><p>A description of oxyd objects that are part of the second rule group. Either
 
10833
a group or a single object reference or a string specifier that resolves to a
 
10834
single or via wildcard to several oxyd objects are legal descriptors.
 
10835
</p></dd>
 
10836
<dt> <i>maxrule</i> = <code>max = </code><i>number</i></dt>
 
10837
<dd><p>The maximum number of oxyd pairs.
 
10838
</p></dd>
 
10839
<dt> <i>minrule</i> = <code>min = </code><i>number</i></dt>
 
10840
<dd><p>The minimum number of oxyd pairs.
 
10841
</p></dd>
 
10842
<dt> <i>circularrule</i> = <code>circular = true</code></dt>
 
10843
<dd><p>Avoid any pair of neighboring oxyds in group1. Avoid an oxyd pair of first and
 
10844
last oxyd in group1, too.
 
10845
</p></dd>
 
10846
<dt> <i>linearrule</i> = <code>linear = true</code></dt>
 
10847
<dd><p>Avoid any pair of neighboring oxyds in group1.
 
10848
</p></dd>
 
10849
<dt> <i>log</i> = <code>log = </code> &nbsp;&nbsp; <code>&quot;solution&quot;</code> |<code>&quot;count&quot;</code> |<code>&quot;all&quot;</code></dt>
 
10850
<dd><p>Log additional information to the log stream for debugging purposes and
 
10851
security checks by the level author.
 
10852
</p></dd>
 
10853
</dl>
 
10854
 
 
10855
</dd>
 
10856
<dt> <b>Syntax Samples:</b></dt>
 
10857
<dd><table><tr><td>&nbsp;</td><td><pre class="example">wo:shuffleOxyd()
 
10858
wo:shuffleOxyd({no[&quot;borderoxyds#*&quot;]:sort(&quot;circular&quot;), circular=true})
 
10859
wo:shuffleOxyd({&quot;leftoxyds#*&quot;,&quot;rightoxyds#*&quot;, min=3}, {&quot;islandoxyds#*&quot;, max=0})
 
10860
</pre></td></tr></table>
 
10861
 
 
10862
</dd>
 
10863
<dt> <b>Details:</b></dt>
 
10864
<dd>
 
10865
<p>Any call of &lsquo;<samp>wo:shuffleOxyd()</samp>&rsquo; must occur after all <a href="#st_005foxyd">st_oxyd</a> have been
 
10866
set. That means that it must follow the standard world initialization
 
10867
(see section <a href="#World-Creation">World Creation</a>). As a side effect shuffleOxyd
 
10868
will assign colors to all &lsquo;<samp>OXYD_AUTO</samp>&rsquo; colored <a href="#st_005foxyd">st_oxyd</a>.
 
10869
</p>
 
10870
<p>Once called the given shuffling rules remain valid. Any further reshuffling
 
10871
must be done by messages &lsquo;<samp>closeall</samp>&rsquo; and &lsquo;<samp>shuffle</samp>&rsquo; to one arbitrary
 
10872
<a href="#st_005foxyd">st_oxyd</a> instance. No addition of an <a href="#st_005foxyd">st_oxyd</a> or subsequent
 
10873
&lsquo;<samp>wo:shuffleOxyd()</samp>&rsquo; calls are possible without disturbing and deleting the
 
10874
given rules.
 
10875
</p>
 
10876
<p>Rule based shuffling is limited to a maximum of one pair of each standard oxyd
 
10877
color plus any combination of additional special fake, quake or bold oxyds
 
10878
summing up to a maximum of 32 oxyds. If more than 32 oxyds or 2 or more pairs
 
10879
of a single standard color are set, all oxyds will be shuffled by random
 
10880
ignoring any provided rules.
 
10881
</p>
 
10882
<p>There are basically two different types of rules. Those with one group and those
 
10883
with two groups of oxyds (Note that group is the general API expression for
 
10884
a set of oxyds and not a mathematical group). For a single group the rules apply
 
10885
to the oxyd instances within this group. For two groups the rules apply to oxyd
 
10886
pairs with one oxyd in the first group and the other in the second group.
 
10887
</p>
 
10888
<p>E.g. &lsquo;<samp>{&quot;islandoxyds#*&quot;, max=0}</samp>&rsquo; requests that there is no pair within
 
10889
this group of oxyds. Whereas &lsquo;<samp>{&quot;leftoxyds#*&quot;,&quot;rightoxyds#*&quot;, min=3}</samp>&rsquo;
 
10890
requests that there are 3 different oxyd pairs, each with one oxyd out of the
 
10891
leftoxyd group and the second out of the rightoxyd group.
 
10892
</p>
 
10893
<p>Linear and circular rules can only be applied to a single group. They are
 
10894
shortcuts for the most common rules that are applied to oxyds arranged on a
 
10895
line or a circle. In both cases they avoid pairs of neighboring oxyds. They
 
10896
are equivalent to &lsquo;<samp>n-1</samp>&rsquo; res. &lsquo;<samp>n</samp>&rsquo; rules with all possible neighboring
 
10897
oxyd pairs as two groups and a rule of &lsquo;<samp>max=0</samp>&rsquo;.
 
10898
</p>
 
10899
<p>Note that you can apply several rules at once to given groups. E.g. you can
 
10900
apply a minrule and a maxrule within one rule!
 
10901
</p>
 
10902
<p>The shuffling process consists always of two stages. The most important first
 
10903
stage generates a valid oxyd pair distribution. That means that we settle which
 
10904
pairs will have the same color. But the color itself is assigned in an
 
10905
independent second stage. As for the examination of given rules just the pair
 
10906
distribution is relevant, we do just count and log these different distributions
 
10907
ignoring the colors.
 
10908
</p>
 
10909
<p>With 16 oxyds of 8 different colors and no restricting rules you have 2027025
 
10910
(15 * 13 * 11 * 9 * 7 * 5 * 3) different valid distributions. Keep in mind
 
10911
that useful rules should always keep hundreds or thousands of different valid
 
10912
distributions for a level.
 
10913
</p>
 
10914
<p>For debugging purposes you can add a log parameter to one of the rules (it does
 
10915
not matter to which one). If you request the log of &lsquo;<samp>solution</samp>&rsquo; the
 
10916
pair distribution will be printed to the log stream.
 
10917
</p>
 
10918
<p>In case of &lsquo;<samp>count</samp>&rsquo; the number of different oxyd distributions will be
 
10919
counted and logged. It is recommended to check the count on complex rules to
 
10920
ensure that enough distributions remain for a varying game. But be careful
 
10921
applying count on trivial rules. With 16 oxyds there may be as many as
 
10922
2027025 distributions and it may take a standard PC up to 30 seconds to count
 
10923
them - add a factor of 17*19 for 20 oxyds!
 
10924
</p>
 
10925
<p>Be very, very cautious in usage of logging &lsquo;<samp>all</samp>&rsquo;. This call tries to print
 
10926
all solutions. It takes ages if there are too many solutions. First check the
 
10927
count before trying to log the solutions.
 
10928
</p>
 
10929
</dd>
 
10930
<dt> <b>Full Example:</b></dt>
 
10931
<dd><table><tr><td>&nbsp;</td><td><pre class="example">01    <i>wo</i>[&quot;<b>ConserveLevel</b>&quot;] = <var>false</var>
 
10932
02
 
10933
03    <i>ti</i>[&quot;<var>~</var>&quot;] = {&quot;<b>fl_water</b>&quot;}
 
10934
04    <i>ti</i>[&quot;<var> </var>&quot;] = {&quot;<b>fl_plank</b>&quot;}
 
10935
05    <i>ti</i>[&quot;<var>c</var>&quot;] = {&quot;<b>it_crack_l</b>&quot;, <b>brittleness</b>=<var>0</var>}
 
10936
06    <i>ti</i>[&quot;<var>^</var>&quot;] = {&quot;<b>st_oneway_n</b>&quot;}
 
10937
07    <i>ti</i>[&quot;<var>1</var>&quot;] = {&quot;<b>ac_marble_black</b>&quot;, 0, 0.5}
 
10938
08
 
10939
09    <i>ti</i>[&quot;<var>x</var>&quot;] = {&quot;<b>st_oxyd</b>&quot;, &quot;island#&quot;}
 
10940
10    <i>ti</i>[&quot;<var>y</var>&quot;] = {&quot;<b>st_oxyd</b>&quot;, &quot;left#&quot;}
 
10941
11    <i>ti</i>[&quot;<var>z</var>&quot;] = {&quot;<b>st_oxyd</b>&quot;, &quot;right#&quot;}
 
10942
12
 
10943
13    w, h = <i>wo</i>(<i>ti</i>, &quot;<var> </var>&quot;, {
 
10944
14      &quot;<var>~~x  x  x  x  x  x~~</var>&quot;,
 
10945
15      &quot;<var>~~                ~~</var>&quot;,
 
10946
16      &quot;<var>~~~~^~~~~~~~~~~^~~~~</var>&quot;,
 
10947
17      &quot;<var>y       ~~~~       z</var>&quot;,
 
10948
18      &quot;<var>~       cccc       ~</var>&quot;,
 
10949
19      &quot;<var>y       ~~~~       z</var>&quot;,
 
10950
20      &quot;<var>~       cccc       ~</var>&quot;,
 
10951
21      &quot;<var>y       ~~~~       z</var>&quot;,
 
10952
22      &quot;<var>~       cccc       ~</var>&quot;,
 
10953
23      &quot;<var>y       ~~~~       z</var>&quot;,
 
10954
24      &quot;<var>~~~~c~~~~~~~~~~c~~~~</var>&quot;,
 
10955
25      &quot;<var>~~                ~~</var>&quot;,
 
10956
26      &quot;<var>~~        1       ~~</var>&quot;
 
10957
27    })
 
10958
28
 
10959
29    <i>wo</i>:<b>shuffleOxyd</b>({&quot;<b>island#*</b>&quot;, <b>min</b>=<var>3</var>, <b>linear</b>=<var>true</var>}, {&quot;<b>left#*</b>&quot;,&quot;<b>right#*</b>&quot;, <b>max</b>=<var>2</var>, <b>min</b>=<var>2</var>})
 
10960
</pre></td></tr></table>
 
10961
 
 
10962
<p>This level uses 14 oxyds. The 6 oxyds in the upper row are on an island that
 
10963
can not be left once the marble entered it through one of the oneways. Thus
 
10964
we need 3 pairs of oxyds on this island, which are enforced by the min rule.
 
10965
To avoid trivial neighboring pairs on the island, we do add a linear rule, too.
 
10966
The marble can pass just three times between the left and right islands. This
 
10967
allows a first look on the color oxyds with one pass and opening one pair on
 
10968
each of the two following passes. Thus we limit the number of pairs by a max
 
10969
rule to 2. To avoid trivial oxyd pair distributions, like two pairs on the left
 
10970
and two pairs on the right side, we do add a min rule that enforces that two
 
10971
shared pairs of oxyds do exist.
 
10972
</p></dd>
 
10973
</dl>
 
10974
 
 
10975
<hr size="6">
 
10976
<a name="world-stone"></a>
 
10977
<table cellpadding="1" cellspacing="1" border="0">
 
10978
<tr><td valign="middle" align="left">[<a href="#shuffleOxyd" title="Previous section in reading order"> &lt; </a>]</td>
 
10979
<td valign="middle" align="left">[<a href="#Functions" title="Next section in reading order"> &gt; </a>]</td>
 
10980
<td valign="middle" align="left"> &nbsp; </td>
 
10981
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
10982
<td valign="middle" align="left">[<a href="#World" title="Up section"> Up </a>]</td>
 
10983
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
10984
<td valign="middle" align="left"> &nbsp; </td>
 
10985
<td valign="middle" align="left"> &nbsp; </td>
 
10986
<td valign="middle" align="left"> &nbsp; </td>
 
10987
<td valign="middle" align="left"> &nbsp; </td>
 
10988
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
10989
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
10990
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
10991
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
10992
</tr></table>
 
10993
<a name="world-stone-1"></a>
 
10994
<h3 class="subsection">5.13.12 world stone</h3>
 
10995
 
 
10996
<p>Retrieves the stone objects for the given position or positions.
 
10997
</p>
 
10998
<dl compact="compact">
 
10999
<dt> <b>Syntax:</b></dt>
 
11000
<dd><p>result = <b>wo</b>:<b>st</b>(&lt;<i>pos</i>| {<i>x</i>, <i>y</i>}|<i>x</i>, <i>y</i>| <i>obj</i> | <i>group</i>| <i>polist</i>&gt;)
 
11001
</p>
 
11002
</dd>
 
11003
<dt> <b>Details:</b></dt>
 
11004
<dd><p>This world method is identical to the global function <a href="#st">st</a>.
 
11005
</p>
 
11006
</dd>
 
11007
</dl>
 
11008
 
 
11009
 
 
11010
 
 
11011
<hr size="6">
 
11012
<a name="Functions"></a>
 
11013
<table cellpadding="1" cellspacing="1" border="0">
 
11014
<tr><td valign="middle" align="left">[<a href="#world-stone" title="Previous section in reading order"> &lt; </a>]</td>
 
11015
<td valign="middle" align="left">[<a href="#assert_005fbool" title="Next section in reading order"> &gt; </a>]</td>
 
11016
<td valign="middle" align="left"> &nbsp; </td>
 
11017
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11018
<td valign="middle" align="left">[<a href="#Lua-API" title="Up section"> Up </a>]</td>
 
11019
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
11020
<td valign="middle" align="left"> &nbsp; </td>
 
11021
<td valign="middle" align="left"> &nbsp; </td>
 
11022
<td valign="middle" align="left"> &nbsp; </td>
 
11023
<td valign="middle" align="left"> &nbsp; </td>
 
11024
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11025
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11026
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11027
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11028
</tr></table>
 
11029
<a name="Functions-1"></a>
 
11030
<h2 class="section">5.14 Functions</h2>
 
11031
 
 
11032
<p>Besides all the features strongly related to a value as context and thus
 
11033
implemented as operators or methods of these datatypes, a few other tasks
 
11034
remain. These are either context free or take at least in one variation just a
 
11035
standard Lua datatype, that does not supply a context. Thus these tasks are
 
11036
implemented as simple functions.
 
11037
</p>
 
11038
<table class="menu" border="0" cellspacing="0">
 
11039
<tr><td align="left" valign="top"><a href="#assert_005fbool">5.14.1 assert_bool</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Throws an error if a condition doesn&rsquo;t hold.
 
11040
</td></tr>
 
11041
<tr><td align="left" valign="top"><a href="#assert_005ftype">5.14.2 assert_type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Throws an error if a variable is not of a given type.
 
11042
</td></tr>
 
11043
<tr><td align="left" valign="top"><a href="#cond">5.14.3 cond</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            A ternary operator, wrapper for if-then-else.
 
11044
</td></tr>
 
11045
<tr><td align="left" valign="top"><a href="#etype">5.14.4 etype</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           An advanced function to return normal and user data types.
 
11046
</td></tr>
 
11047
<tr><td align="left" valign="top"><a href="#fl">5.14.5 fl</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              Floor retrieval
 
11048
</td></tr>
 
11049
<tr><td align="left" valign="top"><a href="#grp">5.14.6 grp</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Create a group out of the argument objects
 
11050
</td></tr>
 
11051
<tr><td align="left" valign="top"><a href="#it">5.14.7 it</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              Item retrieval
 
11052
</td></tr>
 
11053
<tr><td align="left" valign="top"><a href="#ORI2DIR">5.14.8 ORI2DIR</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Orientation to direction conversion
 
11054
</td></tr>
 
11055
<tr><td align="left" valign="top"><a href="#random">5.14.9 random</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Random number generator
 
11056
</td></tr>
 
11057
<tr><td align="left" valign="top"><a href="#st">5.14.10 st</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              Stone retrieval
 
11058
</td></tr>
 
11059
<tr><td align="left" valign="top"><a href="#usertype">5.14.11 usertype</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Type info for Enigma userdata types
 
11060
</td></tr>
 
11061
</table>
 
11062
 
 
11063
 
 
11064
<hr size="6">
 
11065
<a name="assert_005fbool"></a>
 
11066
<table cellpadding="1" cellspacing="1" border="0">
 
11067
<tr><td valign="middle" align="left">[<a href="#Functions" title="Previous section in reading order"> &lt; </a>]</td>
 
11068
<td valign="middle" align="left">[<a href="#assert_005ftype" title="Next section in reading order"> &gt; </a>]</td>
 
11069
<td valign="middle" align="left"> &nbsp; </td>
 
11070
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11071
<td valign="middle" align="left">[<a href="#Functions" title="Up section"> Up </a>]</td>
 
11072
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
11073
<td valign="middle" align="left"> &nbsp; </td>
 
11074
<td valign="middle" align="left"> &nbsp; </td>
 
11075
<td valign="middle" align="left"> &nbsp; </td>
 
11076
<td valign="middle" align="left"> &nbsp; </td>
 
11077
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11078
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11079
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11080
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11081
</tr></table>
 
11082
<a name="assert_005fbool-1"></a>
 
11083
<h3 class="subsection">5.14.1 assert_bool</h3>
 
11084
<a name="index-assert_005fbool"></a>
 
11085
 
 
11086
<p>The function &lsquo;<samp>assert_bool</samp>&rsquo; throws an error if a given condition doesn&rsquo;t hold.
 
11087
</p>
 
11088
<dl compact="compact">
 
11089
<dt> <b>Syntax:</b></dt>
 
11090
<dd><p><b>assert_bool</b>(<i>condition</i>, <i>message</i>, <i>level</i>)
 
11091
</p>
 
11092
<dl compact="compact">
 
11093
<dt> <i>condition</i></dt>
 
11094
<dd><p>A boolean expression or anything else. If it is <code>false</code> or <code>nil</code>, an
 
11095
error will be thrown.
 
11096
</p>
 
11097
</dd>
 
11098
<dt> <i>message</i></dt>
 
11099
<dd><p>A string, holding the error message. If <code>message</code> is nil or empty, an
 
11100
&quot;anonymous assertion&quot; will be thrown, but it&rsquo;s always better to provide a
 
11101
meaningful error message.
 
11102
</p>
 
11103
</dd>
 
11104
<dt> <i>level</i></dt>
 
11105
<dd><p><code>level</code> specifies the error position in the same way as does Lua&rsquo;s
 
11106
&lsquo;<samp>error</samp>&rsquo;-function. Default is 1.
 
11107
</p></dd>
 
11108
</dl>
 
11109
 
 
11110
</dd>
 
11111
<dt> <b>Syntax Samples:</b></dt>
 
11112
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><i>assert_bool</i>(<i>no</i>[&quot;<var>mystone</var>&quot;]:<b>exists</b>(), &quot;<var>Stone 'mystone' has disappeared.</var>&quot;)
 
11113
</pre></td></tr></table>
 
11114
 
 
11115
</dd>
 
11116
<dt> <b>Details:</b></dt>
 
11117
<dd><p>Assertions help you to detect coding errors. They are heavily used on argument
 
11118
checks of library functions and resolver implementations. As the assertions
 
11119
should not lead to performance penalties during runtime they are usually just
 
11120
evaluated when the level&rsquo;s &lsquo;<samp>status</samp>&rsquo; is declared in the XML header element
 
11121
<a href="#g_t_003cversion_003e">&lt;version&gt;</a> with a value of either <code>&quot;test&quot;</code> or <code>&quot;experimental&quot;</code>.
 
11122
</p>
 
11123
<p>For <code>&quot;stable&quot;</code> and <code>&quot;released&quot;</code> levels standard assert statements are
 
11124
simply skipped on compilation like Lua comments. But you can enforce assert
 
11125
statements to be executed even in these modes by the following pattern of
 
11126
assignment and additional braces:
 
11127
</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>dummy</var> = (<i>assert_bool</i>)(<i>no</i>[&quot;<var>mystone</var>&quot;]:<b>exists</b>(), &quot;<var>Stone 'mystone' has disappeared.</var>&quot;)
 
11128
</pre></td></tr></table>
 
11129
 
 
11130
<p>Similar to <a href="#cond">cond</a>, all side effects within the evaluation of &lsquo;<samp>message</samp>&rsquo;
 
11131
and &lsquo;<samp>level</samp>&rsquo; will appear.
 
11132
</p>
 
11133
<p>See Lua&rsquo;s manual for more detailed information about the &lsquo;<samp>error</samp>&rsquo;-function.
 
11134
</p>
 
11135
</dd>
 
11136
</dl>
 
11137
 
 
11138
 
 
11139
<hr size="6">
 
11140
<a name="assert_005ftype"></a>
 
11141
<table cellpadding="1" cellspacing="1" border="0">
 
11142
<tr><td valign="middle" align="left">[<a href="#assert_005fbool" title="Previous section in reading order"> &lt; </a>]</td>
 
11143
<td valign="middle" align="left">[<a href="#cond" title="Next section in reading order"> &gt; </a>]</td>
 
11144
<td valign="middle" align="left"> &nbsp; </td>
 
11145
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11146
<td valign="middle" align="left">[<a href="#Functions" title="Up section"> Up </a>]</td>
 
11147
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
11148
<td valign="middle" align="left"> &nbsp; </td>
 
11149
<td valign="middle" align="left"> &nbsp; </td>
 
11150
<td valign="middle" align="left"> &nbsp; </td>
 
11151
<td valign="middle" align="left"> &nbsp; </td>
 
11152
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11153
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11154
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11155
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11156
</tr></table>
 
11157
<a name="assert_005ftype-1"></a>
 
11158
<h3 class="subsection">5.14.2 assert_type</h3>
 
11159
<a name="index-assert_005ftype"></a>
 
11160
 
 
11161
<p>The function &lsquo;<samp>assert_type</samp>&rsquo; throws an error if the first argument is not of one of the
 
11162
specified types.
 
11163
</p>
 
11164
<dl compact="compact">
 
11165
<dt> <b>Syntax:</b></dt>
 
11166
<dd><p><b>assert_type</b>(<i>var</i>, <i>vardescription</i>, <i>level</i>, <i>type1</i>, <i>type2</i>, ...)
 
11167
</p>
 
11168
<dl compact="compact">
 
11169
<dt> <i>var</i></dt>
 
11170
<dd><p>Any kind of variable.
 
11171
</p>
 
11172
</dd>
 
11173
<dt> <i>vardescription</i></dt>
 
11174
<dd><p>If &lsquo;<samp>var</samp>&rsquo; is not of one of the types &lsquo;<samp>type1</samp>&rsquo;, &lsquo;<samp>type2</samp>&rsquo; ...,
 
11175
then an error message will be thrown which includes the actual type of
 
11176
&lsquo;<samp>var</samp>&rsquo; and the desired types. &lsquo;<samp>vardescription</samp>&rsquo; is a string which
 
11177
holds additional information for the error message. It should be a lower-case
 
11178
not-too-short description of &lsquo;<samp>var</samp>&rsquo; (a name, as it is), additional
 
11179
details should be added in brackets.
 
11180
</p>
 
11181
</dd>
 
11182
<dt> <i>level</i></dt>
 
11183
<dd><p><code>level</code> specifies the error position in the same way as does Lua&rsquo;s
 
11184
&lsquo;<samp>error</samp>&rsquo;-function. Can&rsquo;t be omitted, use &lsquo;<samp>1</samp>&rsquo; if in doubt.
 
11185
</p>
 
11186
</dd>
 
11187
<dt> <i>type1</i>, <i>type2</i>, ...</dt>
 
11188
<dd><p>A sequence of strings. If &lsquo;<samp>var</samp>&rsquo; is none of these types, the error will
 
11189
be thrown. See details below for type descriptors.
 
11190
</p></dd>
 
11191
</dl>
 
11192
 
 
11193
</dd>
 
11194
<dt> <b>Syntax Samples:</b></dt>
 
11195
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><i>assert_type</i>(<var>arg1</var>, &quot;<var>mygreatfunction first argument (level width)</var>&quot;, <var>1</var>, &quot;<b>nil</b>&quot;, &quot;<b>positive integer</b>&quot;, &quot;<b>position</b>&quot;)
 
11196
</pre></td></tr></table>
 
11197
 
 
11198
</dd>
 
11199
<dt> <b>Details:</b></dt>
 
11200
<dd><p>Assertions help you to detect coding errors. They are heavily used on argument
 
11201
checks of library functions and resolver implementations. As the assertions
 
11202
should not lead to performance penalties during runtime they are usually just
 
11203
evaluated when the level&rsquo;s &lsquo;<samp>status</samp>&rsquo; is declared in the XML header element
 
11204
<a href="#g_t_003cversion_003e">&lt;version&gt;</a> with a value of either <code>&quot;test&quot;</code> or <code>&quot;experimental&quot;</code>.
 
11205
</p>
 
11206
<p>For <code>&quot;stable&quot;</code> and <code>&quot;released&quot;</code> levels standard assert statements are
 
11207
simply skipped on compilation like Lua comments. But you can enforce assert
 
11208
statements to be executed even in these modes by the following pattern of
 
11209
assignment and additional braces:
 
11210
</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>dummy</var> = (<i>assert_type</i>)(<var>arg1</var>, &quot;<var>myfunction first argument</var>&quot;, <var>1</var>, &quot;<b>integer</b>&quot;)
 
11211
</pre></td></tr></table>
 
11212
 
 
11213
<p>Possible types are all Lua types (like <code>&quot;nil&quot;</code>, <code>&quot;number&quot;</code>,
 
11214
<code>&quot;boolean&quot;</code>, <code>&quot;string&quot;</code>, <code>&quot;table&quot;</code>, <code>&quot;function&quot;</code>) except
 
11215
<code>&quot;userdata&quot;</code>, all Enigma-own user types (<code>&quot;object&quot;</code>,
 
11216
<code>&quot;position&quot;</code>, <code>&quot;tile&quot;</code>, <code>&quot;tiles&quot;</code>, <code>&quot;group&quot;</code>,
 
11217
<code>&quot;world&quot;</code>, <code>&quot;polist&quot;</code>, <code>&quot;unknown&quot;</code>), and
 
11218
types defined inside metatables (<code>&quot;map&quot;</code> from <a href="#libmap">libmap</a>), see
 
11219
<a href="#etype">etype</a>. In addition, the following type descriptors are recognized:
 
11220
</p><dl compact="compact">
 
11221
<dt> <code>&quot;integer&quot;</code></dt>
 
11222
<dd><p>Any integer number (..., -2, -1, 0, 1, 2, ...)
 
11223
</p></dd>
 
11224
<dt> <code>&quot;positive&quot;</code></dt>
 
11225
<dd><p>Any number which is positive and not zero.
 
11226
</p></dd>
 
11227
<dt> <code>&quot;non-negative&quot;</code></dt>
 
11228
<dd><p>Any number which is not negative, i.e. which is positive or zero.
 
11229
</p></dd>
 
11230
<dt> <code>&quot;natural&quot;</code></dt>
 
11231
<dd><p>Any non-negative integer number (0, 1, 2, ...).
 
11232
</p></dd>
 
11233
<dt> <code>&quot;positive integer&quot;</code></dt>
 
11234
<dd><p>Any positive integer number (1, 2, 3, ...).
 
11235
</p></dd>
 
11236
<dt> <code>&quot;non-empty string&quot;</code></dt>
 
11237
<dd><p>Any string other than the empty string <code>&quot;&quot;</code>.
 
11238
</p></dd>
 
11239
<dt> <code>&quot;any table&quot;</code></dt>
 
11240
<dd><p>If &lsquo;<samp>var</samp>&rsquo; is a table, the &lsquo;<samp>_type</samp>&rsquo;-attribute of its metatable will
 
11241
be used as its <a href="#etype">etype</a>. In particular, it won&rsquo;t be accepted as a
 
11242
<code>&quot;table&quot;</code> anymore, if this &lsquo;<samp>_type</samp>&rsquo;-attribute exists. For example,
 
11243
</p><table><tr><td>&nbsp;</td><td><pre class="example">assert_type(mytable, &quot;large table&quot;, 1, &quot;table&quot;)
 
11244
</pre></td></tr></table>
 
11245
<p>will throw an assertion when &lsquo;<samp>mytable</samp>&rsquo; is a <code>&quot;map&quot;</code>, although,
 
11246
technically, a <code>&quot;map&quot;</code> always is a <code>&quot;table&quot;</code>. You can use
 
11247
<code>&quot;any table&quot;</code> as type to allow for any table, regardless of its metatable.
 
11248
</p></dd>
 
11249
<dt> <code>&quot;valid object&quot;</code></dt>
 
11250
<dd><p>Any valid object.
 
11251
</p></dd>
 
11252
</dl>
 
11253
 
 
11254
<p>Similar to <a href="#cond">cond</a>, all side effects within the evaluation of
 
11255
&lsquo;<samp>vardescription</samp>&rsquo;, &lsquo;<samp>level</samp>&rsquo; and any type descriptor will apply.
 
11256
</p>
 
11257
<p>See Lua&rsquo;s manual for more detailed information about the &lsquo;<samp>error</samp>&rsquo;-function.
 
11258
</p>
 
11259
</dd>
 
11260
<dt> <b>Full Example:</b></dt>
 
11261
<dd><table><tr><td>&nbsp;</td><td><pre class="example">function paint_lawn(pos)
 
11262
    assert_type(pos, &quot;paint_lawn first argument&quot;, 2, &quot;position&quot;, &quot;object&quot;, &quot;polist&quot;, &quot;group&quot;, &quot;table&quot;)
 
11263
    if etype(pos) == &quot;object&quot; then
 
11264
        assert_bool(-pos, &quot;paint_lawn: Object not existing.&quot;, 2)
 
11265
    end
 
11266
    wo[pos] = ti[&quot;lawn&quot;]
 
11267
end
 
11268
paint_lawn(no[&quot;mystone&quot;])
 
11269
paint_lawn(&quot;myotherstone&quot;)
 
11270
</pre></td></tr></table>
 
11271
<p>If &lsquo;<samp>mystone</samp>&rsquo; doesn&rsquo;t exist, <code>no[&quot;mystone&quot;]</code> will still be of etype
 
11272
<code>&quot;object&quot;</code>, an invalid object. Hence <code>assert_type</code> will not trigger,
 
11273
but <code>assert_bool</code> will.
 
11274
</p>
 
11275
<p>If &lsquo;<samp>mystone</samp>&rsquo; exists, the second &lsquo;<samp>paint_lawn</samp>&rsquo; will throw an error via
 
11276
&lsquo;<samp>assert_type</samp>&rsquo;, as <code>pos</code> now is a <code>&quot;string&quot;</code>. The error message
 
11277
will be:
 
11278
</p><table><tr><td>&nbsp;</td><td><pre class="example">Wrong type for paint_lawn first argument, is string, must be one of position,
 
11279
object, polist, group, table.
 
11280
</pre></td></tr></table>
 
11281
</dd>
 
11282
</dl>
 
11283
 
 
11284
 
 
11285
<hr size="6">
 
11286
<a name="cond"></a>
 
11287
<table cellpadding="1" cellspacing="1" border="0">
 
11288
<tr><td valign="middle" align="left">[<a href="#assert_005ftype" title="Previous section in reading order"> &lt; </a>]</td>
 
11289
<td valign="middle" align="left">[<a href="#etype" title="Next section in reading order"> &gt; </a>]</td>
 
11290
<td valign="middle" align="left"> &nbsp; </td>
 
11291
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11292
<td valign="middle" align="left">[<a href="#Functions" title="Up section"> Up </a>]</td>
 
11293
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
11294
<td valign="middle" align="left"> &nbsp; </td>
 
11295
<td valign="middle" align="left"> &nbsp; </td>
 
11296
<td valign="middle" align="left"> &nbsp; </td>
 
11297
<td valign="middle" align="left"> &nbsp; </td>
 
11298
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11299
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11300
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11301
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11302
</tr></table>
 
11303
<a name="cond-1"></a>
 
11304
<h3 class="subsection">5.14.3 cond</h3>
 
11305
 
 
11306
<p>&lsquo;<samp>cond</samp>&rsquo; is a conditional assignment, a substitution for the ternary
 
11307
&lsquo;<samp>?:</samp>&rsquo; operator of C-like languages. Note however, that it is not an
 
11308
equivalent substitution but just a workaround with some subtle side effects.
 
11309
</p>
 
11310
<dl compact="compact">
 
11311
<dt> <b>Syntax:</b></dt>
 
11312
<dd><p><b>cond</b>(<i>condition</i>, <i>iftrue</i>, <i>iffalse</i>)
 
11313
</p>
 
11314
<dl compact="compact">
 
11315
<dt> <i>condition</i></dt>
 
11316
<dd><p>A boolean expression.
 
11317
</p>
 
11318
</dd>
 
11319
<dt> <i>iftrue</i></dt>
 
11320
<dd><p>The expression to be returned if &lsquo;<samp>condition</samp>&rsquo; is true.
 
11321
</p>
 
11322
</dd>
 
11323
<dt> <i>iffalse</i></dt>
 
11324
<dd><p>The expression to be returned if &lsquo;<samp>condition</samp>&rsquo; is false.
 
11325
</p></dd>
 
11326
</dl>
 
11327
 
 
11328
</dd>
 
11329
<dt> <b>Syntax Samples:</b></dt>
 
11330
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><i>ti</i>[&quot;<var>x</var>&quot;] = <i>cond</i>(<i>wo</i>[&quot;<b>IsDifficult</b>&quot;], {&quot;<b>st_death</b>&quot;}, <i>ti</i>[&quot;<var>#</var>&quot;])
 
11331
<i>ti</i>[&quot;<var>D</var>&quot;] = <i>cond</i>(<i>wo</i>[&quot;<b>IsDifficult&quot;</b>], {&quot;<b>st_death</b>&quot;}, {&quot;<b>nil</b>&quot;})
 
11332
</pre></td></tr></table>
 
11333
 
 
11334
</dd>
 
11335
<dt> <b>Details:</b></dt>
 
11336
<dd><p>&lsquo;<samp>cond</samp>&rsquo; always evaluates both expressions &lsquo;<samp>iftrue</samp>&rsquo; and
 
11337
&lsquo;<samp>iffalse</samp>&rsquo;, regardless of &lsquo;<samp>condition</samp>&rsquo;. Hence,
 
11338
</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>mytable</var> = {<var>1</var>,<var>2</var>,<var>3</var>,<var>4</var>,<var>5</var>,<var>6</var>,<var>7</var>,<var>8</var>,<var>9</var>,<var>0</var>}
 
11339
<var>removed_element</var> = <i>cond</i>(<var>i</var> &lt; <var>5</var>, <i>table</i>.<i>remove</i>(<var>mytable</var>, <var>i</var>), <i>table</i>.<i>remove</i>(<var>mytable</var>, <var>5</var>))
 
11340
</pre></td></tr></table>
 
11341
<p>will always remove two elements. With &lsquo;<samp>i=2</samp>&rsquo; the &lsquo;<samp>2</samp>&rsquo; will be returned
 
11342
but &lsquo;<samp>mytable</samp>&rsquo; will result in &lsquo;<samp>{1,3,4,5,7,8,9,0}</samp>&rsquo;, and with &lsquo;<samp>i=6</samp>&rsquo;
 
11343
you get the &lsquo;<samp>5</samp>&rsquo; but mytable will be &lsquo;<samp>{1,2,3,4,7,8,9,0}</samp>&rsquo;.
 
11344
</p>
 
11345
<p>Another Enigma example that will cause errors is:
 
11346
</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>w</var>,<var>h</var> = <i>cond</i>(<i>wo</i>[&quot;<b>IsDifficult</b>&quot;], <i>wo</i>(<i>ti</i>, &quot; &quot;, <var>map1</var>), <i>wo</i>(<i>ti</i>, &quot; &quot;, <var>map2</var>))
 
11347
</pre></td></tr></table>
 
11348
<p>Both, the second and the third argument will be evaluated. Thus two contradicting
 
11349
attempts to create a new world will be made causing the second one to fail. Use
 
11350
the following statement instead:
 
11351
</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>w</var>,<var>h</var> = <i>wo</i>(<i>ti</i>, &quot; &quot;, <i>cond</i>(<i>wo</i>[&quot;<b>IsDifficult</b>&quot;], <var>map1</var>, <var>map2</var>))
 
11352
</pre></td></tr></table>
 
11353
<p>However, in most cases &lsquo;<samp>cond</samp>&rsquo; is used anyway with static expressions for
 
11354
&lsquo;<samp>iftrue</samp>&rsquo; and &lsquo;<samp>iffalse</samp>&rsquo; (e.g. strings or variables) and no side effects
 
11355
will occur.
 
11356
</p>
 
11357
</dd>
 
11358
</dl>
 
11359
 
 
11360
<hr size="6">
 
11361
<a name="etype"></a>
 
11362
<table cellpadding="1" cellspacing="1" border="0">
 
11363
<tr><td valign="middle" align="left">[<a href="#cond" title="Previous section in reading order"> &lt; </a>]</td>
 
11364
<td valign="middle" align="left">[<a href="#fl" title="Next section in reading order"> &gt; </a>]</td>
 
11365
<td valign="middle" align="left"> &nbsp; </td>
 
11366
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11367
<td valign="middle" align="left">[<a href="#Functions" title="Up section"> Up </a>]</td>
 
11368
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
11369
<td valign="middle" align="left"> &nbsp; </td>
 
11370
<td valign="middle" align="left"> &nbsp; </td>
 
11371
<td valign="middle" align="left"> &nbsp; </td>
 
11372
<td valign="middle" align="left"> &nbsp; </td>
 
11373
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11374
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11375
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11376
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11377
</tr></table>
 
11378
<a name="etype-1"></a>
 
11379
<h3 class="subsection">5.14.4 etype</h3>
 
11380
<a name="index-etype"></a>
 
11381
 
 
11382
<p>The function &lsquo;<samp>etype()</samp>&rsquo; returns the advanced type of its argument.
 
11383
</p>
 
11384
<dl compact="compact">
 
11385
<dt> <b>Syntax:</b></dt>
 
11386
<dd><p><b>etype</b>(<i>var</i>)
 
11387
</p>
 
11388
<dl compact="compact">
 
11389
<dt> <i>var</i></dt>
 
11390
<dd><p>Any kind of variable.
 
11391
</p></dd>
 
11392
</dl>
 
11393
 
 
11394
</dd>
 
11395
<dt> <b>Syntax Samples:</b></dt>
 
11396
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>argtype</var> = <i>etype</i>(<var>value</var>)
 
11397
</pre></td></tr></table>
 
11398
 
 
11399
</dd>
 
11400
<dt> <b>Details:</b></dt>
 
11401
<dd><p>Lua types are <code>&quot;nil&quot;</code>, <code>&quot;number&quot;</code>, <code>&quot;boolean&quot;</code>, <code>&quot;string&quot;</code>,
 
11402
<code>&quot;table&quot;</code>, <code>&quot;function&quot;</code>, <code>&quot;userdata&quot;</code>, and <code>&quot;thread&quot;</code>. You
 
11403
can use Lua&rsquo;s &lsquo;<samp>type</samp>&rsquo;-function to query the type of any variable. However,
 
11404
Enigma defines more types through various means, and these types can be queried
 
11405
via &lsquo;<samp>etype</samp>&rsquo;. &lsquo;<samp>etype</samp>&rsquo; will return its argument&rsquo;s Lua type as usual,
 
11406
with the following two exceptions:
 
11407
</p><dl compact="compact">
 
11408
<dt> <i>&quot;userdata&quot;</i></dt>
 
11409
<dd><p>Instead of <code>&quot;userdata&quot;</code>, Enigma&rsquo;s special types will be returned. These
 
11410
special types are <code>&quot;object&quot;</code>, <code>&quot;position&quot;</code>, <code>&quot;tile&quot;</code>,
 
11411
<code>&quot;tiles&quot;</code>, <code>&quot;group&quot;</code>, <code>&quot;world&quot;</code>, <code>&quot;polist&quot;</code> and
 
11412
<code>&quot;default&quot;</code>. If an unknown userdata is encountered, <code>&quot;unknown&quot;</code> will
 
11413
be returned.
 
11414
</p>
 
11415
</dd>
 
11416
<dt> <i>&quot;table&quot;</i></dt>
 
11417
<dd><p>If <code>var</code> is a table, its metatable will be queried. If there is an entry
 
11418
&lsquo;<samp>_type</samp>&rsquo;, this entry will be used as <code>etype</code>. Most important examples
 
11419
of this kind are <a href="#libmap">libmap</a>-maps, <a href="#Resolvers">Resolvers</a> and <a href="#res_002emaze">res.maze</a> with its
 
11420
mazes and cells. So &lsquo;<samp>etype</samp>&rsquo; will return <code>&quot;map&quot;</code>, <code>&quot;resolver&quot;</code>,
 
11421
<code>&quot;maze&quot;</code> and <code>&quot;cell&quot;</code>, too. You may access the <code>etype</code>-system
 
11422
through &lsquo;<samp>_type</samp>&rsquo; whenever you use metatables on your own.
 
11423
</p></dd>
 
11424
</dl>
 
11425
 
 
11426
</dd>
 
11427
</dl>
 
11428
 
 
11429
<hr size="6">
 
11430
<a name="fl"></a>
 
11431
<table cellpadding="1" cellspacing="1" border="0">
 
11432
<tr><td valign="middle" align="left">[<a href="#etype" title="Previous section in reading order"> &lt; </a>]</td>
 
11433
<td valign="middle" align="left">[<a href="#grp" title="Next section in reading order"> &gt; </a>]</td>
 
11434
<td valign="middle" align="left"> &nbsp; </td>
 
11435
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11436
<td valign="middle" align="left">[<a href="#Functions" title="Up section"> Up </a>]</td>
 
11437
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
11438
<td valign="middle" align="left"> &nbsp; </td>
 
11439
<td valign="middle" align="left"> &nbsp; </td>
 
11440
<td valign="middle" align="left"> &nbsp; </td>
 
11441
<td valign="middle" align="left"> &nbsp; </td>
 
11442
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11443
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11444
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11445
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11446
</tr></table>
 
11447
<a name="fl-1"></a>
 
11448
<h3 class="subsection">5.14.5 fl</h3>
 
11449
<a name="index-fl"></a>
 
11450
 
 
11451
<p>The function &lsquo;<samp>fl()</samp>&rsquo; retrieves the floor objects for the given position or
 
11452
positions.
 
11453
</p>
 
11454
<dl compact="compact">
 
11455
<dt> <b>Syntax:</b></dt>
 
11456
<dd><p>result = <b>fl</b>(&lt;<i>pos</i>| {<i>x</i>, <i>y</i>}|<i>x</i>, <i>y</i>| <i>obj</i> | <i>group</i>| <i>polist</i>&gt;)
 
11457
</p>
 
11458
</dd>
 
11459
<dt> <b>Details:</b></dt>
 
11460
<dd><p>If the argument describes a single position, the floor object at this position
 
11461
is returned. When this single position is outside of the world an invalid
 
11462
&lsquo;<samp>NULL</samp>&rsquo; <a href="#Object">Object</a> reference is returned.
 
11463
</p>
 
11464
<p>If the argument is either a <a href="#Group">Group</a> or <a href="#PositionList">PositionList</a> all floor objects
 
11465
of the related positions are retrieved and added in the same sequence to a new
 
11466
result group. Invalid positions will be skipped without adding an object to the
 
11467
group.
 
11468
</p>
 
11469
<p>In any case you can send messages to the result value.
 
11470
</p>
 
11471
</dd>
 
11472
<dt> <b>Syntax Samples:</b></dt>
 
11473
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>floor</var> = <i>fl</i>(<i>po</i>(<var>3</var>, <var>5</var>))
 
11474
<var>floor</var> = <i>fl</i>({<var>3</var>, <var>5</var>})
 
11475
<var>floor</var> = <i>fl</i>(<var>3</var>, <var>5</var>)
 
11476
<var>floor</var> = <i>fl</i>{<var>3</var>, <var>5</var>}     -- by Lua syntax equivalence
 
11477
<var>floor</var> = <i>fl</i>(<var>mystone</var>)
 
11478
<var>group</var> = <i>fl</i>(<i>no</i>[&quot;door#*&quot;])
 
11479
<var>group</var> = <i>fl</i>(<i>po</i>(<var>3</var>, <var>5</var>)..<i>po</i>(<var>4</var>, <var>2</var>))
 
11480
</pre></td></tr></table>
 
11481
 
 
11482
</dd>
 
11483
</dl>
 
11484
 
 
11485
<hr size="6">
 
11486
<a name="grp"></a>
 
11487
<table cellpadding="1" cellspacing="1" border="0">
 
11488
<tr><td valign="middle" align="left">[<a href="#fl" title="Previous section in reading order"> &lt; </a>]</td>
 
11489
<td valign="middle" align="left">[<a href="#it" title="Next section in reading order"> &gt; </a>]</td>
 
11490
<td valign="middle" align="left"> &nbsp; </td>
 
11491
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11492
<td valign="middle" align="left">[<a href="#Functions" title="Up section"> Up </a>]</td>
 
11493
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
11494
<td valign="middle" align="left"> &nbsp; </td>
 
11495
<td valign="middle" align="left"> &nbsp; </td>
 
11496
<td valign="middle" align="left"> &nbsp; </td>
 
11497
<td valign="middle" align="left"> &nbsp; </td>
 
11498
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11499
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11500
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11501
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11502
</tr></table>
 
11503
<a name="grp-1"></a>
 
11504
<h3 class="subsection">5.14.6 grp</h3>
 
11505
<a name="index-grp"></a>
 
11506
 
 
11507
<p>The function &lsquo;<samp>grp()</samp>&rsquo; builds a <a href="#Group">Group</a> out of its argument <a href="#Object">Object</a>s.
 
11508
</p>
 
11509
<dl compact="compact">
 
11510
<dt> <b>Syntax:</b></dt>
 
11511
<dd><p><b>grp</b>(&lt;{<i>obj1</i>,<i>obj2</i>,...}| <i>obj1</i>,<i>obj2</i>,... |<i>group</i>&gt;)
 
11512
</p>
 
11513
</dd>
 
11514
<dt> <b>Details:</b></dt>
 
11515
<dd><p>Returns a new <a href="#Group">Group</a> that is build up by the objects listed by the
 
11516
arguments. The contents objects must be either listed in a Lua table, given
 
11517
as multiple single object arguments or an existing group. In all cases the
 
11518
sequence of objects is maintained in the returned new group, but all invalid
 
11519
&lsquo;<samp>NULL</samp>&rsquo; objects are omitted. In case one object is listed multiple times
 
11520
just the first instance will occur in the group and subsequent instances will
 
11521
be omitted.
 
11522
</p>
 
11523
</dd>
 
11524
<dt> <b>Syntax Samples:</b></dt>
 
11525
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>newgroup</var> = <i>grp</i>(<var>obj1</var>, <var>obj2</var>, <var>obj3</var>)
 
11526
<var>newgroup</var> = <i>grp</i>({<var>obj1</var>,<var>obj2</var>})
 
11527
<var>newgroup</var> = <i>grp</i>{<var>obj1</var>,<var>obj2</var>}   -- Lua syntax equivalence
 
11528
<var>newgroup</var> = <i>grp</i>{}            -- empty group
 
11529
<var>newgroup</var> = <i>grp</i>(<var>group</var>)       -- a copy of group cleaned of invalid &lsquo;<samp>NULL</samp>&rsquo; objects
 
11530
</pre></td></tr></table>
 
11531
 
 
11532
</dd>
 
11533
</dl>
 
11534
 
 
11535
<hr size="6">
 
11536
<a name="it"></a>
 
11537
<table cellpadding="1" cellspacing="1" border="0">
 
11538
<tr><td valign="middle" align="left">[<a href="#grp" title="Previous section in reading order"> &lt; </a>]</td>
 
11539
<td valign="middle" align="left">[<a href="#ORI2DIR" title="Next section in reading order"> &gt; </a>]</td>
 
11540
<td valign="middle" align="left"> &nbsp; </td>
 
11541
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11542
<td valign="middle" align="left">[<a href="#Functions" title="Up section"> Up </a>]</td>
 
11543
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
11544
<td valign="middle" align="left"> &nbsp; </td>
 
11545
<td valign="middle" align="left"> &nbsp; </td>
 
11546
<td valign="middle" align="left"> &nbsp; </td>
 
11547
<td valign="middle" align="left"> &nbsp; </td>
 
11548
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11549
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11550
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11551
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11552
</tr></table>
 
11553
<a name="it-1"></a>
 
11554
<h3 class="subsection">5.14.7 it</h3>
 
11555
<a name="index-it"></a>
 
11556
 
 
11557
<p>The function &lsquo;<samp>it()</samp>&rsquo; retrieves the item objects for the given position or
 
11558
positions.
 
11559
</p>
 
11560
<dl compact="compact">
 
11561
<dt> <b>Syntax:</b></dt>
 
11562
<dd><p>result = <b>it</b>(&lt;<i>pos</i>| {<i>x</i>, <i>y</i>}|<i>x</i>, <i>y</i>| <i>obj</i> | <i>group</i>| <i>polist</i>&gt;)
 
11563
</p>
 
11564
</dd>
 
11565
<dt> <b>Details:</b></dt>
 
11566
<dd><p>If the argument describes a single position, the item object at this position
 
11567
is returned. When no item is located at the given single position or this
 
11568
position is outside of the world an invalid &lsquo;<samp>NULL</samp>&rsquo; <a href="#Object">Object</a> reference
 
11569
is returned.
 
11570
</p>
 
11571
<p>If the argument is either a <a href="#Group">Group</a> or <a href="#PositionList">PositionList</a> all item objects
 
11572
of the related positions are retrieved and added in the same sequence to a new
 
11573
result group. Invalid positions or positions without items will be skipped
 
11574
without adding an object to the group.
 
11575
</p>
 
11576
<p>In any case you can send messages to the result value.
 
11577
</p>
 
11578
</dd>
 
11579
<dt> <b>Syntax Samples:</b></dt>
 
11580
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>item</var> = <i>it</i>(<i>po</i>(<var>3</var>, <var>5</var>))
 
11581
<var>item</var> = <i>it</i>({<var>3</var>, <var>5</var>})
 
11582
<var>item</var> = <i>it</i>(<var>3</var>, <var>5</var>)
 
11583
<var>item</var> = <i>it</i>{<var>3</var>, <var>5</var>}     -- by Lua syntax equivalence
 
11584
<var>item</var> = <i>it</i>(<var>mystone</var>)
 
11585
<var>group</var> = <i>it</i>(<i>no</i>[&quot;door#*&quot;])
 
11586
<var>group</var> = <i>it</i>(<i>po</i>(<var>3</var>, <var>5</var>)..<i>po</i>(<var>4</var>, <var>2</var>))
 
11587
</pre></td></tr></table>
 
11588
 
 
11589
</dd>
 
11590
</dl>
 
11591
 
 
11592
<hr size="6">
 
11593
<a name="ORI2DIR"></a>
 
11594
<table cellpadding="1" cellspacing="1" border="0">
 
11595
<tr><td valign="middle" align="left">[<a href="#it" title="Previous section in reading order"> &lt; </a>]</td>
 
11596
<td valign="middle" align="left">[<a href="#random" title="Next section in reading order"> &gt; </a>]</td>
 
11597
<td valign="middle" align="left"> &nbsp; </td>
 
11598
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11599
<td valign="middle" align="left">[<a href="#Functions" title="Up section"> Up </a>]</td>
 
11600
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
11601
<td valign="middle" align="left"> &nbsp; </td>
 
11602
<td valign="middle" align="left"> &nbsp; </td>
 
11603
<td valign="middle" align="left"> &nbsp; </td>
 
11604
<td valign="middle" align="left"> &nbsp; </td>
 
11605
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11606
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11607
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11608
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11609
</tr></table>
 
11610
<a name="ORI2DIR-1"></a>
 
11611
<h3 class="subsection">5.14.8 ORI2DIR</h3>
 
11612
 
 
11613
<p>The table &lsquo;<samp>ORI2DIR[]</samp>&rsquo; converts orientation values to direction values.
 
11614
</p>
 
11615
<dl compact="compact">
 
11616
<dt> <b>Syntax:</b></dt>
 
11617
<dd><p>result = <b>ORI2DIR</b>[<var>orientation</var>]
 
11618
</p>
 
11619
</dd>
 
11620
<dt> <b>Details:</b></dt>
 
11621
<dd><p>The table has stored the proper directions values at the index positions of
 
11622
the related orientations.
 
11623
</p>
 
11624
</dd>
 
11625
<dt> <b>Syntax Samples:</b></dt>
 
11626
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>direction</var> = <i>ORI2DIR</i>[NORTH]      -- N  = po(0, -1)
 
11627
<var>direction</var> = <i>ORI2DIR</i>[SOUTHEAST]  -- SE = po(1,  1)
 
11628
<var>direction</var> = <i>ORI2DIR</i>[NODIR]      --      po(0,  0)
 
11629
</pre></td></tr></table>
 
11630
 
 
11631
</dd>
 
11632
</dl>
 
11633
<hr size="6">
 
11634
<a name="random"></a>
 
11635
<table cellpadding="1" cellspacing="1" border="0">
 
11636
<tr><td valign="middle" align="left">[<a href="#ORI2DIR" title="Previous section in reading order"> &lt; </a>]</td>
 
11637
<td valign="middle" align="left">[<a href="#st" title="Next section in reading order"> &gt; </a>]</td>
 
11638
<td valign="middle" align="left"> &nbsp; </td>
 
11639
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11640
<td valign="middle" align="left">[<a href="#Functions" title="Up section"> Up </a>]</td>
 
11641
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
11642
<td valign="middle" align="left"> &nbsp; </td>
 
11643
<td valign="middle" align="left"> &nbsp; </td>
 
11644
<td valign="middle" align="left"> &nbsp; </td>
 
11645
<td valign="middle" align="left"> &nbsp; </td>
 
11646
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11647
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11648
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11649
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11650
</tr></table>
 
11651
<a name="random-1"></a>
 
11652
<h3 class="subsection">5.14.9 random</h3>
 
11653
<a name="index-random"></a>
 
11654
 
 
11655
<p>The function &lsquo;<samp>random()</samp>&rsquo; is a syntax compatible replacement for the standard
 
11656
Lua function &lsquo;<samp>math.random()</samp>&rsquo;. Both names refer to the same Enigma random
 
11657
implementation.
 
11658
</p>
 
11659
<dl compact="compact">
 
11660
<dt> <b>Syntax:</b></dt>
 
11661
<dd><p>result = <b>random</b>(&lt;|<var>n</var>|<var>l</var>,<var>u</var>&gt;)
 
11662
</p>
 
11663
</dd>
 
11664
<dt> <b>Details:</b></dt>
 
11665
<dd><p>When called without arguments, math.random returns a pseudo-random real number
 
11666
in the range [0,1). When called with a number n, math.random returns a
 
11667
pseudo-random integer in the range [1,n]. When called with two arguments, l and
 
11668
u, math.random returns a pseudo-random integer in the range [l,u].
 
11669
</p>
 
11670
<p>The only difference from the Lua implementation is the random generator itself.
 
11671
Enigma uses an own implementation that guarantees the same pseudo-random
 
11672
number sequence on any operating system and any processor for a given seed.
 
11673
This feature will be important for future Enigma versions and thus the
 
11674
randomseed can not be modified by the level itself.
 
11675
</p>
 
11676
</dd>
 
11677
<dt> <b>Syntax Samples:</b></dt>
 
11678
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>float</var> = <i>random</i>()          -- e.g. 0.402834
 
11679
<var>integer</var> = <i>random</i>(20)      -- e.g. 13
 
11680
<var>integer</var> = <i>random</i>(5, 10)   -- e.g. 5
 
11681
</pre></td></tr></table>
 
11682
 
 
11683
</dd>
 
11684
</dl>
 
11685
<hr size="6">
 
11686
<a name="st"></a>
 
11687
<table cellpadding="1" cellspacing="1" border="0">
 
11688
<tr><td valign="middle" align="left">[<a href="#random" title="Previous section in reading order"> &lt; </a>]</td>
 
11689
<td valign="middle" align="left">[<a href="#usertype" title="Next section in reading order"> &gt; </a>]</td>
 
11690
<td valign="middle" align="left"> &nbsp; </td>
 
11691
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11692
<td valign="middle" align="left">[<a href="#Functions" title="Up section"> Up </a>]</td>
 
11693
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
11694
<td valign="middle" align="left"> &nbsp; </td>
 
11695
<td valign="middle" align="left"> &nbsp; </td>
 
11696
<td valign="middle" align="left"> &nbsp; </td>
 
11697
<td valign="middle" align="left"> &nbsp; </td>
 
11698
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11699
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11700
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11701
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11702
</tr></table>
 
11703
<a name="st-1"></a>
 
11704
<h3 class="subsection">5.14.10 st</h3>
 
11705
<a name="index-st"></a>
 
11706
 
 
11707
<p>The function &lsquo;<samp>st()</samp>&rsquo; retrieves the stone objects for the given position or
 
11708
positions.
 
11709
</p>
 
11710
<dl compact="compact">
 
11711
<dt> <b>Syntax:</b></dt>
 
11712
<dd><p>result = <b>st</b>(&lt;<i>pos</i>| {<i>x</i>, <i>y</i>}|<i>x</i>, <i>y</i>| <i>obj</i> | <i>group</i>| <i>polist</i>&gt;)
 
11713
</p>
 
11714
</dd>
 
11715
<dt> <b>Details:</b></dt>
 
11716
<dd><p>If the argument describes a single position, the stone object at this position
 
11717
is returned. When no stone is located at the given single position or this
 
11718
position is outside of the world an invalid &lsquo;<samp>NULL</samp>&rsquo; <a href="#Object">Object</a> reference
 
11719
is returned.
 
11720
</p>
 
11721
<p>If the argument is either a <a href="#Group">Group</a> or <a href="#PositionList">PositionList</a> all stone objects
 
11722
of the related positions are retrieved and added in the same sequence to a new
 
11723
result group. Invalid positions or positions without stone will be skipped
 
11724
without adding an object to the group.
 
11725
</p>
 
11726
<p>In any case you can send messages to the result value.
 
11727
</p>
 
11728
</dd>
 
11729
<dt> <b>Syntax Samples:</b></dt>
 
11730
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>stone</var> = <i>st</i>(<i>po</i>(<var>3</var>, <var>5</var>))
 
11731
<var>stone</var> = <i>st</i>({<var>3</var>, <var>5</var>})
 
11732
<var>stone</var> = <i>st</i>(<var>3</var>, <var>5</var>)
 
11733
<var>stone</var> = <i>st</i>{<var>3</var>, <var>5</var>}     -- by Lua syntax equivalence
 
11734
<var>stone</var> = <i>st</i>(<var>myfloor</var>)
 
11735
<var>group</var> = <i>st</i>(<i>no</i>[&quot;cherry#*&quot;])
 
11736
<var>group</var> = <i>st</i>(<i>po</i>(<var>3</var>, <var>5</var>)..<i>po</i>(<var>4</var>, <var>2</var>))
 
11737
</pre></td></tr></table>
 
11738
 
 
11739
</dd>
 
11740
</dl>
 
11741
 
 
11742
<hr size="6">
 
11743
<a name="usertype"></a>
 
11744
<table cellpadding="1" cellspacing="1" border="0">
 
11745
<tr><td valign="middle" align="left">[<a href="#st" title="Previous section in reading order"> &lt; </a>]</td>
 
11746
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next section in reading order"> &gt; </a>]</td>
 
11747
<td valign="middle" align="left"> &nbsp; </td>
 
11748
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11749
<td valign="middle" align="left">[<a href="#Functions" title="Up section"> Up </a>]</td>
 
11750
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Next chapter"> &gt;&gt; </a>]</td>
 
11751
<td valign="middle" align="left"> &nbsp; </td>
 
11752
<td valign="middle" align="left"> &nbsp; </td>
 
11753
<td valign="middle" align="left"> &nbsp; </td>
 
11754
<td valign="middle" align="left"> &nbsp; </td>
 
11755
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11756
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11757
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11758
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11759
</tr></table>
 
11760
<a name="usertype-1"></a>
 
11761
<h3 class="subsection">5.14.11 usertype</h3>
 
11762
<a name="index-usertype"></a>
 
11763
 
 
11764
<p>The function &lsquo;<samp>usertype()</samp>&rsquo; returns type info for Enigma data types.
 
11765
</p>
 
11766
<dl compact="compact">
 
11767
<dt> <b>Syntax:</b></dt>
 
11768
<dd><p><b>usertype</b>(<i>var</i>)
 
11769
</p>
 
11770
<dl compact="compact">
 
11771
<dt> <i>var</i></dt>
 
11772
<dd><p>Any kind of variable.
 
11773
</p></dd>
 
11774
</dl>
 
11775
 
 
11776
</dd>
 
11777
<dt> <b>Syntax Samples:</b></dt>
 
11778
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>argtype</var> = <i>usertype</i>(<var>value</var>)
 
11779
</pre></td></tr></table>
 
11780
 
 
11781
</dd>
 
11782
<dt> <b>Details:</b></dt>
 
11783
<dd><p>Just for Lua type <code>&quot;userdata&quot;</code> Enigma&rsquo;s special type info will be returned.
 
11784
These special types are <code>&quot;object&quot;</code>, <code>&quot;position&quot;</code>, <code>&quot;tile&quot;</code>,
 
11785
<code>&quot;tiles&quot;</code>, <code>&quot;group&quot;</code>, <code>&quot;world&quot;</code>, <code>&quot;polist&quot;</code> and
 
11786
<code>&quot;default&quot;</code>. If another data type is encountered, <code>&quot;unknown&quot;</code> will
 
11787
be returned.
 
11788
</p>
 
11789
<p>The function <a href="#etype">etype</a> provides a more general type evaluation for arbitrary
 
11790
data types and is partially based on this function.
 
11791
</p>
 
11792
</dd>
 
11793
</dl>
 
11794
 
 
11795
 
 
11796
<hr size="6">
 
11797
<a name="Common-Attributes-and-Messages"></a>
 
11798
<table cellpadding="1" cellspacing="1" border="0">
 
11799
<tr><td valign="middle" align="left">[<a href="#usertype" title="Previous section in reading order"> &lt; </a>]</td>
 
11800
<td valign="middle" align="left">[<a href="#Common-Attributes" title="Next section in reading order"> &gt; </a>]</td>
 
11801
<td valign="middle" align="left"> &nbsp; </td>
 
11802
<td valign="middle" align="left">[<a href="#Lua-API" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11803
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
11804
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
11805
<td valign="middle" align="left"> &nbsp; </td>
 
11806
<td valign="middle" align="left"> &nbsp; </td>
 
11807
<td valign="middle" align="left"> &nbsp; </td>
 
11808
<td valign="middle" align="left"> &nbsp; </td>
 
11809
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11810
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11811
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11812
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11813
</tr></table>
 
11814
<a name="Common-Attributes-and-Messages-1"></a>
 
11815
<h1 class="chapter">6. Common Attributes and Messages</h1>
 
11816
 
 
11817
<p>Some attributes, messages and constants are common to many objects or even
 
11818
supported by all objects. We describe them here in detail. The following
 
11819
chapters will just reference them or even skip them when they are generally
 
11820
supported and used in the default manner.
 
11821
</p>
 
11822
<table class="menu" border="0" cellspacing="0">
 
11823
<tr><td align="left" valign="top"><a href="#Common-Attributes">6.1 Common Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11824
</td></tr>
 
11825
<tr><td align="left" valign="top"><a href="#Common-Messages">6.2 Common Messages</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11826
</td></tr>
 
11827
<tr><td align="left" valign="top"><a href="#Common-Constants">6.3 Common Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11828
</td></tr>
 
11829
<tr><td align="left" valign="top"><a href="#Global-Attributes">6.4 Global Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11830
</td></tr>
 
11831
</table>
 
11832
 
 
11833
<hr size="6">
 
11834
<a name="Common-Attributes"></a>
 
11835
<table cellpadding="1" cellspacing="1" border="0">
 
11836
<tr><td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Previous section in reading order"> &lt; </a>]</td>
 
11837
<td valign="middle" align="left">[<a href="#name" title="Next section in reading order"> &gt; </a>]</td>
 
11838
<td valign="middle" align="left"> &nbsp; </td>
 
11839
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11840
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Up section"> Up </a>]</td>
 
11841
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
11842
<td valign="middle" align="left"> &nbsp; </td>
 
11843
<td valign="middle" align="left"> &nbsp; </td>
 
11844
<td valign="middle" align="left"> &nbsp; </td>
 
11845
<td valign="middle" align="left"> &nbsp; </td>
 
11846
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11847
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11848
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11849
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11850
</tr></table>
 
11851
<a name="Common-Attributes-1"></a>
 
11852
<h2 class="section">6.1 Common Attributes</h2>
 
11853
 
 
11854
<table class="menu" border="0" cellspacing="0">
 
11855
<tr><td align="left" valign="top"><a href="#name">6.1.1 name</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11856
</td></tr>
 
11857
<tr><td align="left" valign="top"><a href="#state">6.1.2 state</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11858
</td></tr>
 
11859
<tr><td align="left" valign="top"><a href="#target">6.1.3 target</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11860
</td></tr>
 
11861
<tr><td align="left" valign="top"><a href="#action">6.1.4 action</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11862
</td></tr>
 
11863
<tr><td align="left" valign="top"><a href="#nopaction">6.1.5 nopaction</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11864
</td></tr>
 
11865
<tr><td align="left" valign="top"><a href="#safeaction">6.1.6 safeaction</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11866
</td></tr>
 
11867
<tr><td align="left" valign="top"><a href="#inverse">6.1.7 inverse</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11868
</td></tr>
 
11869
<tr><td align="left" valign="top"><a href="#destination">6.1.8 destination</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11870
</td></tr>
 
11871
<tr><td align="left" valign="top"><a href="#friction">6.1.9 friction</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11872
</td></tr>
 
11873
<tr><td align="left" valign="top"><a href="#adhesion">6.1.10 adhesion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11874
</td></tr>
 
11875
<tr><td align="left" valign="top"><a href="#checkerboard">6.1.11 checkerboard</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11876
</td></tr>
 
11877
<tr><td align="left" valign="top"><a href="#rubbers">6.1.12 rubbers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11878
</td></tr>
 
11879
<tr><td align="left" valign="top"><a href="#wires">6.1.13 wires</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11880
</td></tr>
 
11881
<tr><td align="left" valign="top"><a href="#fellows">6.1.14 fellows</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
11882
</td></tr>
 
11883
</table>
 
11884
 
 
11885
<hr size="6">
 
11886
<a name="name"></a>
 
11887
<table cellpadding="1" cellspacing="1" border="0">
 
11888
<tr><td valign="middle" align="left">[<a href="#Common-Attributes" title="Previous section in reading order"> &lt; </a>]</td>
 
11889
<td valign="middle" align="left">[<a href="#state" title="Next section in reading order"> &gt; </a>]</td>
 
11890
<td valign="middle" align="left"> &nbsp; </td>
 
11891
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11892
<td valign="middle" align="left">[<a href="#Common-Attributes" title="Up section"> Up </a>]</td>
 
11893
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
11894
<td valign="middle" align="left"> &nbsp; </td>
 
11895
<td valign="middle" align="left"> &nbsp; </td>
 
11896
<td valign="middle" align="left"> &nbsp; </td>
 
11897
<td valign="middle" align="left"> &nbsp; </td>
 
11898
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11899
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11900
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11901
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11902
</tr></table>
 
11903
<a name="name-1"></a>
 
11904
<h3 class="subsection">6.1.1 name</h3>
 
11905
 
 
11906
<p>The attribute of <a href="#Object-Naming">Object Naming</a> that allows you to name any object for
 
11907
reference purposes. It is up to you to ensure the uniqueness of the names. But
 
11908
the engine supports you by autonumbering names ending on a &lsquo;<samp>#</samp>&rsquo; sign
 
11909
(see section <a href="#Object-Naming">Object Naming</a>). If you reuse an already used name the first object will
 
11910
be unnamed and all name references will point to the new named object. If you
 
11911
have need of naming an object you should do it with the object creation as
 
11912
a few objects have need of names and will otherwise be named by the engine with
 
11913
unique names.
 
11914
</p>
 
11915
<p>Note that this attribute is not listed in the individual object descriptions.
 
11916
</p>
 
11917
<dl compact="compact">
 
11918
<dt> <b>Type:</b> &nbsp;&nbsp;string</dt>
 
11919
<dt> <b>Values:</b> &nbsp;&nbsp;{a-zA-Z0-9_}+</dt>
 
11920
<dd><p>A sequence of characters of the given characters plus special characters as
 
11921
mentioned in the text above.
 
11922
</p></dd>
 
11923
<dt> <b>Default:</b> &nbsp;&nbsp;<code>nil</code></dt>
 
11924
<dd><p>Some objects will be autonamed if no name is defined.
 
11925
</p></dd>
 
11926
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
11927
<dt> <b>Support:</b> &nbsp;&nbsp;by all objects</dt>
 
11928
</dl>
 
11929
 
 
11930
<hr size="6">
 
11931
<a name="state"></a>
 
11932
<table cellpadding="1" cellspacing="1" border="0">
 
11933
<tr><td valign="middle" align="left">[<a href="#name" title="Previous section in reading order"> &lt; </a>]</td>
 
11934
<td valign="middle" align="left">[<a href="#target" title="Next section in reading order"> &gt; </a>]</td>
 
11935
<td valign="middle" align="left"> &nbsp; </td>
 
11936
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11937
<td valign="middle" align="left">[<a href="#Common-Attributes" title="Up section"> Up </a>]</td>
 
11938
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
11939
<td valign="middle" align="left"> &nbsp; </td>
 
11940
<td valign="middle" align="left"> &nbsp; </td>
 
11941
<td valign="middle" align="left"> &nbsp; </td>
 
11942
<td valign="middle" align="left"> &nbsp; </td>
 
11943
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11944
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11945
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11946
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11947
</tr></table>
 
11948
<a name="state-1"></a>
 
11949
<h3 class="subsection">6.1.2 state</h3>
 
11950
 
 
11951
<p>The central attribute of any object that describes the current state of an
 
11952
object in its standard life cycle. This <a href="#Object-State">Object State</a> is described by
 
11953
a simple number. Most dynamic objects have just 2 states. Others may have more.
 
11954
The available states are listed with each object. This universal attribute
 
11955
allows common messages like <a href="#toggle">toggle</a>, <a href="#signal">signal</a>, <a href="#on">on</a>, <a href="#off">off</a>,
 
11956
<a href="#open">open</a>, <a href="#close">close</a>.
 
11957
</p>
 
11958
<dl compact="compact">
 
11959
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
11960
<dt> <b>Values:</b> &nbsp;&nbsp;dependent on the individual object</dt>
 
11961
<dd><p>Please use the given upper case constants.
 
11962
</p></dd>
 
11963
<dt> <b>Default:</b> &nbsp;&nbsp;<code>0</code></dt>
 
11964
<dt> <b>Access:</b> &nbsp;&nbsp;read/sometimes write</dt>
 
11965
<dd><p>While it is common to set the state attribute on object creation, it is
 
11966
preferable to change the object state later on by messages.
 
11967
</p></dd>
 
11968
<dt> <b>Support:</b> &nbsp;&nbsp;by all objects</dt>
 
11969
</dl>
 
11970
 
 
11971
<hr size="6">
 
11972
<a name="target"></a>
 
11973
<table cellpadding="1" cellspacing="1" border="0">
 
11974
<tr><td valign="middle" align="left">[<a href="#state" title="Previous section in reading order"> &lt; </a>]</td>
 
11975
<td valign="middle" align="left">[<a href="#action" title="Next section in reading order"> &gt; </a>]</td>
 
11976
<td valign="middle" align="left"> &nbsp; </td>
 
11977
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
11978
<td valign="middle" align="left">[<a href="#Common-Attributes" title="Up section"> Up </a>]</td>
 
11979
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
11980
<td valign="middle" align="left"> &nbsp; </td>
 
11981
<td valign="middle" align="left"> &nbsp; </td>
 
11982
<td valign="middle" align="left"> &nbsp; </td>
 
11983
<td valign="middle" align="left"> &nbsp; </td>
 
11984
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
11985
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
11986
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
11987
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
11988
</tr></table>
 
11989
<a name="target-1"></a>
 
11990
<h3 class="subsection">6.1.3 target</h3>
 
11991
 
 
11992
<p>All active objects react on being triggered by performing an action on their
 
11993
targets. This attribute is part of the <a href="#Target-_002d-Action">Target - Action</a> paradigm that
 
11994
guarantees plugability of objects. You can either set a general &lsquo;<samp>target</samp>&rsquo;
 
11995
attribute for an object, or you can set <a href="#state">state</a> dependent attributes
 
11996
&lsquo;<samp>target_0</samp>&rsquo;, &lsquo;<samp>target_1</samp>&rsquo;,... (see section <a href="#Object-State">Object State</a>). They all have the
 
11997
same syntax:
 
11998
</p>
 
11999
<dl compact="compact">
 
12000
<dt> <b>Type:</b> &nbsp;&nbsp;string, object, group, tokens &nbsp;&nbsp;See section <a href="#Object-Description">Object Description</a></dt>
 
12001
<dd><p>Single targets may be declared by their object name or their reference. Multiple
 
12002
targets can be declared by usage of groups and tokens.
 
12003
</p></dd>
 
12004
<dt> <b>Values:</b> &nbsp;&nbsp;See section <a href="#Object-Attributes">Object Attributes</a></dt>
 
12005
<dd><table><tr><td>&nbsp;</td><td><pre class="example">target = &quot;myDoor&quot;
 
12006
target = myObject
 
12007
target = {&quot;myDoor&quot;, myObject}
 
12008
target = {grp(obj1, obj2), &quot;myDoor&quot;, myObject}
 
12009
</pre></td></tr></table>
 
12010
 
 
12011
</dd>
 
12012
<dt> <b>Default:</b> &nbsp;&nbsp;<code>nil</code></dt>
 
12013
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
12014
<dt> <b>Support:</b> &nbsp;&nbsp;by all objects</dt>
 
12015
</dl>
 
12016
 
 
12017
<hr size="6">
 
12018
<a name="action"></a>
 
12019
<table cellpadding="1" cellspacing="1" border="0">
 
12020
<tr><td valign="middle" align="left">[<a href="#target" title="Previous section in reading order"> &lt; </a>]</td>
 
12021
<td valign="middle" align="left">[<a href="#nopaction" title="Next section in reading order"> &gt; </a>]</td>
 
12022
<td valign="middle" align="left"> &nbsp; </td>
 
12023
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12024
<td valign="middle" align="left">[<a href="#Common-Attributes" title="Up section"> Up </a>]</td>
 
12025
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12026
<td valign="middle" align="left"> &nbsp; </td>
 
12027
<td valign="middle" align="left"> &nbsp; </td>
 
12028
<td valign="middle" align="left"> &nbsp; </td>
 
12029
<td valign="middle" align="left"> &nbsp; </td>
 
12030
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12031
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12032
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12033
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12034
</tr></table>
 
12035
<a name="action-1"></a>
 
12036
<h3 class="subsection">6.1.4 action</h3>
 
12037
 
 
12038
<p>All active objects react on being triggered by performing an action on their
 
12039
targets. This attribute is part of the <a href="#Target-_002d-Action">Target - Action</a> paradigm that
 
12040
guarantees plugability of objects. You can either set a general &lsquo;<samp>action</samp>&rsquo;
 
12041
attribute for an object, or you can set <a href="#state">state</a> dependent attributes
 
12042
&lsquo;<samp>action_0</samp>&rsquo;, &lsquo;<samp>action_1</samp>&rsquo;,... (see section <a href="#Object-State">Object State</a>). They all have the
 
12043
same syntax:
 
12044
</p>
 
12045
<dl compact="compact">
 
12046
<dt> <b>Type:</b> &nbsp;&nbsp;string, tokens of strings &nbsp;&nbsp;See section <a href="#Target-_002d-Action">Target - Action</a></dt>
 
12047
<dd><p>A single action may be declared by its message string. Multiple actions that
 
12048
match multiple targets can be declared by tokens of strings.
 
12049
</p></dd>
 
12050
<dt> <b>Values:</b> &nbsp;&nbsp;See section <a href="#Object-Attributes">Object Attributes</a></dt>
 
12051
<dd><table><tr><td>&nbsp;</td><td><pre class="example">action = &quot;open&quot;
 
12052
action = {&quot;open&quot;, &quot;turn&quot;, &quot;toggle&quot;}
 
12053
</pre></td></tr></table>
 
12054
 
 
12055
</dd>
 
12056
<dt> <b>Default:</b> &nbsp;&nbsp;<code>nil</code></dt>
 
12057
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
12058
<dt> <b>Support:</b> &nbsp;&nbsp;by all objects</dt>
 
12059
</dl>
 
12060
 
 
12061
<hr size="6">
 
12062
<a name="nopaction"></a>
 
12063
<table cellpadding="1" cellspacing="1" border="0">
 
12064
<tr><td valign="middle" align="left">[<a href="#action" title="Previous section in reading order"> &lt; </a>]</td>
 
12065
<td valign="middle" align="left">[<a href="#safeaction" title="Next section in reading order"> &gt; </a>]</td>
 
12066
<td valign="middle" align="left"> &nbsp; </td>
 
12067
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12068
<td valign="middle" align="left">[<a href="#Common-Attributes" title="Up section"> Up </a>]</td>
 
12069
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12070
<td valign="middle" align="left"> &nbsp; </td>
 
12071
<td valign="middle" align="left"> &nbsp; </td>
 
12072
<td valign="middle" align="left"> &nbsp; </td>
 
12073
<td valign="middle" align="left"> &nbsp; </td>
 
12074
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12075
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12076
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12077
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12078
</tr></table>
 
12079
<a name="nopaction-1"></a>
 
12080
<h3 class="subsection">6.1.5 nopaction</h3>
 
12081
 
 
12082
<p>A very special addition to the <a href="#Target-_002d-Action">Target - Action</a> paradigm that allows
 
12083
in case of state specific actions to deny the sending of default messages
 
12084
(see section <a href="#Object-State">Object State</a>).
 
12085
</p>
 
12086
<dl compact="compact">
 
12087
<dt> <b>Type:</b> &nbsp;&nbsp;bool</dt>
 
12088
<dt> <b>Values:</b> &nbsp;&nbsp;<code>true</code>, <code>false</code></dt>
 
12089
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
12090
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
12091
<dt> <b>Support:</b> &nbsp;&nbsp;by all objects</dt>
 
12092
</dl>
 
12093
 
 
12094
<hr size="6">
 
12095
<a name="safeaction"></a>
 
12096
<table cellpadding="1" cellspacing="1" border="0">
 
12097
<tr><td valign="middle" align="left">[<a href="#nopaction" title="Previous section in reading order"> &lt; </a>]</td>
 
12098
<td valign="middle" align="left">[<a href="#inverse" title="Next section in reading order"> &gt; </a>]</td>
 
12099
<td valign="middle" align="left"> &nbsp; </td>
 
12100
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12101
<td valign="middle" align="left">[<a href="#Common-Attributes" title="Up section"> Up </a>]</td>
 
12102
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12103
<td valign="middle" align="left"> &nbsp; </td>
 
12104
<td valign="middle" align="left"> &nbsp; </td>
 
12105
<td valign="middle" align="left"> &nbsp; </td>
 
12106
<td valign="middle" align="left"> &nbsp; </td>
 
12107
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12108
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12109
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12110
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12111
</tr></table>
 
12112
<a name="safeaction-1"></a>
 
12113
<h3 class="subsection">6.1.6 safeaction</h3>
 
12114
 
 
12115
<p>A very special addition to the <a href="#Target-_002d-Action">Target - Action</a> paradigm that allows
 
12116
to kill the sender within the execution of the action code.
 
12117
</p>
 
12118
<dl compact="compact">
 
12119
<dt> <b>Type:</b> &nbsp;&nbsp;bool</dt>
 
12120
<dt> <b>Values:</b> &nbsp;&nbsp;<code>true</code>, <code>false</code></dt>
 
12121
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
12122
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
12123
<dt> <b>Support:</b> &nbsp;&nbsp;by all objects</dt>
 
12124
</dl>
 
12125
 
 
12126
<hr size="6">
 
12127
<a name="inverse"></a>
 
12128
<table cellpadding="1" cellspacing="1" border="0">
 
12129
<tr><td valign="middle" align="left">[<a href="#safeaction" title="Previous section in reading order"> &lt; </a>]</td>
 
12130
<td valign="middle" align="left">[<a href="#destination" title="Next section in reading order"> &gt; </a>]</td>
 
12131
<td valign="middle" align="left"> &nbsp; </td>
 
12132
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12133
<td valign="middle" align="left">[<a href="#Common-Attributes" title="Up section"> Up </a>]</td>
 
12134
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12135
<td valign="middle" align="left"> &nbsp; </td>
 
12136
<td valign="middle" align="left"> &nbsp; </td>
 
12137
<td valign="middle" align="left"> &nbsp; </td>
 
12138
<td valign="middle" align="left"> &nbsp; </td>
 
12139
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12140
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12141
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12142
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12143
</tr></table>
 
12144
<a name="inverse-1"></a>
 
12145
<h3 class="subsection">6.1.7 inverse</h3>
 
12146
 
 
12147
<p>An attribute that requests an inversion of the action value. It is supported by
 
12148
all objects with boolean action values.
 
12149
</p>
 
12150
<p>Note that this attribute is not listed in the individual object description
 
12151
if the object has boolean action values.
 
12152
</p>
 
12153
<dl compact="compact">
 
12154
<dt> <b>Type:</b> &nbsp;&nbsp;bool</dt>
 
12155
<dt> <b>Values:</b> &nbsp;&nbsp;<code>true</code>, <code>false</code></dt>
 
12156
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
12157
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
12158
<dt> <b>Support:</b> &nbsp;&nbsp;by most objects</dt>
 
12159
<dd><p>All objects with boolean action values will support this attribute. Additionally
 
12160
some objects with other invertible action value types like orientations will
 
12161
support the inversion of their attributes as stated in the individual object
 
12162
descriptions.
 
12163
</p></dd>
 
12164
</dl>
 
12165
 
 
12166
<hr size="6">
 
12167
<a name="destination"></a>
 
12168
<table cellpadding="1" cellspacing="1" border="0">
 
12169
<tr><td valign="middle" align="left">[<a href="#inverse" title="Previous section in reading order"> &lt; </a>]</td>
 
12170
<td valign="middle" align="left">[<a href="#friction" title="Next section in reading order"> &gt; </a>]</td>
 
12171
<td valign="middle" align="left"> &nbsp; </td>
 
12172
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12173
<td valign="middle" align="left">[<a href="#Common-Attributes" title="Up section"> Up </a>]</td>
 
12174
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12175
<td valign="middle" align="left"> &nbsp; </td>
 
12176
<td valign="middle" align="left"> &nbsp; </td>
 
12177
<td valign="middle" align="left"> &nbsp; </td>
 
12178
<td valign="middle" align="left"> &nbsp; </td>
 
12179
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12180
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12181
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12182
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12183
</tr></table>
 
12184
<a name="destination-1"></a>
 
12185
<h3 class="subsection">6.1.8 destination</h3>
 
12186
 
 
12187
<p>An attribute that describes one or several destinations. It is used by objects
 
12188
like <a href="#it_005fvortex">it_vortex</a> and <a href="#it_005fwormhole">it_wormhole</a> to describe their teleporting
 
12189
destination and by <a href="#ac_005fhorse">ac_horse</a> to describe its traveling path.
 
12190
</p>
 
12191
<p>Note that this attribute is only supported if it is listed in the individual
 
12192
description.
 
12193
</p>
 
12194
<dl compact="compact">
 
12195
<dt> <b>Type:</b> &nbsp;&nbsp;tokens or a single position</dt>
 
12196
<dd><p>Just a single position for a first destination is allowed. Use tokens to
 
12197
define multiple destination.
 
12198
</p></dd>
 
12199
<dt> <b>Values:</b> &nbsp;&nbsp;See section <a href="#Object-Attributes">Object Attributes</a></dt>
 
12200
<dd><table><tr><td>&nbsp;</td><td><pre class="example">destination = po(3.0, 4.7)
 
12201
destination = &quot;myFloor&quot;
 
12202
destination = myObject
 
12203
destination = {&quot;vortex2&quot;,&quot;vortex3&quot;,&quot;vortex4&quot;}
 
12204
po[&quot;dest1&quot;] = po(3,4)
 
12205
po[&quot;dest2&quot;] = po(7,8)
 
12206
destination = {&quot;dest1&quot;,&quot;dest2&quot;,&quot;myFloor&quot;}
 
12207
</pre></td></tr></table>
 
12208
<p>Note that objects like &lsquo;<samp>it_wormhole</samp>&rsquo; that have just a single destination
 
12209
do take the first token object. Note that in contrast to <a href="#target">target</a> tokens a
 
12210
destination tokens argument can take named positions, too. Referencing floors
 
12211
that may be destructed by bombs, cracks, floor building stones, etc. are save
 
12212
destinations, too.
 
12213
</p></dd>
 
12214
<dt> <b>Default:</b> &nbsp;&nbsp;<code>nil</code></dt>
 
12215
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
12216
<dt> <b>Support:</b> &nbsp;&nbsp;by teleporting objects</dt>
 
12217
</dl>
 
12218
 
 
12219
<hr size="6">
 
12220
<a name="friction"></a>
 
12221
<table cellpadding="1" cellspacing="1" border="0">
 
12222
<tr><td valign="middle" align="left">[<a href="#destination" title="Previous section in reading order"> &lt; </a>]</td>
 
12223
<td valign="middle" align="left">[<a href="#adhesion" title="Next section in reading order"> &gt; </a>]</td>
 
12224
<td valign="middle" align="left"> &nbsp; </td>
 
12225
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12226
<td valign="middle" align="left">[<a href="#Common-Attributes" title="Up section"> Up </a>]</td>
 
12227
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12228
<td valign="middle" align="left"> &nbsp; </td>
 
12229
<td valign="middle" align="left"> &nbsp; </td>
 
12230
<td valign="middle" align="left"> &nbsp; </td>
 
12231
<td valign="middle" align="left"> &nbsp; </td>
 
12232
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12233
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12234
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12235
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12236
</tr></table>
 
12237
<a name="friction-1"></a>
 
12238
<h3 class="subsection">6.1.9 friction</h3>
 
12239
 
 
12240
<p>An attribute that describes the decelerating friction force on actors that are
 
12241
on the floor. The friction force increases with the speed of the actor and
 
12242
is decelerating for positive friction values. But friction can be set to
 
12243
negative values as well what generates an accelerating force that is very
 
12244
difficult to control for the player.
 
12245
</p>
 
12246
<p>Besides all floors some floor covering items like <a href="#it_005fstrip">it_strip</a>,
 
12247
<a href="#it_005fmeditation">it_meditation</a> may provide friction values as well to deviate from the
 
12248
floor friction.
 
12249
</p>
 
12250
<dl compact="compact">
 
12251
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
12252
<dt> <b>Values:</b> &nbsp;&nbsp;any floating point number</dt>
 
12253
<dt> <b>Default:</b> &nbsp;&nbsp;<code>nil</code></dt>
 
12254
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
12255
<dt> <b>Support:</b> &nbsp;&nbsp;by all floor, and floor covering item objects</dt>
 
12256
</dl>
 
12257
 
 
12258
<hr size="6">
 
12259
<a name="adhesion"></a>
 
12260
<table cellpadding="1" cellspacing="1" border="0">
 
12261
<tr><td valign="middle" align="left">[<a href="#friction" title="Previous section in reading order"> &lt; </a>]</td>
 
12262
<td valign="middle" align="left">[<a href="#checkerboard" title="Next section in reading order"> &gt; </a>]</td>
 
12263
<td valign="middle" align="left"> &nbsp; </td>
 
12264
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12265
<td valign="middle" align="left">[<a href="#Common-Attributes" title="Up section"> Up </a>]</td>
 
12266
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12267
<td valign="middle" align="left"> &nbsp; </td>
 
12268
<td valign="middle" align="left"> &nbsp; </td>
 
12269
<td valign="middle" align="left"> &nbsp; </td>
 
12270
<td valign="middle" align="left"> &nbsp; </td>
 
12271
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12272
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12273
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12274
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12275
</tr></table>
 
12276
<a name="adhesion-1"></a>
 
12277
<h3 class="subsection">6.1.10 adhesion</h3>
 
12278
 
 
12279
<p>An attribute that describes the adhesion that allows an actor to accelerate on
 
12280
a floor. Greater adhesion leads to more accelerating force at the same given
 
12281
mouse speed. Adhesion can be set to negative values as well what generates an
 
12282
accelerating force in the inverse direction of the mouse movement which is a
 
12283
little bit difficult to control for the player.
 
12284
</p>
 
12285
<p>Besides all floors some floor covering items like <a href="#it_005fstrip">it_strip</a>,
 
12286
<a href="#it_005fmeditation">it_meditation</a> may provide adhesion values as well to deviate from
 
12287
the floor adhesion.
 
12288
</p>
 
12289
<dl compact="compact">
 
12290
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
12291
<dt> <b>Values:</b> &nbsp;&nbsp;any floating point number</dt>
 
12292
<dt> <b>Default:</b> &nbsp;&nbsp;<code>nil</code></dt>
 
12293
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
12294
<dt> <b>Support:</b> &nbsp;&nbsp;by all floors, and floor covering item objects</dt>
 
12295
</dl>
 
12296
 
 
12297
<hr size="6">
 
12298
<a name="checkerboard"></a>
 
12299
<table cellpadding="1" cellspacing="1" border="0">
 
12300
<tr><td valign="middle" align="left">[<a href="#adhesion" title="Previous section in reading order"> &lt; </a>]</td>
 
12301
<td valign="middle" align="left">[<a href="#rubbers" title="Next section in reading order"> &gt; </a>]</td>
 
12302
<td valign="middle" align="left"> &nbsp; </td>
 
12303
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12304
<td valign="middle" align="left">[<a href="#Common-Attributes" title="Up section"> Up </a>]</td>
 
12305
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12306
<td valign="middle" align="left"> &nbsp; </td>
 
12307
<td valign="middle" align="left"> &nbsp; </td>
 
12308
<td valign="middle" align="left"> &nbsp; </td>
 
12309
<td valign="middle" align="left"> &nbsp; </td>
 
12310
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12311
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12312
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12313
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12314
</tr></table>
 
12315
<a name="checkerboard-1"></a>
 
12316
<h3 class="subsection">6.1.11 checkerboard</h3>
 
12317
 
 
12318
<p>An attribute that defines if a given object declaration should only be applied
 
12319
on &rsquo;even&rsquo; or &rsquo;uneven&rsquo; grid positions. Setting this attribute to &lsquo;<samp>0</samp>&rsquo; assures
 
12320
that this object will only be set on grid positions with an even sum of
 
12321
<code>x + y</code> grid coordinates, where as a value of &lsquo;<samp>1</samp>&rsquo; assures that the
 
12322
sum must be uneven. This way you can easily provide two different object
 
12323
declarations for a tile to generate an arbitrarily shaped map of checkerboard
 
12324
floors, items or stones.
 
12325
</p>
 
12326
<dl compact="compact">
 
12327
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
12328
<dt> <b>Values:</b> &nbsp;&nbsp;<code>0</code>, <code>1</code></dt>
 
12329
<dt> <b>Default:</b> &nbsp;&nbsp;<code>nil</code></dt>
 
12330
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
12331
<dt> <b>Support:</b> &nbsp;&nbsp;by all floor, stone and item objects</dt>
 
12332
<dd><table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;c&quot;] = ti({&quot;fl_sahara&quot;, checkerboard=0}) .. {&quot;fl_tigris&quot;, checkerboard=1}
 
12333
</pre></td></tr></table>
 
12334
</dd>
 
12335
</dl>
 
12336
 
 
12337
<hr size="6">
 
12338
<a name="rubbers"></a>
 
12339
<table cellpadding="1" cellspacing="1" border="0">
 
12340
<tr><td valign="middle" align="left">[<a href="#checkerboard" title="Previous section in reading order"> &lt; </a>]</td>
 
12341
<td valign="middle" align="left">[<a href="#wires" title="Next section in reading order"> &gt; </a>]</td>
 
12342
<td valign="middle" align="left"> &nbsp; </td>
 
12343
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12344
<td valign="middle" align="left">[<a href="#Common-Attributes" title="Up section"> Up </a>]</td>
 
12345
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12346
<td valign="middle" align="left"> &nbsp; </td>
 
12347
<td valign="middle" align="left"> &nbsp; </td>
 
12348
<td valign="middle" align="left"> &nbsp; </td>
 
12349
<td valign="middle" align="left"> &nbsp; </td>
 
12350
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12351
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12352
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12353
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12354
</tr></table>
 
12355
<a name="rubbers-1"></a>
 
12356
<h3 class="subsection">6.1.12 rubbers</h3>
 
12357
 
 
12358
<p>An attribute that gives you access to the <a href="#ot_005frubberband">ot_rubberband</a>s that are
 
12359
currently connected to this object.
 
12360
</p>
 
12361
<p>Note that this attribute is read only. You can use the rubberband references
 
12362
to kill or reconnect single rubberbands. But to add new rubberbands you need
 
12363
to use the world&rsquo;s &lsquo;<samp>add</samp>&rsquo; method.
 
12364
</p>
 
12365
<dl compact="compact">
 
12366
<dt> <b>Type:</b> &nbsp;&nbsp;group of <a href="#ot_005frubberband">ot_rubberband</a> objects</dt>
 
12367
<dt> <b>Default:</b> &nbsp;&nbsp;<code>nil</code></dt>
 
12368
<dt> <b>Access:</b> &nbsp;&nbsp;read only</dt>
 
12369
<dt> <b>Support:</b> &nbsp;&nbsp;by actor and stone objects</dt>
 
12370
</dl>
 
12371
 
 
12372
<hr size="6">
 
12373
<a name="wires"></a>
 
12374
<table cellpadding="1" cellspacing="1" border="0">
 
12375
<tr><td valign="middle" align="left">[<a href="#rubbers" title="Previous section in reading order"> &lt; </a>]</td>
 
12376
<td valign="middle" align="left">[<a href="#fellows" title="Next section in reading order"> &gt; </a>]</td>
 
12377
<td valign="middle" align="left"> &nbsp; </td>
 
12378
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12379
<td valign="middle" align="left">[<a href="#Common-Attributes" title="Up section"> Up </a>]</td>
 
12380
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12381
<td valign="middle" align="left"> &nbsp; </td>
 
12382
<td valign="middle" align="left"> &nbsp; </td>
 
12383
<td valign="middle" align="left"> &nbsp; </td>
 
12384
<td valign="middle" align="left"> &nbsp; </td>
 
12385
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12386
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12387
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12388
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12389
</tr></table>
 
12390
<a name="wires-1"></a>
 
12391
<h3 class="subsection">6.1.13 wires</h3>
 
12392
 
 
12393
<p>An attribute that gives you access to the <a href="#ot_005fwire">ot_wire</a>s that are
 
12394
currently connected to this stone object.
 
12395
</p>
 
12396
<p>Note that this attribute is read only. You can use the wire references
 
12397
to kill or reconnect single wires. But to add new wires you need
 
12398
to use the world&rsquo;s &lsquo;<samp>add</samp>&rsquo; method.
 
12399
</p>
 
12400
<dl compact="compact">
 
12401
<dt> <b>Type:</b> &nbsp;&nbsp;group of <a href="#ot_005fwire">ot_wire</a> objects</dt>
 
12402
<dt> <b>Default:</b> &nbsp;&nbsp;<code>nil</code></dt>
 
12403
<dt> <b>Access:</b> &nbsp;&nbsp;read only</dt>
 
12404
<dt> <b>Support:</b> &nbsp;&nbsp;by all stone objects</dt>
 
12405
</dl>
 
12406
 
 
12407
<hr size="6">
 
12408
<a name="fellows"></a>
 
12409
<table cellpadding="1" cellspacing="1" border="0">
 
12410
<tr><td valign="middle" align="left">[<a href="#wires" title="Previous section in reading order"> &lt; </a>]</td>
 
12411
<td valign="middle" align="left">[<a href="#Common-Messages" title="Next section in reading order"> &gt; </a>]</td>
 
12412
<td valign="middle" align="left"> &nbsp; </td>
 
12413
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12414
<td valign="middle" align="left">[<a href="#Common-Attributes" title="Up section"> Up </a>]</td>
 
12415
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12416
<td valign="middle" align="left"> &nbsp; </td>
 
12417
<td valign="middle" align="left"> &nbsp; </td>
 
12418
<td valign="middle" align="left"> &nbsp; </td>
 
12419
<td valign="middle" align="left"> &nbsp; </td>
 
12420
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12421
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12422
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12423
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12424
</tr></table>
 
12425
<a name="fellows-1"></a>
 
12426
<h3 class="subsection">6.1.14 fellows</h3>
 
12427
 
 
12428
<p>An attribute that gives you access to the group of all objects that are currently
 
12429
connected either by an <a href="#ot_005frubberband">ot_rubberband</a> or an <a href="#ot_005fwire">ot_wire</a>.
 
12430
</p>
 
12431
<p>Note that this attribute is read only. It is just for evaluation of the current
 
12432
level state. But to add new rubberbands or wires you need to use the
 
12433
world&rsquo;s &lsquo;<samp>add</samp>&rsquo; method.
 
12434
</p>
 
12435
<dl compact="compact">
 
12436
<dt> <b>Type:</b> &nbsp;&nbsp;group of objects</dt>
 
12437
<dt> <b>Default:</b> &nbsp;&nbsp;<code>nil</code></dt>
 
12438
<dt> <b>Access:</b> &nbsp;&nbsp;read only</dt>
 
12439
<dt> <b>Support:</b> &nbsp;&nbsp;by actor and stone objects</dt>
 
12440
</dl>
 
12441
 
 
12442
<hr size="6">
 
12443
<a name="Common-Messages"></a>
 
12444
<table cellpadding="1" cellspacing="1" border="0">
 
12445
<tr><td valign="middle" align="left">[<a href="#fellows" title="Previous section in reading order"> &lt; </a>]</td>
 
12446
<td valign="middle" align="left">[<a href="#toggle" title="Next section in reading order"> &gt; </a>]</td>
 
12447
<td valign="middle" align="left"> &nbsp; </td>
 
12448
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12449
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Up section"> Up </a>]</td>
 
12450
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12451
<td valign="middle" align="left"> &nbsp; </td>
 
12452
<td valign="middle" align="left"> &nbsp; </td>
 
12453
<td valign="middle" align="left"> &nbsp; </td>
 
12454
<td valign="middle" align="left"> &nbsp; </td>
 
12455
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12456
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12457
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12458
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12459
</tr></table>
 
12460
<a name="Common-Messages-1"></a>
 
12461
<h2 class="section">6.2 Common Messages</h2>
 
12462
 
 
12463
<table class="menu" border="0" cellspacing="0">
 
12464
<tr><td align="left" valign="top"><a href="#toggle">6.2.1 toggle</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12465
</td></tr>
 
12466
<tr><td align="left" valign="top"><a href="#nop">6.2.2 nop</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12467
</td></tr>
 
12468
<tr><td align="left" valign="top"><a href="#signal">6.2.3 signal</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12469
</td></tr>
 
12470
<tr><td align="left" valign="top"><a href="#on">6.2.4 on</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12471
</td></tr>
 
12472
<tr><td align="left" valign="top"><a href="#off">6.2.5 off</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12473
</td></tr>
 
12474
<tr><td align="left" valign="top"><a href="#open">6.2.6 open</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12475
</td></tr>
 
12476
<tr><td align="left" valign="top"><a href="#close">6.2.7 close</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12477
</td></tr>
 
12478
<tr><td align="left" valign="top"><a href="#ignite">6.2.8 ignite</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12479
</td></tr>
 
12480
<tr><td align="left" valign="top"><a href="#heat">6.2.9 heat</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12481
</td></tr>
 
12482
<tr><td align="left" valign="top"><a href="#setfire">6.2.10 setfire</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12483
</td></tr>
 
12484
<tr><td align="left" valign="top"><a href="#kill">6.2.11 kill</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12485
</td></tr>
 
12486
<tr><td align="left" valign="top"><a href="#sound">6.2.12 sound</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12487
</td></tr>
 
12488
<tr><td align="left" valign="top"><a href="#disconnect">6.2.13 disconnect</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12489
</td></tr>
 
12490
</table>
 
12491
 
 
12492
<hr size="6">
 
12493
<a name="toggle"></a>
 
12494
<table cellpadding="1" cellspacing="1" border="0">
 
12495
<tr><td valign="middle" align="left">[<a href="#Common-Messages" title="Previous section in reading order"> &lt; </a>]</td>
 
12496
<td valign="middle" align="left">[<a href="#nop" title="Next section in reading order"> &gt; </a>]</td>
 
12497
<td valign="middle" align="left"> &nbsp; </td>
 
12498
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12499
<td valign="middle" align="left">[<a href="#Common-Messages" title="Up section"> Up </a>]</td>
 
12500
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12501
<td valign="middle" align="left"> &nbsp; </td>
 
12502
<td valign="middle" align="left"> &nbsp; </td>
 
12503
<td valign="middle" align="left"> &nbsp; </td>
 
12504
<td valign="middle" align="left"> &nbsp; </td>
 
12505
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12506
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12507
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12508
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12509
</tr></table>
 
12510
<a name="toggle-1"></a>
 
12511
<h3 class="subsection">6.2.1 toggle</h3>
 
12512
 
 
12513
<p>This is the default message that is always taken if no other message is provided.
 
12514
It toggles the <a href="#Object-State">Object State</a> quite independent of the very nature of the
 
12515
state. Two-stated objects like switches will toggle their state form &lsquo;<samp>ON</samp>&rsquo;
 
12516
to &lsquo;<samp>OFF</samp>&rsquo; or from &lsquo;<samp>OFF</samp>&rsquo; to &lsquo;<samp>ON</samp>&rsquo;. Door like objects will toggle
 
12517
their state from &lsquo;<samp>OPEN</samp>&rsquo; to &lsquo;<samp>CLOSED</samp>&rsquo; or from &lsquo;<samp>CLOSED</samp>&rsquo; to
 
12518
&lsquo;<samp>OPEN</samp>&rsquo;. Other objects like <a href="#st_005ffourswitch">st_fourswitch</a> will turn into the next
 
12519
orientation. Generally the object will toggle to its next state.
 
12520
</p>
 
12521
<dl compact="compact">
 
12522
<dt> <b>Value:</b> &nbsp;&nbsp;-</dt>
 
12523
<dt> <b>Returns:</b> &nbsp;&nbsp;-</dt>
 
12524
<dt> <b>Support:</b> &nbsp;&nbsp;by nearly all objects which use the &lsquo;<samp>state</samp>&rsquo; attribute</dt>
 
12525
</dl>
 
12526
 
 
12527
<hr size="6">
 
12528
<a name="nop"></a>
 
12529
<table cellpadding="1" cellspacing="1" border="0">
 
12530
<tr><td valign="middle" align="left">[<a href="#toggle" title="Previous section in reading order"> &lt; </a>]</td>
 
12531
<td valign="middle" align="left">[<a href="#signal" title="Next section in reading order"> &gt; </a>]</td>
 
12532
<td valign="middle" align="left"> &nbsp; </td>
 
12533
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12534
<td valign="middle" align="left">[<a href="#Common-Messages" title="Up section"> Up </a>]</td>
 
12535
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12536
<td valign="middle" align="left"> &nbsp; </td>
 
12537
<td valign="middle" align="left"> &nbsp; </td>
 
12538
<td valign="middle" align="left"> &nbsp; </td>
 
12539
<td valign="middle" align="left"> &nbsp; </td>
 
12540
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12541
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12542
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12543
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12544
</tr></table>
 
12545
<a name="nop-1"></a>
 
12546
<h3 class="subsection">6.2.2 nop</h3>
 
12547
 
 
12548
<p>A dummy message that just does nothing: no operation. You may need it in cases
 
12549
of state dependent actions to block an otherwise sent default &lsquo;<samp>toggle</samp>&rsquo;
 
12550
message (see section <a href="#Object-State">Object State</a>).
 
12551
</p>
 
12552
<dl compact="compact">
 
12553
<dt> <b>Value:</b> &nbsp;&nbsp;-</dt>
 
12554
<dt> <b>Returns:</b> &nbsp;&nbsp;-</dt>
 
12555
<dt> <b>Support:</b> &nbsp;&nbsp;by all objects</dt>
 
12556
</dl>
 
12557
 
 
12558
<hr size="6">
 
12559
<a name="signal"></a>
 
12560
<table cellpadding="1" cellspacing="1" border="0">
 
12561
<tr><td valign="middle" align="left">[<a href="#nop" title="Previous section in reading order"> &lt; </a>]</td>
 
12562
<td valign="middle" align="left">[<a href="#on" title="Next section in reading order"> &gt; </a>]</td>
 
12563
<td valign="middle" align="left"> &nbsp; </td>
 
12564
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12565
<td valign="middle" align="left">[<a href="#Common-Messages" title="Up section"> Up </a>]</td>
 
12566
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12567
<td valign="middle" align="left"> &nbsp; </td>
 
12568
<td valign="middle" align="left"> &nbsp; </td>
 
12569
<td valign="middle" align="left"> &nbsp; </td>
 
12570
<td valign="middle" align="left"> &nbsp; </td>
 
12571
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12572
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12573
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12574
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12575
</tr></table>
 
12576
<a name="signal-1"></a>
 
12577
<h3 class="subsection">6.2.3 signal</h3>
 
12578
 
 
12579
<p>A signal message tries to set the object to the state 0 (&lsquo;<samp>OFF</samp>&rsquo;,
 
12580
&lsquo;<samp>CLOSED</samp>&rsquo;) or state 1 (&lsquo;<samp>ON</samp>&rsquo;, &lsquo;<samp>OPEN</samp>&rsquo;) according to its value. This
 
12581
message allows you to keep the states of an action source and a receiving object
 
12582
in sync. Note that values like &lsquo;<samp>true</samp>&rsquo;, &lsquo;<samp>false</samp>&rsquo; and orientation values
 
12583
like &lsquo;<samp>WEST</samp>&rsquo; to &lsquo;<samp>NORTH</samp>&rsquo; are converted to 0 and 1. This allows you to
 
12584
use &lsquo;<samp>signal</samp>&rsquo; as action message on most objects.
 
12585
</p>
 
12586
<dl compact="compact">
 
12587
<dt> <b>Value:</b> &nbsp;&nbsp;<code>0</code>, <code>1</code></dt>
 
12588
<dt> <b>Returns:</b> &nbsp;&nbsp;-</dt>
 
12589
<dt> <b>Support:</b> &nbsp;&nbsp;by nearly all objects which use the &lsquo;<samp>state</samp>&rsquo; attribute</dt>
 
12590
</dl>
 
12591
 
 
12592
<hr size="6">
 
12593
<a name="on"></a>
 
12594
<table cellpadding="1" cellspacing="1" border="0">
 
12595
<tr><td valign="middle" align="left">[<a href="#signal" title="Previous section in reading order"> &lt; </a>]</td>
 
12596
<td valign="middle" align="left">[<a href="#off" title="Next section in reading order"> &gt; </a>]</td>
 
12597
<td valign="middle" align="left"> &nbsp; </td>
 
12598
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12599
<td valign="middle" align="left">[<a href="#Common-Messages" title="Up section"> Up </a>]</td>
 
12600
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12601
<td valign="middle" align="left"> &nbsp; </td>
 
12602
<td valign="middle" align="left"> &nbsp; </td>
 
12603
<td valign="middle" align="left"> &nbsp; </td>
 
12604
<td valign="middle" align="left"> &nbsp; </td>
 
12605
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12606
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12607
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12608
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12609
</tr></table>
 
12610
<a name="on-1"></a>
 
12611
<h3 class="subsection">6.2.4 on</h3>
 
12612
 
 
12613
<p>This message is just supported by objects that can be switched on and off. Just
 
12614
objects in state &lsquo;<samp>OFF</samp>&rsquo; will be switched on. An object in state &lsquo;<samp>ON</samp>&rsquo;
 
12615
remains unchanged in its state.
 
12616
</p>
 
12617
<dl compact="compact">
 
12618
<dt> <b>Value:</b> &nbsp;&nbsp;-</dt>
 
12619
<dt> <b>Returns:</b> &nbsp;&nbsp;-</dt>
 
12620
<dt> <b>Support:</b> &nbsp;&nbsp;by objects that can be switched on and off</dt>
 
12621
</dl>
 
12622
 
 
12623
<hr size="6">
 
12624
<a name="off"></a>
 
12625
<table cellpadding="1" cellspacing="1" border="0">
 
12626
<tr><td valign="middle" align="left">[<a href="#on" title="Previous section in reading order"> &lt; </a>]</td>
 
12627
<td valign="middle" align="left">[<a href="#open" title="Next section in reading order"> &gt; </a>]</td>
 
12628
<td valign="middle" align="left"> &nbsp; </td>
 
12629
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12630
<td valign="middle" align="left">[<a href="#Common-Messages" title="Up section"> Up </a>]</td>
 
12631
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12632
<td valign="middle" align="left"> &nbsp; </td>
 
12633
<td valign="middle" align="left"> &nbsp; </td>
 
12634
<td valign="middle" align="left"> &nbsp; </td>
 
12635
<td valign="middle" align="left"> &nbsp; </td>
 
12636
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12637
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12638
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12639
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12640
</tr></table>
 
12641
<a name="off-1"></a>
 
12642
<h3 class="subsection">6.2.5 off</h3>
 
12643
 
 
12644
<p>This message is just supported by objects that can be switched on and off. Just
 
12645
objects in state &lsquo;<samp>ON</samp>&rsquo; will be switched off. An object in state &lsquo;<samp>OFF</samp>&rsquo;
 
12646
remains unchanged in its state.
 
12647
</p>
 
12648
<dl compact="compact">
 
12649
<dt> <b>Value:</b> &nbsp;&nbsp;-</dt>
 
12650
<dt> <b>Returns:</b> &nbsp;&nbsp;-</dt>
 
12651
<dt> <b>Support:</b> &nbsp;&nbsp;by objects that can be switched on and off</dt>
 
12652
</dl>
 
12653
 
 
12654
<hr size="6">
 
12655
<a name="open"></a>
 
12656
<table cellpadding="1" cellspacing="1" border="0">
 
12657
<tr><td valign="middle" align="left">[<a href="#off" title="Previous section in reading order"> &lt; </a>]</td>
 
12658
<td valign="middle" align="left">[<a href="#close" title="Next section in reading order"> &gt; </a>]</td>
 
12659
<td valign="middle" align="left"> &nbsp; </td>
 
12660
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12661
<td valign="middle" align="left">[<a href="#Common-Messages" title="Up section"> Up </a>]</td>
 
12662
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12663
<td valign="middle" align="left"> &nbsp; </td>
 
12664
<td valign="middle" align="left"> &nbsp; </td>
 
12665
<td valign="middle" align="left"> &nbsp; </td>
 
12666
<td valign="middle" align="left"> &nbsp; </td>
 
12667
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12668
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12669
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12670
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12671
</tr></table>
 
12672
<a name="open-1"></a>
 
12673
<h3 class="subsection">6.2.6 open</h3>
 
12674
 
 
12675
<p>This message is just supported by door like objects that can be opened and closed.
 
12676
Just objects in state &lsquo;<samp>CLOSED</samp>&rsquo; will be opened. An object in state
 
12677
&lsquo;<samp>OPEN</samp>&rsquo; remains unchanged in its state.
 
12678
</p>
 
12679
<dl compact="compact">
 
12680
<dt> <b>Value:</b> &nbsp;&nbsp;-</dt>
 
12681
<dt> <b>Returns:</b> &nbsp;&nbsp;-</dt>
 
12682
<dt> <b>Support:</b> &nbsp;&nbsp;by door like objects that can be opened and closed</dt>
 
12683
</dl>
 
12684
 
 
12685
<hr size="6">
 
12686
<a name="close"></a>
 
12687
<table cellpadding="1" cellspacing="1" border="0">
 
12688
<tr><td valign="middle" align="left">[<a href="#open" title="Previous section in reading order"> &lt; </a>]</td>
 
12689
<td valign="middle" align="left">[<a href="#ignite" title="Next section in reading order"> &gt; </a>]</td>
 
12690
<td valign="middle" align="left"> &nbsp; </td>
 
12691
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12692
<td valign="middle" align="left">[<a href="#Common-Messages" title="Up section"> Up </a>]</td>
 
12693
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12694
<td valign="middle" align="left"> &nbsp; </td>
 
12695
<td valign="middle" align="left"> &nbsp; </td>
 
12696
<td valign="middle" align="left"> &nbsp; </td>
 
12697
<td valign="middle" align="left"> &nbsp; </td>
 
12698
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12699
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12700
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12701
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12702
</tr></table>
 
12703
<a name="close-1"></a>
 
12704
<h3 class="subsection">6.2.7 close</h3>
 
12705
 
 
12706
<p>This message is just supported by door like objects that can be opened and closed.
 
12707
Just objects in state &lsquo;<samp>OPEN</samp>&rsquo; will be closed. An object in state
 
12708
&lsquo;<samp>CLOSED</samp>&rsquo; remains unchanged in its state.
 
12709
</p>
 
12710
<dl compact="compact">
 
12711
<dt> <b>Value:</b> &nbsp;&nbsp;-</dt>
 
12712
<dt> <b>Returns:</b> &nbsp;&nbsp;-</dt>
 
12713
<dt> <b>Support:</b> &nbsp;&nbsp;by door like objects that can be opened and closed</dt>
 
12714
</dl>
 
12715
 
 
12716
<hr size="6">
 
12717
<a name="ignite"></a>
 
12718
<table cellpadding="1" cellspacing="1" border="0">
 
12719
<tr><td valign="middle" align="left">[<a href="#close" title="Previous section in reading order"> &lt; </a>]</td>
 
12720
<td valign="middle" align="left">[<a href="#heat" title="Next section in reading order"> &gt; </a>]</td>
 
12721
<td valign="middle" align="left"> &nbsp; </td>
 
12722
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12723
<td valign="middle" align="left">[<a href="#Common-Messages" title="Up section"> Up </a>]</td>
 
12724
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12725
<td valign="middle" align="left"> &nbsp; </td>
 
12726
<td valign="middle" align="left"> &nbsp; </td>
 
12727
<td valign="middle" align="left"> &nbsp; </td>
 
12728
<td valign="middle" align="left"> &nbsp; </td>
 
12729
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12730
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12731
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12732
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12733
</tr></table>
 
12734
<a name="ignite-1"></a>
 
12735
<h3 class="subsection">6.2.8 ignite</h3>
 
12736
 
 
12737
<p>Sets fire to a floor if it is burnable (see section <a href="#Fire-Spreading">Fire Spreading</a>) or start an
 
12738
explosion or shattering of items like <a href="#it_005fdynamite">it_dynamite</a>, <a href="#it_005fbomb">it_bomb</a> or
 
12739
stones like <a href="#st_005fice">st_ice</a>, <a href="#st_005fdispenser">st_dispenser</a> and many more.
 
12740
</p>
 
12741
<dl compact="compact">
 
12742
<dt> <b>Value:</b> &nbsp;&nbsp;-</dt>
 
12743
<dt> <b>Returns:</b> &nbsp;&nbsp;-</dt>
 
12744
<dt> <b>Support:</b> &nbsp;&nbsp;by all <a href="#Floor-Objects">Floor Objects</a> and explosive or shattering items and stones</dt>
 
12745
</dl>
 
12746
 
 
12747
<hr size="6">
 
12748
<a name="heat"></a>
 
12749
<table cellpadding="1" cellspacing="1" border="0">
 
12750
<tr><td valign="middle" align="left">[<a href="#ignite" title="Previous section in reading order"> &lt; </a>]</td>
 
12751
<td valign="middle" align="left">[<a href="#setfire" title="Next section in reading order"> &gt; </a>]</td>
 
12752
<td valign="middle" align="left"> &nbsp; </td>
 
12753
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12754
<td valign="middle" align="left">[<a href="#Common-Messages" title="Up section"> Up </a>]</td>
 
12755
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12756
<td valign="middle" align="left"> &nbsp; </td>
 
12757
<td valign="middle" align="left"> &nbsp; </td>
 
12758
<td valign="middle" align="left"> &nbsp; </td>
 
12759
<td valign="middle" align="left"> &nbsp; </td>
 
12760
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12761
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12762
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12763
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12764
</tr></table>
 
12765
<a name="heat-1"></a>
 
12766
<h3 class="subsection">6.2.9 heat</h3>
 
12767
 
 
12768
<p>Sets fire to a floor if it is burnable (see section <a href="#Fire-Spreading">Fire Spreading</a>) or causes a
 
12769
<a href="#Heat_002dTransformation">Heat-Transformation</a> on a floor or other objects like <a href="#st_005fice">st_ice</a> that
 
12770
starts melting. Some objects do react on a heat message like on an <a href="#ignite">ignite</a>
 
12771
message by explosions or shattering.
 
12772
</p>
 
12773
<dl compact="compact">
 
12774
<dt> <b>Value:</b> &nbsp;&nbsp;-</dt>
 
12775
<dt> <b>Returns:</b> &nbsp;&nbsp;-</dt>
 
12776
<dt> <b>Support:</b> &nbsp;&nbsp;by all <a href="#Floor-Objects">Floor Objects</a> and some other objects.</dt>
 
12777
</dl>
 
12778
 
 
12779
<hr size="6">
 
12780
<a name="setfire"></a>
 
12781
<table cellpadding="1" cellspacing="1" border="0">
 
12782
<tr><td valign="middle" align="left">[<a href="#heat" title="Previous section in reading order"> &lt; </a>]</td>
 
12783
<td valign="middle" align="left">[<a href="#kill" title="Next section in reading order"> &gt; </a>]</td>
 
12784
<td valign="middle" align="left"> &nbsp; </td>
 
12785
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12786
<td valign="middle" align="left">[<a href="#Common-Messages" title="Up section"> Up </a>]</td>
 
12787
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12788
<td valign="middle" align="left"> &nbsp; </td>
 
12789
<td valign="middle" align="left"> &nbsp; </td>
 
12790
<td valign="middle" align="left"> &nbsp; </td>
 
12791
<td valign="middle" align="left"> &nbsp; </td>
 
12792
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12793
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12794
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12795
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12796
</tr></table>
 
12797
<a name="setfire-1"></a>
 
12798
<h3 class="subsection">6.2.10 setfire</h3>
 
12799
 
 
12800
<p>Sets fire to a floor if it is burnable (see section <a href="#Fire-Spreading">Fire Spreading</a>).
 
12801
</p>
 
12802
<dl compact="compact">
 
12803
<dt> <b>Value:</b> &nbsp;&nbsp;-</dt>
 
12804
<dt> <b>Returns:</b> &nbsp;&nbsp;-</dt>
 
12805
<dt> <b>Support:</b> &nbsp;&nbsp;by all <a href="#Floor-Objects">Floor Objects</a></dt>
 
12806
</dl>
 
12807
 
 
12808
<hr size="6">
 
12809
<a name="kill"></a>
 
12810
<table cellpadding="1" cellspacing="1" border="0">
 
12811
<tr><td valign="middle" align="left">[<a href="#setfire" title="Previous section in reading order"> &lt; </a>]</td>
 
12812
<td valign="middle" align="left">[<a href="#sound" title="Next section in reading order"> &gt; </a>]</td>
 
12813
<td valign="middle" align="left"> &nbsp; </td>
 
12814
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12815
<td valign="middle" align="left">[<a href="#Common-Messages" title="Up section"> Up </a>]</td>
 
12816
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12817
<td valign="middle" align="left"> &nbsp; </td>
 
12818
<td valign="middle" align="left"> &nbsp; </td>
 
12819
<td valign="middle" align="left"> &nbsp; </td>
 
12820
<td valign="middle" align="left"> &nbsp; </td>
 
12821
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12822
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12823
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12824
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12825
</tr></table>
 
12826
<a name="kill-1"></a>
 
12827
<h3 class="subsection">6.2.11 kill</h3>
 
12828
 
 
12829
<p>This message causes the recipient to cease to exist. You are just allowed to
 
12830
kill objects that are directly part of the world. Objects owned by players,
 
12831
being content part of a bag or otherwise owned by another object will refuse
 
12832
this message on behalf of their owner.
 
12833
</p>
 
12834
<dl compact="compact">
 
12835
<dt> <b>Value:</b> &nbsp;&nbsp;-</dt>
 
12836
<dt> <b>Returns:</b> &nbsp;&nbsp;-</dt>
 
12837
<dt> <b>Support:</b> &nbsp;&nbsp;by all world owned objects</dt>
 
12838
</dl>
 
12839
 
 
12840
<hr size="6">
 
12841
<a name="sound"></a>
 
12842
<table cellpadding="1" cellspacing="1" border="0">
 
12843
<tr><td valign="middle" align="left">[<a href="#kill" title="Previous section in reading order"> &lt; </a>]</td>
 
12844
<td valign="middle" align="left">[<a href="#disconnect" title="Next section in reading order"> &gt; </a>]</td>
 
12845
<td valign="middle" align="left"> &nbsp; </td>
 
12846
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12847
<td valign="middle" align="left">[<a href="#Common-Messages" title="Up section"> Up </a>]</td>
 
12848
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12849
<td valign="middle" align="left"> &nbsp; </td>
 
12850
<td valign="middle" align="left"> &nbsp; </td>
 
12851
<td valign="middle" align="left"> &nbsp; </td>
 
12852
<td valign="middle" align="left"> &nbsp; </td>
 
12853
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12854
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12855
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12856
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12857
</tr></table>
 
12858
<a name="sound-1"></a>
 
12859
<h3 class="subsection">6.2.12 sound</h3>
 
12860
 
 
12861
<p>This message causes the recipient to play the sound given by the first
 
12862
string argument value. It is played at the position of the object. The
 
12863
volume can be defined by a second number argument and defaults to <code>1.0</code>.
 
12864
</p>
 
12865
<dl compact="compact">
 
12866
<dt> <b>Value:</b> &nbsp;&nbsp;string [, number]</dt>
 
12867
<dt> <b>Returns:</b> &nbsp;&nbsp;-</dt>
 
12868
<dt> <b>Support:</b> &nbsp;&nbsp;by all objects</dt>
 
12869
</dl>
 
12870
 
 
12871
<hr size="6">
 
12872
<a name="disconnect"></a>
 
12873
<table cellpadding="1" cellspacing="1" border="0">
 
12874
<tr><td valign="middle" align="left">[<a href="#sound" title="Previous section in reading order"> &lt; </a>]</td>
 
12875
<td valign="middle" align="left">[<a href="#Common-Constants" title="Next section in reading order"> &gt; </a>]</td>
 
12876
<td valign="middle" align="left"> &nbsp; </td>
 
12877
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12878
<td valign="middle" align="left">[<a href="#Common-Messages" title="Up section"> Up </a>]</td>
 
12879
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12880
<td valign="middle" align="left"> &nbsp; </td>
 
12881
<td valign="middle" align="left"> &nbsp; </td>
 
12882
<td valign="middle" align="left"> &nbsp; </td>
 
12883
<td valign="middle" align="left"> &nbsp; </td>
 
12884
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12885
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12886
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12887
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12888
</tr></table>
 
12889
<a name="disconnect-1"></a>
 
12890
<h3 class="subsection">6.2.13 disconnect</h3>
 
12891
 
 
12892
<p>This message causes the recipient to disconnect from all <a href="#fellows">fellows</a> by
 
12893
cutting all <a href="#wires">wires</a> and <a href="#rubbers">rubbers</a> that are connected to it.
 
12894
</p>
 
12895
<dl compact="compact">
 
12896
<dt> <b>Value:</b> &nbsp;&nbsp;-</dt>
 
12897
<dt> <b>Returns:</b> &nbsp;&nbsp;-</dt>
 
12898
<dt> <b>Support:</b> &nbsp;&nbsp;by all objects</dt>
 
12899
</dl>
 
12900
 
 
12901
 
 
12902
<hr size="6">
 
12903
<a name="Common-Constants"></a>
 
12904
<table cellpadding="1" cellspacing="1" border="0">
 
12905
<tr><td valign="middle" align="left">[<a href="#disconnect" title="Previous section in reading order"> &lt; </a>]</td>
 
12906
<td valign="middle" align="left">[<a href="#state-values" title="Next section in reading order"> &gt; </a>]</td>
 
12907
<td valign="middle" align="left"> &nbsp; </td>
 
12908
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12909
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Up section"> Up </a>]</td>
 
12910
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12911
<td valign="middle" align="left"> &nbsp; </td>
 
12912
<td valign="middle" align="left"> &nbsp; </td>
 
12913
<td valign="middle" align="left"> &nbsp; </td>
 
12914
<td valign="middle" align="left"> &nbsp; </td>
 
12915
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12916
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12917
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12918
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12919
</tr></table>
 
12920
<a name="Common-Constants-1"></a>
 
12921
<h2 class="section">6.3 Common Constants</h2>
 
12922
 
 
12923
<p>Constants for <a href="#Pseudo-Datatypes">Pseudo Datatypes</a>.
 
12924
</p>
 
12925
<table class="menu" border="0" cellspacing="0">
 
12926
<tr><td align="left" valign="top"><a href="#state-values">6.3.1 state values</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12927
</td></tr>
 
12928
<tr><td align="left" valign="top"><a href="#color-values">6.3.2 color values</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12929
</td></tr>
 
12930
<tr><td align="left" valign="top"><a href="#actor-controllers">6.3.3 actor controllers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12931
</td></tr>
 
12932
<tr><td align="left" valign="top"><a href="#oxyd-colors">6.3.4 oxyd colors</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12933
</td></tr>
 
12934
<tr><td align="left" valign="top"><a href="#orientations">6.3.5 orientations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12935
</td></tr>
 
12936
<tr><td align="left" valign="top"><a href="#direction-offsets">6.3.6 direction offsets</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12937
</td></tr>
 
12938
<tr><td align="left" valign="top"><a href="#position-lists">6.3.7 position lists</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12939
</td></tr>
 
12940
<tr><td align="left" valign="top"><a href="#essentialness">6.3.8 essentialness</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12941
</td></tr>
 
12942
<tr><td align="left" valign="top"><a href="#meditation-types">6.3.9 meditation types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12943
</td></tr>
 
12944
<tr><td align="left" valign="top"><a href="#glasses-abilities">6.3.10 glasses abilities</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12945
</td></tr>
 
12946
<tr><td align="left" valign="top"><a href="#coinslot-acceptance">6.3.11 coinslot acceptance</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12947
</td></tr>
 
12948
<tr><td align="left" valign="top"><a href="#rubberband-length">6.3.12 rubberband length</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12949
</td></tr>
 
12950
<tr><td align="left" valign="top"><a href="#subsoil-kind">6.3.13 subsoil kind</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12951
</td></tr>
 
12952
<tr><td align="left" valign="top"><a href="#screen-scrolling">6.3.14 screen scrolling</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12953
</td></tr>
 
12954
<tr><td align="left" valign="top"><a href="#map-read-directions">6.3.15 map read directions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
12955
</td></tr>
 
12956
</table>
 
12957
 
 
12958
<hr size="6">
 
12959
<a name="state-values"></a>
 
12960
<table cellpadding="1" cellspacing="1" border="0">
 
12961
<tr><td valign="middle" align="left">[<a href="#Common-Constants" title="Previous section in reading order"> &lt; </a>]</td>
 
12962
<td valign="middle" align="left">[<a href="#color-values" title="Next section in reading order"> &gt; </a>]</td>
 
12963
<td valign="middle" align="left"> &nbsp; </td>
 
12964
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
12965
<td valign="middle" align="left">[<a href="#Common-Constants" title="Up section"> Up </a>]</td>
 
12966
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
12967
<td valign="middle" align="left"> &nbsp; </td>
 
12968
<td valign="middle" align="left"> &nbsp; </td>
 
12969
<td valign="middle" align="left"> &nbsp; </td>
 
12970
<td valign="middle" align="left"> &nbsp; </td>
 
12971
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
12972
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
12973
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
12974
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
12975
</tr></table>
 
12976
<a name="state-values-1"></a>
 
12977
<h3 class="subsection">6.3.1 state values</h3>
 
12978
 
 
12979
<p>Number constants for object attribute <a href="#state">state</a>. Please choose the constant
 
12980
that is appropriate for an object and do avoid using numbers.
 
12981
</p>
 
12982
<ul>
 
12983
<li> &lsquo;<samp>OFF</samp>&rsquo; = <code>0</code>, all switch like objects
 
12984
</li><li> &lsquo;<samp>ON</samp>&rsquo; = <code>1</code>, all switch like objects
 
12985
</li><li> &lsquo;<samp>CLOSED</samp>&rsquo; = <code>0</code>, all door like objects
 
12986
</li><li> &lsquo;<samp>OPEN</samp>&rsquo; = <code>1</code>, all door like objects
 
12987
</li><li> &lsquo;<samp>IDLE</samp>&rsquo; = <code>0</code>, other objects in the default passive state
 
12988
</li><li> &lsquo;<samp>ACTIVE</samp>&rsquo; = <code>1</code>, other objects in the active state
 
12989
</li><li> &lsquo;<samp>INACTIVE</samp>&rsquo; = <code>2</code>, other objects in the inactive state
 
12990
</li><li> &lsquo;<samp>OXYDPAIR</samp>&rsquo; = <code>2</code>, just by <a href="#st_005foxyd">st_oxyd</a>
 
12991
</li><li> &lsquo;<samp>LIGHT</samp>&rsquo; = <code>0</code>, by <a href="#st_005fdisco">st_disco</a>
 
12992
</li><li> &lsquo;<samp>MEDIUM</samp>&rsquo; = <code>1</code>, by <a href="#st_005fdisco">st_disco</a>, <a href="#it_005fcrack">it_crack</a>, <a href="#it_005fextinguisher">it_extinguisher</a>
 
12993
</li><li> &lsquo;<samp>DARK</samp>&rsquo; = <code>2</code>, by <a href="#st_005fdisco">st_disco</a>
 
12994
</li><li> &lsquo;<samp>FLOODING</samp>&rsquo; = <code>1</code>, by <a href="#fl_005fwater">fl_water</a>, <a href="#fl_005fwood">fl_wood</a>, <a href="#fl_005fhay">fl_hay</a>, <a href="#fl_005frock">fl_rock</a>
 
12995
</li><li> &lsquo;<samp>INVISIBLE</samp>&rsquo; = <code>-1</code>, by <a href="#it_005fcrack">it_crack</a>
 
12996
</li><li> &lsquo;<samp>SMALL</samp>&rsquo; = <code>0</code>, by <a href="#it_005fcrack">it_crack</a>
 
12997
</li><li> &lsquo;<samp>LARGE</samp>&rsquo; = <code>2</code>, by <a href="#it_005fcrack">it_crack</a>
 
12998
</li><li> &lsquo;<samp>YIN</samp>&rsquo; = <code>0</code>, by <a href="#fl_005fyinyang">fl_yinyang</a> and all actors as <a href="#owner">owner</a> value
 
12999
</li><li> &lsquo;<samp>YANG</samp>&rsquo; = <code>1</code>, by <a href="#fl_005fyinyang">fl_yinyang</a> and all actors as <a href="#owner">owner</a> value
 
13000
</li><li> &lsquo;<samp>EMPTY</samp>&rsquo; = <code>0</code>, by <a href="#it_005fextinguisher">it_extinguisher</a>
 
13001
</li><li> &lsquo;<samp>FULL</samp>&rsquo; = <code>2</code>, by <a href="#it_005fextinguisher">it_extinguisher</a>
 
13002
</li><li> &lsquo;<samp>BROKEN</samp>&rsquo; = <code>1</code>, by <a href="#it_005fbottle">it_bottle</a>
 
13003
</li><li> &lsquo;<samp>BREAKING</samp>&rsquo; = <code>2</code>, by <a href="#st_005fquake">st_quake</a>
 
13004
</li><li> &lsquo;<samp>CW</samp>&rsquo; = <code>0</code>, clockwise, by <a href="#st_005frotator">st_rotator</a>
 
13005
</li><li> &lsquo;<samp>CCW</samp>&rsquo; = <code>1</code>, counterclockwise, by <a href="#st_005frotator">st_rotator</a>
 
13006
</li></ul>
 
13007
 
 
13008
 
 
13009
<hr size="6">
 
13010
<a name="color-values"></a>
 
13011
<table cellpadding="1" cellspacing="1" border="0">
 
13012
<tr><td valign="middle" align="left">[<a href="#state-values" title="Previous section in reading order"> &lt; </a>]</td>
 
13013
<td valign="middle" align="left">[<a href="#actor-controllers" title="Next section in reading order"> &gt; </a>]</td>
 
13014
<td valign="middle" align="left"> &nbsp; </td>
 
13015
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13016
<td valign="middle" align="left">[<a href="#Common-Constants" title="Up section"> Up </a>]</td>
 
13017
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13018
<td valign="middle" align="left"> &nbsp; </td>
 
13019
<td valign="middle" align="left"> &nbsp; </td>
 
13020
<td valign="middle" align="left"> &nbsp; </td>
 
13021
<td valign="middle" align="left"> &nbsp; </td>
 
13022
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13023
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13024
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13025
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13026
</tr></table>
 
13027
<a name="color-values-1"></a>
 
13028
<h3 class="subsection">6.3.2 color values</h3>
 
13029
 
 
13030
<p>Number constants for attribute <a href="#color">color</a>. Please choose the constant
 
13031
that is appropriate for an object and do avoid using numbers. Note that objects
 
13032
do support a color attribute only, if it is related to a functionality. The
 
13033
color of <a href="#st_005foxyd">st_oxyd</a> uses another enumeration scheme due to legacy reasons,
 
13034
see section <a href="#oxyd-colors">oxyd colors</a>.
 
13035
</p>
 
13036
<ul>
 
13037
<li> &lsquo;<samp>BLACK</samp>&rsquo; = <code>0</code>, all black/white colored objects
 
13038
</li><li> &lsquo;<samp>WHITE</samp>&rsquo; = <code>1</code>, all black/white colored objects
 
13039
</li><li> &lsquo;<samp>BLUE</samp>&rsquo; = <code>2</code>, by <a href="#st_005fpuzzle">st_puzzle</a>
 
13040
</li><li> &lsquo;<samp>YELLOW</samp>&rsquo; = <code>3</code>, by <a href="#st_005fpuzzle">st_puzzle</a>
 
13041
</li><li> &lsquo;<samp>NOCOLOR</samp>&rsquo; = <code>nil</code>, some objects, that exist in black, white variants,
 
13042
too, like <a href="#st_005fswitch">st_switch</a>
 
13043
</li></ul>
 
13044
 
 
13045
<hr size="6">
 
13046
<a name="actor-controllers"></a>
 
13047
<table cellpadding="1" cellspacing="1" border="0">
 
13048
<tr><td valign="middle" align="left">[<a href="#color-values" title="Previous section in reading order"> &lt; </a>]</td>
 
13049
<td valign="middle" align="left">[<a href="#oxyd-colors" title="Next section in reading order"> &gt; </a>]</td>
 
13050
<td valign="middle" align="left"> &nbsp; </td>
 
13051
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13052
<td valign="middle" align="left">[<a href="#Common-Constants" title="Up section"> Up </a>]</td>
 
13053
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13054
<td valign="middle" align="left"> &nbsp; </td>
 
13055
<td valign="middle" align="left"> &nbsp; </td>
 
13056
<td valign="middle" align="left"> &nbsp; </td>
 
13057
<td valign="middle" align="left"> &nbsp; </td>
 
13058
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13059
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13060
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13061
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13062
</tr></table>
 
13063
<a name="actor-controllers-1"></a>
 
13064
<h3 class="subsection">6.3.3 actor controllers</h3>
 
13065
 
 
13066
<p>Number constants for actor attribute <a href="#controllers">controllers</a>. Please choose the
 
13067
constant that is appropriate for an object and do avoid using numbers.
 
13068
</p>
 
13069
<ul>
 
13070
<li> &lsquo;<samp>CTRL_NONE</samp>&rsquo; = <code>0</code>, by all actors
 
13071
</li><li> &lsquo;<samp>CTRL_YIN</samp>&rsquo; = <code>1</code>, by all actors
 
13072
</li><li> &lsquo;<samp>CTRL_YANG</samp>&rsquo; = <code>2</code>, by all actors
 
13073
</li><li> &lsquo;<samp>CTRL_YINYANG</samp>&rsquo; = <code>3</code>, by all actors
 
13074
</li></ul>
 
13075
 
 
13076
<hr size="6">
 
13077
<a name="oxyd-colors"></a>
 
13078
<table cellpadding="1" cellspacing="1" border="0">
 
13079
<tr><td valign="middle" align="left">[<a href="#actor-controllers" title="Previous section in reading order"> &lt; </a>]</td>
 
13080
<td valign="middle" align="left">[<a href="#orientations" title="Next section in reading order"> &gt; </a>]</td>
 
13081
<td valign="middle" align="left"> &nbsp; </td>
 
13082
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13083
<td valign="middle" align="left">[<a href="#Common-Constants" title="Up section"> Up </a>]</td>
 
13084
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13085
<td valign="middle" align="left"> &nbsp; </td>
 
13086
<td valign="middle" align="left"> &nbsp; </td>
 
13087
<td valign="middle" align="left"> &nbsp; </td>
 
13088
<td valign="middle" align="left"> &nbsp; </td>
 
13089
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13090
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13091
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13092
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13093
</tr></table>
 
13094
<a name="oxyd-colors-1"></a>
 
13095
<h3 class="subsection">6.3.4 oxyd colors</h3>
 
13096
 
 
13097
<p>Number constants for <a href="#st_005foxyd">st_oxyd</a> attribute &lsquo;<samp>oxydcolor</samp>&rsquo;. Please choose the
 
13098
constant that is appropriate for an object and do avoid using numbers.
 
13099
</p>
 
13100
<ul>
 
13101
<li> &lsquo;<samp>OXYD_BLUE</samp>&rsquo; = <code>0</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13102
</li><li> &lsquo;<samp>OXYD_RED</samp>&rsquo; = <code>1</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13103
</li><li> &lsquo;<samp>OXYD_GREEN</samp>&rsquo; = <code>2</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13104
</li><li> &lsquo;<samp>OXYD_YELLOW</samp>&rsquo; = <code>3</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13105
</li><li> &lsquo;<samp>OXYD_CYAN</samp>&rsquo; = <code>4</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13106
</li><li> &lsquo;<samp>OXYD_PURPLE</samp>&rsquo; = <code>5</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13107
</li><li> &lsquo;<samp>OXYD_WHITE</samp>&rsquo; = <code>6</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13108
</li><li> &lsquo;<samp>OXYD_BLACK</samp>&rsquo; = <code>7</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13109
</li><li> &lsquo;<samp>OXYD_GRAY</samp>&rsquo; = <code>8</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13110
</li><li> &lsquo;<samp>OXYD_ORANGE</samp>&rsquo; = <code>9</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13111
</li><li> &lsquo;<samp>OXYD_PINE</samp>&rsquo; = <code>10</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13112
</li><li> &lsquo;<samp>OXYD_BROWN</samp>&rsquo; = <code>11</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13113
</li><li> &lsquo;<samp>OXYD_AUTO</samp>&rsquo; = <code>-1</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13114
</li><li> &lsquo;<samp>OXYD_FAKE</samp>&rsquo; = <code>-2</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13115
</li><li> &lsquo;<samp>OXYD_QUAKE</samp>&rsquo; = <code>-3</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13116
</li><li> &lsquo;<samp>OXYD_BOLD</samp>&rsquo; = <code>-4</code>, by <a href="#st_005foxyd">st_oxyd</a>
 
13117
</li></ul>
 
13118
 
 
13119
 
 
13120
<hr size="6">
 
13121
<a name="orientations"></a>
 
13122
<table cellpadding="1" cellspacing="1" border="0">
 
13123
<tr><td valign="middle" align="left">[<a href="#oxyd-colors" title="Previous section in reading order"> &lt; </a>]</td>
 
13124
<td valign="middle" align="left">[<a href="#direction-offsets" title="Next section in reading order"> &gt; </a>]</td>
 
13125
<td valign="middle" align="left"> &nbsp; </td>
 
13126
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13127
<td valign="middle" align="left">[<a href="#Common-Constants" title="Up section"> Up </a>]</td>
 
13128
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13129
<td valign="middle" align="left"> &nbsp; </td>
 
13130
<td valign="middle" align="left"> &nbsp; </td>
 
13131
<td valign="middle" align="left"> &nbsp; </td>
 
13132
<td valign="middle" align="left"> &nbsp; </td>
 
13133
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13134
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13135
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13136
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13137
</tr></table>
 
13138
<a name="orientations-1"></a>
 
13139
<h3 class="subsection">6.3.5 orientations</h3>
 
13140
 
 
13141
<p>Number constants for attributes &lsquo;<samp>orientation</samp>&rsquo; or &lsquo;<samp>slope</samp>&rsquo;. Please
 
13142
choose the constant that is appropriate for an object and do avoid using numbers.
 
13143
</p>
 
13144
<ul>
 
13145
<li> &lsquo;<samp>RANDOMDIR</samp>&rsquo; = <code>-2</code>, by <a href="#st_005fmirror">st_mirror</a>
 
13146
</li><li> &lsquo;<samp>NODIR</samp>&rsquo; = <code>-1</code>, by <a href="#fl_005fslope">fl_slope</a>
 
13147
</li><li> &lsquo;<samp>WEST</samp>&rsquo; = <code>0</code>, by all objects with 4 orientations
 
13148
</li><li> &lsquo;<samp>SOUTH</samp>&rsquo; = <code>1</code>, by all objects with 4 orientations
 
13149
</li><li> &lsquo;<samp>EAST</samp>&rsquo; = <code>2</code>, by all objects with 4 orientations
 
13150
</li><li> &lsquo;<samp>NORTH</samp>&rsquo; = <code>3</code>, by all objects with 4 orientations
 
13151
</li><li> &lsquo;<samp>NORTHWEST</samp>&rsquo; = <code>4</code>, by all objects with 8 orientations
 
13152
</li><li> &lsquo;<samp>SOUTHWEST</samp>&rsquo; = <code>5</code>, by all objects with 8 orientations
 
13153
</li><li> &lsquo;<samp>SOUTHEAST</samp>&rsquo; = <code>6</code>, by all objects with 8 orientations
 
13154
</li><li> &lsquo;<samp>NORTHEAST</samp>&rsquo; = <code>7</code>, by all objects with 8 orientations
 
13155
</li></ul>
 
13156
 
 
13157
<p>Just for <a href="#st_005fmirror">st_mirror</a> another alternative orientation notation exists:
 
13158
</p>
 
13159
<ul>
 
13160
<li> &lsquo;<samp>BACKSLASH</samp>&rsquo; = <code>0</code>, by <a href="#st_005fmirror">st_mirror</a>
 
13161
</li><li> &lsquo;<samp>HORIZONTAL</samp>&rsquo; = <code>1</code>, by <a href="#st_005fmirror">st_mirror</a>
 
13162
</li><li> &lsquo;<samp>SLASH</samp>&rsquo; = <code>2</code>, by <a href="#st_005fmirror">st_mirror</a>
 
13163
</li><li> &lsquo;<samp>VERTICAL</samp>&rsquo; = <code>3</code>, by <a href="#st_005fmirror">st_mirror</a>
 
13164
</li></ul>
 
13165
 
 
13166
<hr size="6">
 
13167
<a name="direction-offsets"></a>
 
13168
<table cellpadding="1" cellspacing="1" border="0">
 
13169
<tr><td valign="middle" align="left">[<a href="#orientations" title="Previous section in reading order"> &lt; </a>]</td>
 
13170
<td valign="middle" align="left">[<a href="#position-lists" title="Next section in reading order"> &gt; </a>]</td>
 
13171
<td valign="middle" align="left"> &nbsp; </td>
 
13172
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13173
<td valign="middle" align="left">[<a href="#Common-Constants" title="Up section"> Up </a>]</td>
 
13174
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13175
<td valign="middle" align="left"> &nbsp; </td>
 
13176
<td valign="middle" align="left"> &nbsp; </td>
 
13177
<td valign="middle" align="left"> &nbsp; </td>
 
13178
<td valign="middle" align="left"> &nbsp; </td>
 
13179
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13180
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13181
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13182
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13183
</tr></table>
 
13184
<a name="direction-offsets-1"></a>
 
13185
<h3 class="subsection">6.3.6 direction offsets</h3>
 
13186
 
 
13187
<p>Position constants as vectorial direction offsets. Please choose the constant
 
13188
that is appropriate for a calculation and do avoid using the trivial positions
 
13189
instead.
 
13190
</p>
 
13191
<ul>
 
13192
<li> &lsquo;<samp>N</samp>&rsquo; = <code>po(0, -1)</code>
 
13193
</li><li> &lsquo;<samp>E</samp>&rsquo; = <code>po(1, 0)</code>
 
13194
</li><li> &lsquo;<samp>S</samp>&rsquo; = <code>po(0, 1)</code>
 
13195
</li><li> &lsquo;<samp>W</samp>&rsquo; = <code>po(-1, 0)</code>
 
13196
</li><li> &lsquo;<samp>NE</samp>&rsquo; = <code>N + E</code>
 
13197
</li><li> &lsquo;<samp>NW</samp>&rsquo; = <code>N + W</code>
 
13198
</li><li> &lsquo;<samp>SE</samp>&rsquo; = <code>S + E</code>
 
13199
</li><li> &lsquo;<samp>SW</samp>&rsquo; = <code>S + W</code>
 
13200
</li><li> &lsquo;<samp>NNE</samp>&rsquo; = <code>N + NE</code>, by <a href="#st_005fchess">st_chess</a>
 
13201
</li><li> &lsquo;<samp>ENE</samp>&rsquo; = <code>E + NE</code>, by <a href="#st_005fchess">st_chess</a>
 
13202
</li><li> &lsquo;<samp>ESE</samp>&rsquo; = <code>E + SE</code>, by <a href="#st_005fchess">st_chess</a>
 
13203
</li><li> &lsquo;<samp>SSE</samp>&rsquo; = <code>S + SE</code>, by <a href="#st_005fchess">st_chess</a>
 
13204
</li><li> &lsquo;<samp>SSW</samp>&rsquo; = <code>S + SW</code>, by <a href="#st_005fchess">st_chess</a>
 
13205
</li><li> &lsquo;<samp>WSW</samp>&rsquo; = <code>W + SW</code>, by <a href="#st_005fchess">st_chess</a>
 
13206
</li><li> &lsquo;<samp>WNW</samp>&rsquo; = <code>W + NW</code>, by <a href="#st_005fchess">st_chess</a>
 
13207
</li><li> &lsquo;<samp>NNW</samp>&rsquo; = <code>N + NW</code>, by <a href="#st_005fchess">st_chess</a>
 
13208
</li></ul>
 
13209
 
 
13210
<hr size="6">
 
13211
<a name="position-lists"></a>
 
13212
<table cellpadding="1" cellspacing="1" border="0">
 
13213
<tr><td valign="middle" align="left">[<a href="#direction-offsets" title="Previous section in reading order"> &lt; </a>]</td>
 
13214
<td valign="middle" align="left">[<a href="#essentialness" title="Next section in reading order"> &gt; </a>]</td>
 
13215
<td valign="middle" align="left"> &nbsp; </td>
 
13216
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13217
<td valign="middle" align="left">[<a href="#Common-Constants" title="Up section"> Up </a>]</td>
 
13218
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13219
<td valign="middle" align="left"> &nbsp; </td>
 
13220
<td valign="middle" align="left"> &nbsp; </td>
 
13221
<td valign="middle" align="left"> &nbsp; </td>
 
13222
<td valign="middle" align="left"> &nbsp; </td>
 
13223
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13224
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13225
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13226
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13227
</tr></table>
 
13228
<a name="position-lists-1"></a>
 
13229
<h3 class="subsection">6.3.7 position lists</h3>
 
13230
 
 
13231
<p>Position list constants. Please choose the constant that is appropriate for a
 
13232
calculation and do avoid using the trivial position lists instead.
 
13233
</p>
 
13234
<ul>
 
13235
<li> &lsquo;<samp>NEIGHBORS_4</samp>&rsquo; = <code>W .. S .. E .. N</code>
 
13236
</li><li> &lsquo;<samp>NEIGHBORS_8</samp>&rsquo; = <code>NEIGHBORS_4 .. NW .. SW ..SE .. NE</code>
 
13237
</li><li> &lsquo;<samp>NEIGHBORS_CHESS</samp>&rsquo; = <code>NNE .. ENE .. ESE .. SSE .. SSW .. WSW .. WNW .. NNW</code>
 
13238
</li></ul>
 
13239
 
 
13240
<hr size="6">
 
13241
<a name="essentialness"></a>
 
13242
<table cellpadding="1" cellspacing="1" border="0">
 
13243
<tr><td valign="middle" align="left">[<a href="#position-lists" title="Previous section in reading order"> &lt; </a>]</td>
 
13244
<td valign="middle" align="left">[<a href="#meditation-types" title="Next section in reading order"> &gt; </a>]</td>
 
13245
<td valign="middle" align="left"> &nbsp; </td>
 
13246
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13247
<td valign="middle" align="left">[<a href="#Common-Constants" title="Up section"> Up </a>]</td>
 
13248
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13249
<td valign="middle" align="left"> &nbsp; </td>
 
13250
<td valign="middle" align="left"> &nbsp; </td>
 
13251
<td valign="middle" align="left"> &nbsp; </td>
 
13252
<td valign="middle" align="left"> &nbsp; </td>
 
13253
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13254
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13255
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13256
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13257
</tr></table>
 
13258
<a name="essentialness-1"></a>
 
13259
<h3 class="subsection">6.3.8 essentialness</h3>
 
13260
 
 
13261
<p>Number constants for attribute <a href="#essential">essential</a>. Please choose the constant that
 
13262
is appropriate for an object and do avoid using numbers.
 
13263
</p>
 
13264
<ul>
 
13265
<li> &lsquo;<samp>DISPENSABLE</samp>&rsquo; = <code>0</code>, by all actors and <a href="#it_005fmeditation">it_meditation</a>
 
13266
</li><li> &lsquo;<samp>INDISPENSABLE</samp>&rsquo; = <code>1</code>, by all actors and <a href="#it_005fmeditation">it_meditation</a>
 
13267
</li><li> &lsquo;<samp>PERKIND</samp>&rsquo; = <code>2</code>, by all actors
 
13268
</li></ul>
 
13269
 
 
13270
<hr size="6">
 
13271
<a name="meditation-types"></a>
 
13272
<table cellpadding="1" cellspacing="1" border="0">
 
13273
<tr><td valign="middle" align="left">[<a href="#essentialness" title="Previous section in reading order"> &lt; </a>]</td>
 
13274
<td valign="middle" align="left">[<a href="#glasses-abilities" title="Next section in reading order"> &gt; </a>]</td>
 
13275
<td valign="middle" align="left"> &nbsp; </td>
 
13276
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13277
<td valign="middle" align="left">[<a href="#Common-Constants" title="Up section"> Up </a>]</td>
 
13278
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13279
<td valign="middle" align="left"> &nbsp; </td>
 
13280
<td valign="middle" align="left"> &nbsp; </td>
 
13281
<td valign="middle" align="left"> &nbsp; </td>
 
13282
<td valign="middle" align="left"> &nbsp; </td>
 
13283
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13284
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13285
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13286
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13287
</tr></table>
 
13288
<a name="meditation-types-1"></a>
 
13289
<h3 class="subsection">6.3.9 meditation types</h3>
 
13290
 
 
13291
<p>Number constants for <a href="#it_005fmeditation">it_meditation</a> attribute <a href="#state">state</a>. Please choose
 
13292
the constant that is appropriate for an object and do avoid using numbers.
 
13293
</p>
 
13294
<ul>
 
13295
<li> &lsquo;<samp>MEDITATION_CALDERA</samp>&rsquo; = <code>-3</code>, by <a href="#it_005fmeditation">it_meditation</a>
 
13296
</li><li> &lsquo;<samp>MEDITATION_HOLLOW</samp>&rsquo; = <code>-2</code>, by <a href="#it_005fmeditation">it_meditation</a>
 
13297
</li><li> &lsquo;<samp>MEDITATION_DENT</samp>&rsquo; = <code>-1</code>, by <a href="#it_005fmeditation">it_meditation</a>
 
13298
</li><li> &lsquo;<samp>MEDITATION_BUMP</samp>&rsquo; = <code>1</code>, by <a href="#it_005fmeditation">it_meditation</a>
 
13299
</li><li> &lsquo;<samp>MEDITATION_HILL</samp>&rsquo; = <code>2</code>, by <a href="#it_005fmeditation">it_meditation</a>
 
13300
</li><li> &lsquo;<samp>MEDITATION_VOLCANO</samp>&rsquo; = <code>3</code>, by <a href="#it_005fmeditation">it_meditation</a>
 
13301
</li></ul>
 
13302
 
 
13303
<hr size="6">
 
13304
<a name="glasses-abilities"></a>
 
13305
<table cellpadding="1" cellspacing="1" border="0">
 
13306
<tr><td valign="middle" align="left">[<a href="#meditation-types" title="Previous section in reading order"> &lt; </a>]</td>
 
13307
<td valign="middle" align="left">[<a href="#coinslot-acceptance" title="Next section in reading order"> &gt; </a>]</td>
 
13308
<td valign="middle" align="left"> &nbsp; </td>
 
13309
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13310
<td valign="middle" align="left">[<a href="#Common-Constants" title="Up section"> Up </a>]</td>
 
13311
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13312
<td valign="middle" align="left"> &nbsp; </td>
 
13313
<td valign="middle" align="left"> &nbsp; </td>
 
13314
<td valign="middle" align="left"> &nbsp; </td>
 
13315
<td valign="middle" align="left"> &nbsp; </td>
 
13316
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13317
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13318
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13319
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13320
</tr></table>
 
13321
<a name="glasses-abilities-1"></a>
 
13322
<h3 class="subsection">6.3.10 glasses abilities</h3>
 
13323
 
 
13324
<p>Number constants for <a href="#it_005fglasses">it_glasses</a> attribute <a href="#state">state</a> and global variable
 
13325
<a href="#ExtralifeGlasses">ExtralifeGlasses</a>. Please use sums of the constants that are appropriate
 
13326
for your glasses and do avoid using numbers.
 
13327
</p>
 
13328
<ul>
 
13329
<li> &lsquo;<samp>SPOT_NOTHING</samp>&rsquo; = <code>0</code>, by <a href="#it_005fglasses">it_glasses</a>
 
13330
</li><li> &lsquo;<samp>SPOT_DEATH</samp>&rsquo; = <code>1</code>, by <a href="#it_005fglasses">it_glasses</a>
 
13331
</li><li> &lsquo;<samp>SPOT_HOLLOW</samp>&rsquo; = <code>2</code>, by <a href="#it_005fglasses">it_glasses</a>
 
13332
</li><li> &lsquo;<samp>SPOT_ACTORIMPULSE</samp>&rsquo; = <code>4</code>, by <a href="#it_005fglasses">it_glasses</a>
 
13333
</li><li> &lsquo;<samp>SPOT_SENSOR</samp>&rsquo; = <code>8</code>, by <a href="#it_005fglasses">it_glasses</a>
 
13334
</li><li> &lsquo;<samp>SPOT_LIGHTPASSENGER</samp>&rsquo; = <code>16</code>, by <a href="#it_005fglasses">it_glasses</a>
 
13335
</li><li> &lsquo;<samp>SPOT_TRAP</samp>&rsquo; = <code>32</code>, by <a href="#it_005fglasses">it_glasses</a>
 
13336
</li></ul>
 
13337
 
 
13338
<hr size="6">
 
13339
<a name="coinslot-acceptance"></a>
 
13340
<table cellpadding="1" cellspacing="1" border="0">
 
13341
<tr><td valign="middle" align="left">[<a href="#glasses-abilities" title="Previous section in reading order"> &lt; </a>]</td>
 
13342
<td valign="middle" align="left">[<a href="#rubberband-length" title="Next section in reading order"> &gt; </a>]</td>
 
13343
<td valign="middle" align="left"> &nbsp; </td>
 
13344
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13345
<td valign="middle" align="left">[<a href="#Common-Constants" title="Up section"> Up </a>]</td>
 
13346
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13347
<td valign="middle" align="left"> &nbsp; </td>
 
13348
<td valign="middle" align="left"> &nbsp; </td>
 
13349
<td valign="middle" align="left"> &nbsp; </td>
 
13350
<td valign="middle" align="left"> &nbsp; </td>
 
13351
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13352
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13353
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13354
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13355
</tr></table>
 
13356
<a name="coinslot-acceptance-1"></a>
 
13357
<h3 class="subsection">6.3.11 coinslot acceptance</h3>
 
13358
 
 
13359
<p>Number constants for <a href="#st_005fcoinslot">st_coinslot</a> attributes &lsquo;<samp>interval_*</samp>&rsquo;. Please
 
13360
choose the constant that is appropriate for the coinslot and do avoid using
 
13361
numbers.
 
13362
</p>
 
13363
<ul>
 
13364
<li> &lsquo;<samp>COIN_IGNORE</samp>&rsquo; = <code>-1</code>, by <a href="#st_005fcoinslot">st_coinslot</a>
 
13365
</li><li> &lsquo;<samp>COIN_REJECT</samp>&rsquo; = <code>-2</code>, by <a href="#st_005fcoinslot">st_coinslot</a>
 
13366
</li></ul>
 
13367
 
 
13368
<hr size="6">
 
13369
<a name="rubberband-length"></a>
 
13370
<table cellpadding="1" cellspacing="1" border="0">
 
13371
<tr><td valign="middle" align="left">[<a href="#coinslot-acceptance" title="Previous section in reading order"> &lt; </a>]</td>
 
13372
<td valign="middle" align="left">[<a href="#subsoil-kind" title="Next section in reading order"> &gt; </a>]</td>
 
13373
<td valign="middle" align="left"> &nbsp; </td>
 
13374
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13375
<td valign="middle" align="left">[<a href="#Common-Constants" title="Up section"> Up </a>]</td>
 
13376
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13377
<td valign="middle" align="left"> &nbsp; </td>
 
13378
<td valign="middle" align="left"> &nbsp; </td>
 
13379
<td valign="middle" align="left"> &nbsp; </td>
 
13380
<td valign="middle" align="left"> &nbsp; </td>
 
13381
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13382
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13383
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13384
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13385
</tr></table>
 
13386
<a name="rubberband-length-1"></a>
 
13387
<h3 class="subsection">6.3.12 rubberband length</h3>
 
13388
 
 
13389
<p>Number constant for <a href="#it_005frubberband">it_rubberband</a>, <a href="#st_005frubberband">st_rubberband</a> and <a href="#ot_005frubberband">ot_rubberband</a>
 
13390
attribute &lsquo;<samp>length</samp>&rsquo;. Please choose the constant that is appropriate for the
 
13391
rubberband length and do avoid using numbers.
 
13392
</p>
 
13393
<ul>
 
13394
<li> &lsquo;<samp>AUTOLENGTH</samp>&rsquo; = <code>-1</code>, by <a href="#it_005frubberband">it_rubberband</a>, <a href="#st_005frubberband">st_rubberband</a> and <a href="#ot_005frubberband">ot_rubberband</a>
 
13395
</li></ul>
 
13396
 
 
13397
<hr size="6">
 
13398
<a name="subsoil-kind"></a>
 
13399
<table cellpadding="1" cellspacing="1" border="0">
 
13400
<tr><td valign="middle" align="left">[<a href="#rubberband-length" title="Previous section in reading order"> &lt; </a>]</td>
 
13401
<td valign="middle" align="left">[<a href="#screen-scrolling" title="Next section in reading order"> &gt; </a>]</td>
 
13402
<td valign="middle" align="left"> &nbsp; </td>
 
13403
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13404
<td valign="middle" align="left">[<a href="#Common-Constants" title="Up section"> Up </a>]</td>
 
13405
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13406
<td valign="middle" align="left"> &nbsp; </td>
 
13407
<td valign="middle" align="left"> &nbsp; </td>
 
13408
<td valign="middle" align="left"> &nbsp; </td>
 
13409
<td valign="middle" align="left"> &nbsp; </td>
 
13410
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13411
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13412
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13413
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13414
</tr></table>
 
13415
<a name="subsoil-kind-1"></a>
 
13416
<h3 class="subsection">6.3.13 subsoil kind</h3>
 
13417
 
 
13418
<p>Number constants for the global attribute <a href="#SubSoil">SubSoil</a>. Please
 
13419
choose the constant that is appropriate for the SubSoil and do avoid using
 
13420
numbers.
 
13421
</p>
 
13422
<ul>
 
13423
<li> &lsquo;<samp>SUBSOIL_ABYSS</samp>&rsquo; = <code>0</code>, by <a href="#it_005fexplosion">it_explosion</a>
 
13424
</li><li> &lsquo;<samp>SUBSOIL_WATER</samp>&rsquo; = <code>1</code>, by <a href="#it_005fexplosion">it_explosion</a>
 
13425
</li><li> &lsquo;<samp>SUBSOIL_AUTO</samp>&rsquo; = <code>2</code>, by <a href="#it_005fexplosion">it_explosion</a>
 
13426
</li></ul>
 
13427
 
 
13428
<hr size="6">
 
13429
<a name="screen-scrolling"></a>
 
13430
<table cellpadding="1" cellspacing="1" border="0">
 
13431
<tr><td valign="middle" align="left">[<a href="#subsoil-kind" title="Previous section in reading order"> &lt; </a>]</td>
 
13432
<td valign="middle" align="left">[<a href="#map-read-directions" title="Next section in reading order"> &gt; </a>]</td>
 
13433
<td valign="middle" align="left"> &nbsp; </td>
 
13434
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13435
<td valign="middle" align="left">[<a href="#Common-Constants" title="Up section"> Up </a>]</td>
 
13436
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13437
<td valign="middle" align="left"> &nbsp; </td>
 
13438
<td valign="middle" align="left"> &nbsp; </td>
 
13439
<td valign="middle" align="left"> &nbsp; </td>
 
13440
<td valign="middle" align="left"> &nbsp; </td>
 
13441
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13442
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13443
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13444
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13445
</tr></table>
 
13446
<a name="screen-scrolling-1"></a>
 
13447
<h3 class="subsection">6.3.14 screen scrolling</h3>
 
13448
 
 
13449
<p>Constants for screen scrolling global attributes <a href="#FollowMethod">FollowMethod</a> and
 
13450
<a href="#FollowAction">FollowAction</a>. Please choose the constants that are appropriate for
 
13451
screen scrolling and do avoid using numbers or position values.
 
13452
</p>
 
13453
<ul>
 
13454
<li> &lsquo;<samp>FOLLOW_NO</samp>&rsquo; = <code>0</code>, by global <a href="#FollowMethod">FollowMethod</a>
 
13455
</li><li> &lsquo;<samp>FOLLOW_SCROLL</samp>&rsquo; = <code>1</code>, by global <a href="#FollowMethod">FollowMethod</a>
 
13456
</li><li> &lsquo;<samp>FOLLOW_FLIP</samp>&rsquo; = <code>2</code>, by global <a href="#FollowMethod">FollowMethod</a>
 
13457
</li></ul>
 
13458
 
 
13459
<ul>
 
13460
<li> &lsquo;<samp>FOLLOW_FULLSCREEN</samp>&rsquo; = <code>po(19, 12)</code>, by global <a href="#FollowAction">FollowAction</a>
 
13461
</li><li> &lsquo;<samp>FOLLOW_HALFSCREEN</samp>&rsquo; = <code>po(9.5, 6)</code>, by global <a href="#FollowAction">FollowAction</a>
 
13462
</li></ul>
 
13463
 
 
13464
<hr size="6">
 
13465
<a name="map-read-directions"></a>
 
13466
<table cellpadding="1" cellspacing="1" border="0">
 
13467
<tr><td valign="middle" align="left">[<a href="#screen-scrolling" title="Previous section in reading order"> &lt; </a>]</td>
 
13468
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Next section in reading order"> &gt; </a>]</td>
 
13469
<td valign="middle" align="left"> &nbsp; </td>
 
13470
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13471
<td valign="middle" align="left">[<a href="#Common-Constants" title="Up section"> Up </a>]</td>
 
13472
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13473
<td valign="middle" align="left"> &nbsp; </td>
 
13474
<td valign="middle" align="left"> &nbsp; </td>
 
13475
<td valign="middle" align="left"> &nbsp; </td>
 
13476
<td valign="middle" align="left"> &nbsp; </td>
 
13477
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13478
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13479
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13480
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13481
</tr></table>
 
13482
<a name="map-read-directions-1"></a>
 
13483
<h3 class="subsection">6.3.15 map read directions</h3>
 
13484
 
 
13485
<p>Constants for map read directions (see <a href="#drawMap">drawMap</a>) and map transformations (see
 
13486
<a href="#Rotating-and-Mirroring-Maps">Rotating and Mirroring Maps</a> and <a href="#Map-Transformation">Map Transformation</a>). They
 
13487
are not numbers, to allow advanced operations on them when libmap is loaded, see
 
13488
<a href="#Map-Transformation-Composition-and-Powers">Map Transformation Composition and Powers</a>.
 
13489
</p>
 
13490
<ul>
 
13491
<li> &lsquo;<samp>MAP_IDENT</samp>&rsquo; = no transformation
 
13492
</li><li> &lsquo;<samp>MAP_ROT_CW</samp>&rsquo; = rotate map 90 degrees clockwise
 
13493
</li><li> &lsquo;<samp>MAP_ROT_180</samp>&rsquo; = rotate map 180 degrees
 
13494
</li><li> &lsquo;<samp>MAP_ROT_CCW</samp>&rsquo; = rotate map 90 degrees counter-clockwise
 
13495
</li><li> &lsquo;<samp>MAP_FLIP_BACKSLASH</samp>&rsquo; = flip upper-left and lower-right corners
 
13496
</li><li> &lsquo;<samp>MAP_FLIP_HORIZONTAL</samp>&rsquo; = flip right and left
 
13497
</li><li> &lsquo;<samp>MAP_FLIP_SLASH</samp>&rsquo; = flip upper-right and lower-left corners
 
13498
</li><li> &lsquo;<samp>MAP_FLIP_VERTICAL</samp>&rsquo; = flip up and down
 
13499
</li></ul>
 
13500
 
 
13501
<p>Because map transformations are not numbers, you may not safe them as
 
13502
attributes of objects. Instead, you have to use &lsquo;<samp>index</samp>&rsquo; and
 
13503
&lsquo;<samp>MAP_ALL</samp>&rsquo;, see <a href="#Map-Transformation-Index-and-MAP_005fALL">Map Transformation Index and MAP_ALL</a>.
 
13504
</p>
 
13505
<hr size="6">
 
13506
<a name="Global-Attributes"></a>
 
13507
<table cellpadding="1" cellspacing="1" border="0">
 
13508
<tr><td valign="middle" align="left">[<a href="#map-read-directions" title="Previous section in reading order"> &lt; </a>]</td>
 
13509
<td valign="middle" align="left">[<a href="#ActorimpulseStrength" title="Next section in reading order"> &gt; </a>]</td>
 
13510
<td valign="middle" align="left"> &nbsp; </td>
 
13511
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13512
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Up section"> Up </a>]</td>
 
13513
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13514
<td valign="middle" align="left"> &nbsp; </td>
 
13515
<td valign="middle" align="left"> &nbsp; </td>
 
13516
<td valign="middle" align="left"> &nbsp; </td>
 
13517
<td valign="middle" align="left"> &nbsp; </td>
 
13518
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13519
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13520
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13521
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13522
</tr></table>
 
13523
<a name="Global-Attributes-1"></a>
 
13524
<h2 class="section">6.4 Global Attributes</h2>
 
13525
 
 
13526
<table class="menu" border="0" cellspacing="0">
 
13527
<tr><td align="left" valign="top"><a href="#ActorimpulseStrength">6.4.1 ActorimpulseStrength</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13528
</td></tr>
 
13529
<tr><td align="left" valign="top"><a href="#AllowSingleOxyds">6.4.2 AllowSingleOxyds</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13530
</td></tr>
 
13531
<tr><td align="left" valign="top"><a href="#AllowSuicide">6.4.3 AllowSuicide</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13532
</td></tr>
 
13533
<tr><td align="left" valign="top"><a href="#AutoRespawn">6.4.4 AutoRespawn</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13534
</td></tr>
 
13535
<tr><td align="left" valign="top"><a href="#ConserveLevel">6.4.5 ConserveLevel</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13536
</td></tr>
 
13537
<tr><td align="left" valign="top"><a href="#CrackSpreading">6.4.6 CrackSpreading</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13538
</td></tr>
 
13539
<tr><td align="left" valign="top"><a href="#CreatingPreview">6.4.7 CreatingPreview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13540
</td></tr>
 
13541
<tr><td align="left" valign="top"><a href="#ElectricStrength">6.4.8 ElectricStrength</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13542
</td></tr>
 
13543
<tr><td align="left" valign="top"><a href="#ExtralifeGlasses">6.4.9 ExtralifeGlasses</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13544
</td></tr>
 
13545
<tr><td align="left" valign="top"><a href="#FallenPuzzle">6.4.10 FallenPuzzle</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13546
</td></tr>
 
13547
<tr><td align="left" valign="top"><a href="#FollowAction">6.4.11 FollowAction</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13548
</td></tr>
 
13549
<tr><td align="left" valign="top"><a href="#FollowGrid">6.4.12 FollowGrid</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13550
</td></tr>
 
13551
<tr><td align="left" valign="top"><a href="#FollowMethod">6.4.13 FollowMethod</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13552
</td></tr>
 
13553
<tr><td align="left" valign="top"><a href="#FollowThreshold">6.4.14 FollowThreshold</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13554
</td></tr>
 
13555
<tr><td align="left" valign="top"><a href="#Fragility">6.4.15 Fragility</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13556
</td></tr>
 
13557
<tr><td align="left" valign="top"><a href="#FrictionStrength">6.4.16 FrictionStrength</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13558
</td></tr>
 
13559
<tr><td align="left" valign="top"><a href="#GlobalForce">6.4.17 GlobalForce</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13560
</td></tr>
 
13561
<tr><td align="left" valign="top"><a href="#Height">6.4.18 Height</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13562
</td></tr>
 
13563
<tr><td align="left" valign="top"><a href="#InfiniteReincarnation">6.4.19 InfiniteReincarnation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13564
</td></tr>
 
13565
<tr><td align="left" valign="top"><a href="#IsDifficult">6.4.20 IsDifficult</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13566
</td></tr>
 
13567
<tr><td align="left" valign="top"><a href="#MagnetRange">6.4.21 MagnetRange</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13568
</td></tr>
 
13569
<tr><td align="left" valign="top"><a href="#MagnetStrength">6.4.22 MagnetStrength</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13570
</td></tr>
 
13571
<tr><td align="left" valign="top"><a href="#MaxOxydColor">6.4.23 MaxOxydColor</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13572
</td></tr>
 
13573
<tr><td align="left" valign="top"><a href="#MeditationStrength">6.4.24 MeditationStrength</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13574
</td></tr>
 
13575
<tr><td align="left" valign="top"><a href="#ProvideExtralifes">6.4.25 ProvideExtralifes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13576
</td></tr>
 
13577
<tr><td align="left" valign="top"><a href="#RubberViolationStrength">6.4.26 RubberViolationStrength</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13578
</td></tr>
 
13579
<tr><td align="left" valign="top"><a href="#ShowMoves">6.4.27 ShowMoves</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13580
</td></tr>
 
13581
<tr><td align="left" valign="top"><a href="#SlopeStrength">6.4.28 SlopeStrength</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13582
</td></tr>
 
13583
<tr><td align="left" valign="top"><a href="#SublevelNumber">6.4.29 SublevelNumber</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13584
</td></tr>
 
13585
<tr><td align="left" valign="top"><a href="#SublevelTitle">6.4.30 SublevelTitle</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13586
</td></tr>
 
13587
<tr><td align="left" valign="top"><a href="#SubSoil">6.4.31 SubSoil</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13588
</td></tr>
 
13589
<tr><td align="left" valign="top"><a href="#SurviveFinish">6.4.32 SurviveFinish</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13590
</td></tr>
 
13591
<tr><td align="left" valign="top"><a href="#SwampSinkTime">6.4.33 SwampSinkTime</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13592
</td></tr>
 
13593
<tr><td align="left" valign="top"><a href="#WaterSinkTime">6.4.34 WaterSinkTime</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13594
</td></tr>
 
13595
<tr><td align="left" valign="top"><a href="#Width">6.4.35 Width</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13596
</td></tr>
 
13597
<tr><td align="left" valign="top"><a href="#WormholeRange">6.4.36 WormholeRange</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13598
</td></tr>
 
13599
<tr><td align="left" valign="top"><a href="#WormholeStrength">6.4.37 WormholeStrength</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
13600
</td></tr>
 
13601
</table>
 
13602
 
 
13603
<hr size="6">
 
13604
<a name="ActorimpulseStrength"></a>
 
13605
<table cellpadding="1" cellspacing="1" border="0">
 
13606
<tr><td valign="middle" align="left">[<a href="#Global-Attributes" title="Previous section in reading order"> &lt; </a>]</td>
 
13607
<td valign="middle" align="left">[<a href="#AllowSingleOxyds" title="Next section in reading order"> &gt; </a>]</td>
 
13608
<td valign="middle" align="left"> &nbsp; </td>
 
13609
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13610
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
13611
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13612
<td valign="middle" align="left"> &nbsp; </td>
 
13613
<td valign="middle" align="left"> &nbsp; </td>
 
13614
<td valign="middle" align="left"> &nbsp; </td>
 
13615
<td valign="middle" align="left"> &nbsp; </td>
 
13616
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13617
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13618
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13619
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13620
</tr></table>
 
13621
<a name="ActorimpulseStrength-1"></a>
 
13622
<h3 class="subsection">6.4.1 ActorimpulseStrength</h3>
 
13623
 
 
13624
<p>A global scalar default factor for the actorimpulse stone bumping force. This
 
13625
global value is only used if no object specific value is set.
 
13626
</p>
 
13627
<dl compact="compact">
 
13628
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
13629
<dt> <b>Values:</b> &nbsp;&nbsp;float number</dt>
 
13630
<dt> <b>Default:</b> &nbsp;&nbsp;<code>+200.0</code></dt>
 
13631
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
13632
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#st_005factorimpulse">st_actorimpulse</a></dt>
 
13633
</dl>
 
13634
 
 
13635
<hr size="6">
 
13636
<a name="AllowSingleOxyds"></a>
 
13637
<table cellpadding="1" cellspacing="1" border="0">
 
13638
<tr><td valign="middle" align="left">[<a href="#ActorimpulseStrength" title="Previous section in reading order"> &lt; </a>]</td>
 
13639
<td valign="middle" align="left">[<a href="#AllowSuicide" title="Next section in reading order"> &gt; </a>]</td>
 
13640
<td valign="middle" align="left"> &nbsp; </td>
 
13641
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13642
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
13643
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13644
<td valign="middle" align="left"> &nbsp; </td>
 
13645
<td valign="middle" align="left"> &nbsp; </td>
 
13646
<td valign="middle" align="left"> &nbsp; </td>
 
13647
<td valign="middle" align="left"> &nbsp; </td>
 
13648
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13649
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13650
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13651
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13652
</tr></table>
 
13653
<a name="AllowSingleOxyds-1"></a>
 
13654
<h3 class="subsection">6.4.2 AllowSingleOxyds</h3>
 
13655
 
 
13656
<p>A global variable that enables the existence of single unmatched <a href="#st_005foxyd">st_oxyd</a>
 
13657
stones. Setting this variable to <code>true</code> allows you to set uneven numbers
 
13658
of oxyd stones for fixed colors. If a level deletes or adds oxyd stones during
 
13659
runtime a <code>true</code> value avoids possible problems due to temporary uneven
 
13660
oxyd stone numbers. The default <code>false</code> value causes an error message on
 
13661
detection of uneven oxyd numbers.
 
13662
</p>
 
13663
<dl compact="compact">
 
13664
<dt> <b>Type:</b> &nbsp;&nbsp;bool</dt>
 
13665
<dt> <b>Values:</b> &nbsp;&nbsp;<code>true</code>, <code>false</code></dt>
 
13666
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
13667
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
13668
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#st_005foxyd">st_oxyd</a></dt>
 
13669
</dl>
 
13670
 
 
13671
<hr size="6">
 
13672
<a name="AllowSuicide"></a>
 
13673
<table cellpadding="1" cellspacing="1" border="0">
 
13674
<tr><td valign="middle" align="left">[<a href="#AllowSingleOxyds" title="Previous section in reading order"> &lt; </a>]</td>
 
13675
<td valign="middle" align="left">[<a href="#AutoRespawn" title="Next section in reading order"> &gt; </a>]</td>
 
13676
<td valign="middle" align="left"> &nbsp; </td>
 
13677
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13678
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
13679
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13680
<td valign="middle" align="left"> &nbsp; </td>
 
13681
<td valign="middle" align="left"> &nbsp; </td>
 
13682
<td valign="middle" align="left"> &nbsp; </td>
 
13683
<td valign="middle" align="left"> &nbsp; </td>
 
13684
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13685
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13686
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13687
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13688
</tr></table>
 
13689
<a name="AllowSuicide-1"></a>
 
13690
<h3 class="subsection">6.4.3 AllowSuicide</h3>
 
13691
 
 
13692
<p>A global variable that enables the user to commit suicide with all owned
 
13693
actors by pressing &lsquo;<samp>F3</samp>&rsquo;. As this legacy feature can cause unexpected
 
13694
shortcuts, you can deny this freedom. A single actor suicide as committed by
 
13695
activation of an <a href="#it_005fspoon">it_spoon</a> is not affected by this global variable.
 
13696
</p>
 
13697
<dl compact="compact">
 
13698
<dt> <b>Type:</b> &nbsp;&nbsp;bool</dt>
 
13699
<dt> <b>Values:</b> &nbsp;&nbsp;<code>true</code>, <code>false</code></dt>
 
13700
<dt> <b>Default:</b> &nbsp;&nbsp;<code>true</code></dt>
 
13701
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
13702
<dt> <b>Support:</b> &nbsp;&nbsp;no object</dt>
 
13703
</dl>
 
13704
 
 
13705
<hr size="6">
 
13706
<a name="AutoRespawn"></a>
 
13707
<table cellpadding="1" cellspacing="1" border="0">
 
13708
<tr><td valign="middle" align="left">[<a href="#AllowSuicide" title="Previous section in reading order"> &lt; </a>]</td>
 
13709
<td valign="middle" align="left">[<a href="#ConserveLevel" title="Next section in reading order"> &gt; </a>]</td>
 
13710
<td valign="middle" align="left"> &nbsp; </td>
 
13711
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13712
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
13713
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13714
<td valign="middle" align="left"> &nbsp; </td>
 
13715
<td valign="middle" align="left"> &nbsp; </td>
 
13716
<td valign="middle" align="left"> &nbsp; </td>
 
13717
<td valign="middle" align="left"> &nbsp; </td>
 
13718
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13719
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13720
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13721
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13722
</tr></table>
 
13723
<a name="AutoRespawn-1"></a>
 
13724
<h3 class="subsection">6.4.4 AutoRespawn</h3>
 
13725
 
 
13726
<p>A global variable that determines, if in absence of an <a href="#it_005fflag">it_flag</a> drop given
 
13727
respawn position, the last recorded secure actor position should be taken
 
13728
instead of the starting position, in case the actor dies and is resurrected.
 
13729
</p>
 
13730
<p>The recorded auto respawn position will be appropriate for common actor deaths
 
13731
like sinking in <a href="#fl_005fwater">fl_water</a>, falling into <a href="#fl_005fabyss">fl_abyss</a>, hitting of
 
13732
<a href="#st_005fdeath">st_death</a>, slipping from an <a href="#it_005fstrip">it_strip</a>, being hit by an
 
13733
<a href="#it_005flaserbeam">it_laserbeam</a>. Even a jump into one these lethal destinations resurrects
 
13734
the actor onto the position from where the actor started its jump. There is no
 
13735
danger of being resurrected on floors without <a href="#adhesion-_0028floor_0029">adhesion (floor)</a>.
 
13736
</p>
 
13737
<p>The usage of <a href="#it_005fflag">it_flag</a> in combination with AutoRespawn is fully supported.
 
13738
On drop of a flag, the flag position remains the valid respawn position until
 
13739
a flag is picked up. After a pickup of the flag, what delete the flag defined
 
13740
position the AutoRespawn position gets active until a flag is dropped again.
 
13741
</p>
 
13742
<p>Deaths caused by actor collisions, <a href="#it_005fcrack">it_crack</a> and floor shattering
 
13743
explosions can lead to leathal AutoRespawn positions. Either avoid setting
 
13744
AutoRespawn to <code>true</code> in such cases or provide an <a href="#it_005fflag">it_flag</a> in such
 
13745
cases.
 
13746
</p>
 
13747
<p>Shortcuts introduced by AutoRespawn are unlikely, but not generally impossible.
 
13748
</p>
 
13749
<dl compact="compact">
 
13750
<dt> <b>Type:</b> &nbsp;&nbsp;bool</dt>
 
13751
<dt> <b>Values:</b> &nbsp;&nbsp;<code>true</code>, <code>false</code></dt>
 
13752
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
13753
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
13754
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#ac_005fmarble">ac_marble</a>, <a href="#ac_005fpearl">ac_pearl</a></dt>
 
13755
</dl>
 
13756
 
 
13757
<hr size="6">
 
13758
<a name="ConserveLevel"></a>
 
13759
<table cellpadding="1" cellspacing="1" border="0">
 
13760
<tr><td valign="middle" align="left">[<a href="#AutoRespawn" title="Previous section in reading order"> &lt; </a>]</td>
 
13761
<td valign="middle" align="left">[<a href="#CrackSpreading" title="Next section in reading order"> &gt; </a>]</td>
 
13762
<td valign="middle" align="left"> &nbsp; </td>
 
13763
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13764
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
13765
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13766
<td valign="middle" align="left"> &nbsp; </td>
 
13767
<td valign="middle" align="left"> &nbsp; </td>
 
13768
<td valign="middle" align="left"> &nbsp; </td>
 
13769
<td valign="middle" align="left"> &nbsp; </td>
 
13770
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13771
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13772
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13773
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13774
</tr></table>
 
13775
<a name="ConserveLevel-1"></a>
 
13776
<h3 class="subsection">6.4.5 ConserveLevel</h3>
 
13777
 
 
13778
<p>A global variable that determines if a dead actor will be resurrected in case of
 
13779
<a href="#it_005fextralife">it_extralife</a>s in the gamer&rsquo;s inventory.
 
13780
</p>
 
13781
<p>If <code>true</code>, dead actors attached to a player will be resurrected as long as
 
13782
extralifes are available. If a player has no living actor to control or is
 
13783
missing the actor&rsquo;s <a href="#essential">essential</a> constraints, the player is
 
13784
dead. The level may still continue if a second player is alive. If the gamer has
 
13785
an <a href="#it_005fyinyang">it_yinyang</a> in his inventory in single user mode, the control switches
 
13786
to the second player. If all players are dead, a new level game is started.
 
13787
</p>
 
13788
<p>If the conserve mode is <code>false</code>, no actors will be resurrected. As soon as
 
13789
the player is dead and the control cannot switch to another player, all dead
 
13790
actors are resurrected by using extralifes, and the level is restarted without
 
13791
finishing the level game.
 
13792
</p>
 
13793
<p>Use <code>false</code> if the level can either be not solved in case of resurrected
 
13794
actors or would provide a major shortcut. In all other cases, mode <code>true</code>
 
13795
with proper usage of actors <a href="#essential">essential</a> constraints will be preferable.
 
13796
</p>
 
13797
<dl compact="compact">
 
13798
<dt> <b>Type:</b> &nbsp;&nbsp;bool</dt>
 
13799
<dt> <b>Values:</b> &nbsp;&nbsp;<code>true</code>, <code>false</code></dt>
 
13800
<dt> <b>Default:</b> &nbsp;&nbsp;<code>true</code></dt>
 
13801
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
13802
<dt> <b>Support:</b> &nbsp;&nbsp;no objects</dt>
 
13803
</dl>
 
13804
 
 
13805
<hr size="6">
 
13806
<a name="CrackSpreading"></a>
 
13807
<table cellpadding="1" cellspacing="1" border="0">
 
13808
<tr><td valign="middle" align="left">[<a href="#ConserveLevel" title="Previous section in reading order"> &lt; </a>]</td>
 
13809
<td valign="middle" align="left">[<a href="#CreatingPreview" title="Next section in reading order"> &gt; </a>]</td>
 
13810
<td valign="middle" align="left"> &nbsp; </td>
 
13811
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13812
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
13813
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13814
<td valign="middle" align="left"> &nbsp; </td>
 
13815
<td valign="middle" align="left"> &nbsp; </td>
 
13816
<td valign="middle" align="left"> &nbsp; </td>
 
13817
<td valign="middle" align="left"> &nbsp; </td>
 
13818
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13819
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13820
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13821
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13822
</tr></table>
 
13823
<a name="CrackSpreading-1"></a>
 
13824
<h3 class="subsection">6.4.6 CrackSpreading</h3>
 
13825
 
 
13826
<p>A global default value denoting the probability that a brittle floor plate, that
 
13827
is a floor with an <a href="#it_005fcrack">it_crack</a> on top, causes direct neighboring floors to
 
13828
either be marked with an invisible crack or to toggle such invisible cracks to
 
13829
a small visible cracks. A value of <code>1.0</code> ensures that the crack spreads to
 
13830
the direct neighbors, a value of <code>0.0</code> prohibits the spreading to neighbor
 
13831
grids. Note that even if crack spreading is prohibited, existing cracks on
 
13832
neighbor grids may continue disintegrating due to their <a href="#Fragility">Fragility</a>. For
 
13833
more details see <a href="#it_005fcrack">it_crack</a>.
 
13834
</p>
 
13835
<dl compact="compact">
 
13836
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
13837
<dt> <b>Values:</b> &nbsp;&nbsp;float number between <code>0.0</code> and <code>1.0</code></dt>
 
13838
<dt> <b>Default:</b> &nbsp;&nbsp;<code>0.5</code></dt>
 
13839
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
13840
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#it_005fcrack">it_crack</a></dt>
 
13841
</dl>
 
13842
 
 
13843
<hr size="6">
 
13844
<a name="CreatingPreview"></a>
 
13845
<table cellpadding="1" cellspacing="1" border="0">
 
13846
<tr><td valign="middle" align="left">[<a href="#CrackSpreading" title="Previous section in reading order"> &lt; </a>]</td>
 
13847
<td valign="middle" align="left">[<a href="#ElectricStrength" title="Next section in reading order"> &gt; </a>]</td>
 
13848
<td valign="middle" align="left"> &nbsp; </td>
 
13849
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13850
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
13851
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13852
<td valign="middle" align="left"> &nbsp; </td>
 
13853
<td valign="middle" align="left"> &nbsp; </td>
 
13854
<td valign="middle" align="left"> &nbsp; </td>
 
13855
<td valign="middle" align="left"> &nbsp; </td>
 
13856
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13857
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13858
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13859
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13860
</tr></table>
 
13861
<a name="CreatingPreview-1"></a>
 
13862
<h3 class="subsection">6.4.7 CreatingPreview</h3>
 
13863
 
 
13864
<p>A global read only variable that indicates if the current level load is just for
 
13865
creating a preview thumbnail of the level or a real game play. If &lsquo;<samp>true</samp>&rsquo;,
 
13866
you can, e.g., change the start-position of the main actor to display another
 
13867
part of the level in the preview, or hide objects from it. When changing the
 
13868
initial position, it might be advantageous to also set the
 
13869
<a href="#Display-Follow-Strategy">Display Follow Strategy</a> to permanent smooth scrolling:
 
13870
</p>
 
13871
<table><tr><td>&nbsp;</td><td><pre class="example">if wo[&quot;CreatingPreview&quot;] then
 
13872
    wo[&quot;FollowGrid&quot;] = false
 
13873
    wo[&quot;FollowMethod&quot;] = FOLLOW_SCROLL
 
13874
end
 
13875
</pre></td></tr></table>
 
13876
 
 
13877
<dl compact="compact">
 
13878
<dt> <b>Type:</b> &nbsp;&nbsp;bool</dt>
 
13879
<dt> <b>Values:</b> &nbsp;&nbsp;<code>true</code>, <code>false</code></dt>
 
13880
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
13881
<dt> <b>Access:</b> &nbsp;&nbsp;read only</dt>
 
13882
<dt> <b>Support:</b> &nbsp;&nbsp;object independent</dt>
 
13883
</dl>
 
13884
 
 
13885
<hr size="6">
 
13886
<a name="ElectricStrength"></a>
 
13887
<table cellpadding="1" cellspacing="1" border="0">
 
13888
<tr><td valign="middle" align="left">[<a href="#CreatingPreview" title="Previous section in reading order"> &lt; </a>]</td>
 
13889
<td valign="middle" align="left">[<a href="#ExtralifeGlasses" title="Next section in reading order"> &gt; </a>]</td>
 
13890
<td valign="middle" align="left"> &nbsp; </td>
 
13891
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13892
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
13893
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13894
<td valign="middle" align="left"> &nbsp; </td>
 
13895
<td valign="middle" align="left"> &nbsp; </td>
 
13896
<td valign="middle" align="left"> &nbsp; </td>
 
13897
<td valign="middle" align="left"> &nbsp; </td>
 
13898
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13899
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13900
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13901
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13902
</tr></table>
 
13903
<a name="ElectricStrength-1"></a>
 
13904
<h3 class="subsection">6.4.8 ElectricStrength</h3>
 
13905
 
 
13906
<p>A global scalar default factor for electrical forces. Positive numbers result in
 
13907
attracting forces for opposite charges and repelling forces for equal signed
 
13908
charges. Where as negative numbers result in repelling forces for opposite
 
13909
charges and attracting forces for equal signed charges. This global value is
 
13910
always multiplied by the charge load of the affected actors. The actor&rsquo;s charge
 
13911
load usually results from hits of <a href="#st_005fcharge">st_charge</a>.
 
13912
</p>
 
13913
<dl compact="compact">
 
13914
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
13915
<dt> <b>Values:</b> &nbsp;&nbsp;float number</dt>
 
13916
<dt> <b>Default:</b> &nbsp;&nbsp;<code>15.0</code></dt>
 
13917
<dd><p>Positive number are attracting, negative numbers are repelling.
 
13918
</p></dd>
 
13919
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
13920
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#Actor-Objects">Actor Objects</a></dt>
 
13921
</dl>
 
13922
 
 
13923
<hr size="6">
 
13924
<a name="ExtralifeGlasses"></a>
 
13925
<table cellpadding="1" cellspacing="1" border="0">
 
13926
<tr><td valign="middle" align="left">[<a href="#ElectricStrength" title="Previous section in reading order"> &lt; </a>]</td>
 
13927
<td valign="middle" align="left">[<a href="#FallenPuzzle" title="Next section in reading order"> &gt; </a>]</td>
 
13928
<td valign="middle" align="left"> &nbsp; </td>
 
13929
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13930
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
13931
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13932
<td valign="middle" align="left"> &nbsp; </td>
 
13933
<td valign="middle" align="left"> &nbsp; </td>
 
13934
<td valign="middle" align="left"> &nbsp; </td>
 
13935
<td valign="middle" align="left"> &nbsp; </td>
 
13936
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13937
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13938
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13939
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13940
</tr></table>
 
13941
<a name="ExtralifeGlasses-1"></a>
 
13942
<h3 class="subsection">6.4.9 ExtralifeGlasses</h3>
 
13943
 
 
13944
<p>A global variable that defines the <a href="#it_005fglasses">it_glasses</a> type that is generated on
 
13945
the laser light conversion of an <a href="#it_005fextralife">it_extralife</a>
 
13946
</p>
 
13947
<dl compact="compact">
 
13948
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
13949
<dt> <b>Values:</b> &nbsp;&nbsp;positive integer number</dt>
 
13950
<dd><p>A sum out of the constants &lsquo;<samp>SPOT_DEATH</samp>&rsquo;, &lsquo;<samp>SPOT_HOLLOW</samp>&rsquo;,
 
13951
&lsquo;<samp>SPOT_ACTORIMPULSE</samp>&rsquo;, &lsquo;<samp>SPOT_SENSOR</samp>&rsquo;, &lsquo;<samp>SPOT_LIGHTPASSENGER</samp>&rsquo;,
 
13952
&lsquo;<samp>SPOT_TRAP</samp>&rsquo;
 
13953
</p></dd>
 
13954
<dt> <b>Default:</b> &nbsp;&nbsp;<code>SPOT_DEATH + SPOT_HOLLOW + SPOT_LIGHTPASSENGER</code></dt>
 
13955
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
13956
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#it_005fextralife">it_extralife</a></dt>
 
13957
</dl>
 
13958
 
 
13959
<hr size="6">
 
13960
<a name="FallenPuzzle"></a>
 
13961
<table cellpadding="1" cellspacing="1" border="0">
 
13962
<tr><td valign="middle" align="left">[<a href="#ExtralifeGlasses" title="Previous section in reading order"> &lt; </a>]</td>
 
13963
<td valign="middle" align="left">[<a href="#FollowAction" title="Next section in reading order"> &gt; </a>]</td>
 
13964
<td valign="middle" align="left"> &nbsp; </td>
 
13965
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
13966
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
13967
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
13968
<td valign="middle" align="left"> &nbsp; </td>
 
13969
<td valign="middle" align="left"> &nbsp; </td>
 
13970
<td valign="middle" align="left"> &nbsp; </td>
 
13971
<td valign="middle" align="left"> &nbsp; </td>
 
13972
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
13973
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
13974
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
13975
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
13976
</tr></table>
 
13977
<a name="FallenPuzzle-1"></a>
 
13978
<h3 class="subsection">6.4.10 FallenPuzzle</h3>
 
13979
 
 
13980
<p>A global object replacement kind for <a href="#st_005fpuzzle">st_puzzle</a>s fallen into <a href="#fl_005fwater">fl_water</a>
 
13981
or <a href="#fl_005fabyss">fl_abyss</a>. Besides any floor kind you can use any key of a tile
 
13982
declaration preceeded by an equal sign <code>'='</code>. By this second method you
 
13983
can use attributed floor kinds with special values for friction and adhesion.
 
13984
</p>
 
13985
<p>Additionally you can set this global &lsquo;<samp>FallenPuzzle</samp>&rsquo; attribute to
 
13986
<code>&quot;it_pipe&quot;</code> or <code>&quot;it_stip&quot;</code>. In both cases fallen puzzle objects will
 
13987
be replaced by items of the given class with the identical connections as the
 
13988
fallen puzzle stones. Just in case that an item of the given class is already
 
13989
present at one of the affected grid positions the connections of these will be
 
13990
adjusted in a special way. An existing <code>&quot;it_pipe&quot;</code> remains unchanged, but
 
13991
an <code>&quot;it_stip&quot;</code> will add the connections of the fallen puzzle to its own
 
13992
connections.
 
13993
</p>
 
13994
<dl compact="compact">
 
13995
<dt> <b>Type:</b> &nbsp;&nbsp;string</dt>
 
13996
<dt> <b>Values:</b> &nbsp;&nbsp;any floor object kind, <code>&quot;it_strip&quot;</code>, <code>&quot;it_pipe&quot;</code> or <code>&quot;=key&quot;</code>, with key being a valid tile key</dt>
 
13997
<dt> <b>Default:</b> &nbsp;&nbsp;<code>&quot;fl_gray&quot;</code></dt>
 
13998
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
13999
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#st_005fpuzzle">st_puzzle</a></dt>
 
14000
</dl>
 
14001
 
 
14002
<hr size="6">
 
14003
<a name="FollowAction"></a>
 
14004
<table cellpadding="1" cellspacing="1" border="0">
 
14005
<tr><td valign="middle" align="left">[<a href="#FallenPuzzle" title="Previous section in reading order"> &lt; </a>]</td>
 
14006
<td valign="middle" align="left">[<a href="#FollowGrid" title="Next section in reading order"> &gt; </a>]</td>
 
14007
<td valign="middle" align="left"> &nbsp; </td>
 
14008
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14009
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14010
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14011
<td valign="middle" align="left"> &nbsp; </td>
 
14012
<td valign="middle" align="left"> &nbsp; </td>
 
14013
<td valign="middle" align="left"> &nbsp; </td>
 
14014
<td valign="middle" align="left"> &nbsp; </td>
 
14015
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14016
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14017
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14018
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14019
</tr></table>
 
14020
<a name="FollowAction-1"></a>
 
14021
<h3 class="subsection">6.4.11 FollowAction</h3>
 
14022
 
 
14023
<p>A global variable that describes the action of the display on relocation. This
 
14024
attribute is introduced for future extensions, but is currently just partially
 
14025
supported. Just the values listed below are used. Please use this attribute
 
14026
just as explained in <a href="#Display-Follow-Strategy">Display Follow Strategy</a>.
 
14027
</p>
 
14028
<dl compact="compact">
 
14029
<dt> <b>Type:</b> &nbsp;&nbsp;number or position</dt>
 
14030
<dt> <b>Values:</b> &nbsp;&nbsp;<code>0</code>, <code>FOLLOW_FULLSCREEN</code>, <code>HALFSCREEN</code></dt>
 
14031
<dd><p>The distance of display readjustment. Positions are used to supply different
 
14032
values for x and y. The value &lsquo;<samp>{19, 12}</samp>&rsquo; is a standard full screen move.
 
14033
The value &lsquo;<samp>{9.5, 6}</samp>&rsquo; is a standard half screen move. A value &lsquo;<samp>0</samp>&rsquo;
 
14034
is a minimal smooth move or the default value for grid based moves.
 
14035
</p></dd>
 
14036
<dt> <b>Default:</b> &nbsp;&nbsp;<code>{19, 12}</code></dt>
 
14037
<dd><p>Actually the default is mode based (see section <a href="#Display-Follow-Strategy">Display Follow Strategy</a>).
 
14038
</p></dd>
 
14039
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14040
<dt> <b>Support:</b> &nbsp;&nbsp;no objects</dt>
 
14041
</dl>
 
14042
 
 
14043
 
 
14044
<hr size="6">
 
14045
<a name="FollowGrid"></a>
 
14046
<table cellpadding="1" cellspacing="1" border="0">
 
14047
<tr><td valign="middle" align="left">[<a href="#FollowAction" title="Previous section in reading order"> &lt; </a>]</td>
 
14048
<td valign="middle" align="left">[<a href="#FollowMethod" title="Next section in reading order"> &gt; </a>]</td>
 
14049
<td valign="middle" align="left"> &nbsp; </td>
 
14050
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14051
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14052
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14053
<td valign="middle" align="left"> &nbsp; </td>
 
14054
<td valign="middle" align="left"> &nbsp; </td>
 
14055
<td valign="middle" align="left"> &nbsp; </td>
 
14056
<td valign="middle" align="left"> &nbsp; </td>
 
14057
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14058
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14059
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14060
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14061
</tr></table>
 
14062
<a name="FollowGrid-1"></a>
 
14063
<h3 class="subsection">6.4.12 FollowGrid</h3>
 
14064
 
 
14065
<p>A global variable that determines if the display is fixed in its static
 
14066
positions to grids or if it can be scrolled to any pixel position
 
14067
(see section <a href="#Display-Follow-Strategy">Display Follow Strategy</a>).
 
14068
</p>
 
14069
<dl compact="compact">
 
14070
<dt> <b>Type:</b> &nbsp;&nbsp;bool</dt>
 
14071
<dt> <b>Values:</b> &nbsp;&nbsp;<code>true</code>, <code>false</code></dt>
 
14072
<dt> <b>Default:</b> &nbsp;&nbsp;<code>true</code></dt>
 
14073
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14074
<dt> <b>Support:</b> &nbsp;&nbsp;no objects</dt>
 
14075
</dl>
 
14076
 
 
14077
<hr size="6">
 
14078
<a name="FollowMethod"></a>
 
14079
<table cellpadding="1" cellspacing="1" border="0">
 
14080
<tr><td valign="middle" align="left">[<a href="#FollowGrid" title="Previous section in reading order"> &lt; </a>]</td>
 
14081
<td valign="middle" align="left">[<a href="#FollowThreshold" title="Next section in reading order"> &gt; </a>]</td>
 
14082
<td valign="middle" align="left"> &nbsp; </td>
 
14083
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14084
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14085
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14086
<td valign="middle" align="left"> &nbsp; </td>
 
14087
<td valign="middle" align="left"> &nbsp; </td>
 
14088
<td valign="middle" align="left"> &nbsp; </td>
 
14089
<td valign="middle" align="left"> &nbsp; </td>
 
14090
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14091
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14092
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14093
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14094
</tr></table>
 
14095
<a name="FollowMethod-1"></a>
 
14096
<h3 class="subsection">6.4.13 FollowMethod</h3>
 
14097
 
 
14098
<p>A global variable that describes the method how the display moves, either not
 
14099
at all, by pixelwise scrolling, or by flipping to another screen or region
 
14100
(see section <a href="#Display-Follow-Strategy">Display Follow Strategy</a>).
 
14101
</p>
 
14102
<dl compact="compact">
 
14103
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
14104
<dt> <b>Values:</b> &nbsp;&nbsp;<code>FOLLOW_NO</code>, <code>FOLLOW_SCROLL</code>, <code>FOLLOW_FLIP</code></dt>
 
14105
<dt> <b>Default:</b> &nbsp;&nbsp;<code>FOLLOW_FLIP</code></dt>
 
14106
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14107
<dt> <b>Support:</b> &nbsp;&nbsp;no objects</dt>
 
14108
</dl>
 
14109
 
 
14110
<hr size="6">
 
14111
<a name="FollowThreshold"></a>
 
14112
<table cellpadding="1" cellspacing="1" border="0">
 
14113
<tr><td valign="middle" align="left">[<a href="#FollowMethod" title="Previous section in reading order"> &lt; </a>]</td>
 
14114
<td valign="middle" align="left">[<a href="#Fragility" title="Next section in reading order"> &gt; </a>]</td>
 
14115
<td valign="middle" align="left"> &nbsp; </td>
 
14116
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14117
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14118
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14119
<td valign="middle" align="left"> &nbsp; </td>
 
14120
<td valign="middle" align="left"> &nbsp; </td>
 
14121
<td valign="middle" align="left"> &nbsp; </td>
 
14122
<td valign="middle" align="left"> &nbsp; </td>
 
14123
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14124
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14125
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14126
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14127
</tr></table>
 
14128
<a name="FollowThreshold-1"></a>
 
14129
<h3 class="subsection">6.4.14 FollowThreshold</h3>
 
14130
 
 
14131
<p>A global variable that describes the threshold at which a crossing active marble
 
14132
triggers the display to relocate. It is given as the distance to the screen
 
14133
boundary (see section <a href="#Display-Follow-Strategy">Display Follow Strategy</a>).
 
14134
</p>
 
14135
<dl compact="compact">
 
14136
<dt> <b>Type:</b> &nbsp;&nbsp;number or position</dt>
 
14137
<dt> <b>Values:</b> &nbsp;&nbsp;0 or positive number, or a pair of two positive numbers</dt>
 
14138
<dd><p>The distance from the screen boundary at which the displays readjusts. Positions
 
14139
are used to supply different values for x and y. All values need to be less
 
14140
than half of the screen size.
 
14141
</p></dd>
 
14142
<dt> <b>Default:</b> &nbsp;&nbsp;<code>0.5</code></dt>
 
14143
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14144
<dt> <b>Support:</b> &nbsp;&nbsp;no objects</dt>
 
14145
</dl>
 
14146
 
 
14147
<hr size="6">
 
14148
<a name="Fragility"></a>
 
14149
<table cellpadding="1" cellspacing="1" border="0">
 
14150
<tr><td valign="middle" align="left">[<a href="#FollowThreshold" title="Previous section in reading order"> &lt; </a>]</td>
 
14151
<td valign="middle" align="left">[<a href="#FrictionStrength" title="Next section in reading order"> &gt; </a>]</td>
 
14152
<td valign="middle" align="left"> &nbsp; </td>
 
14153
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14154
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14155
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14156
<td valign="middle" align="left"> &nbsp; </td>
 
14157
<td valign="middle" align="left"> &nbsp; </td>
 
14158
<td valign="middle" align="left"> &nbsp; </td>
 
14159
<td valign="middle" align="left"> &nbsp; </td>
 
14160
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14161
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14162
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14163
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14164
</tr></table>
 
14165
<a name="Fragility-1"></a>
 
14166
<h3 class="subsection">6.4.15 Fragility</h3>
 
14167
 
 
14168
<p>A global default value denoting the probability that a brittle floor plate, that
 
14169
is a floor with an <a href="#it_005fcrack">it_crack</a> on top, continues to disintegrate on events
 
14170
like an actor entering, passing a neighboring <a href="#it_005fcrack">it_crack</a>, nearby explosions
 
14171
or fire heating. A value of <code>1.0</code> ensures that the crack continues to
 
14172
disintegrates on these events, a value of <code>0.0</code> prohibits visible cracks
 
14173
to get larger. This default is superseded by <a href="#fragility-_0028floor_0029">fragility (floor)</a> and
 
14174
<a href="#it_005fcrack">it_crack</a> specific values.
 
14175
</p>
 
14176
<dl compact="compact">
 
14177
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
14178
<dt> <b>Values:</b> &nbsp;&nbsp;float number between <code>0.0</code> and <code>1.0</code></dt>
 
14179
<dt> <b>Default:</b> &nbsp;&nbsp;<code>1.0</code></dt>
 
14180
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14181
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#it_005fcrack">it_crack</a> and <a href="#Floor-Objects">Floor Objects</a></dt>
 
14182
</dl>
 
14183
 
 
14184
<hr size="6">
 
14185
<a name="FrictionStrength"></a>
 
14186
<table cellpadding="1" cellspacing="1" border="0">
 
14187
<tr><td valign="middle" align="left">[<a href="#Fragility" title="Previous section in reading order"> &lt; </a>]</td>
 
14188
<td valign="middle" align="left">[<a href="#GlobalForce" title="Next section in reading order"> &gt; </a>]</td>
 
14189
<td valign="middle" align="left"> &nbsp; </td>
 
14190
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14191
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14192
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14193
<td valign="middle" align="left"> &nbsp; </td>
 
14194
<td valign="middle" align="left"> &nbsp; </td>
 
14195
<td valign="middle" align="left"> &nbsp; </td>
 
14196
<td valign="middle" align="left"> &nbsp; </td>
 
14197
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14198
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14199
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14200
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14201
</tr></table>
 
14202
<a name="FrictionStrength-1"></a>
 
14203
<h3 class="subsection">6.4.16 FrictionStrength</h3>
 
14204
 
 
14205
<p>A global scalar default factor for floor friction values. This global value is
 
14206
always multiplied by the floor specific friction on calculation of the friction
 
14207
force applied to actors.
 
14208
</p>
 
14209
<dl compact="compact">
 
14210
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
14211
<dt> <b>Values:</b> &nbsp;&nbsp;float number</dt>
 
14212
<dt> <b>Default:</b> &nbsp;&nbsp;<code>1.0</code></dt>
 
14213
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14214
<dt> <b>Support:</b> &nbsp;&nbsp;all floors</dt>
 
14215
</dl>
 
14216
 
 
14217
<hr size="6">
 
14218
<a name="GlobalForce"></a>
 
14219
<table cellpadding="1" cellspacing="1" border="0">
 
14220
<tr><td valign="middle" align="left">[<a href="#FrictionStrength" title="Previous section in reading order"> &lt; </a>]</td>
 
14221
<td valign="middle" align="left">[<a href="#Height" title="Next section in reading order"> &gt; </a>]</td>
 
14222
<td valign="middle" align="left"> &nbsp; </td>
 
14223
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14224
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14225
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14226
<td valign="middle" align="left"> &nbsp; </td>
 
14227
<td valign="middle" align="left"> &nbsp; </td>
 
14228
<td valign="middle" align="left"> &nbsp; </td>
 
14229
<td valign="middle" align="left"> &nbsp; </td>
 
14230
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14231
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14232
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14233
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14234
</tr></table>
 
14235
<a name="GlobalForce-1"></a>
 
14236
<h3 class="subsection">6.4.17 GlobalForce</h3>
 
14237
 
 
14238
<p>A global constant force that is added to every actor on every grid. The force
 
14239
is given as a vector constant by a value of type <a href="#Position">Position</a>.
 
14240
</p>
 
14241
<dl compact="compact">
 
14242
<dt> <b>Type:</b> &nbsp;&nbsp;<a href="#Position">Position</a></dt>
 
14243
<dt> <b>Values:</b> &nbsp;&nbsp;pair of float numbers</dt>
 
14244
<dt> <b>Default:</b> &nbsp;&nbsp;<code>po(0.0, 0.0)</code></dt>
 
14245
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14246
<dt> <b>Support:</b> &nbsp;&nbsp;all floors</dt>
 
14247
</dl>
 
14248
 
 
14249
<hr size="6">
 
14250
<a name="Height"></a>
 
14251
<table cellpadding="1" cellspacing="1" border="0">
 
14252
<tr><td valign="middle" align="left">[<a href="#GlobalForce" title="Previous section in reading order"> &lt; </a>]</td>
 
14253
<td valign="middle" align="left">[<a href="#InfiniteReincarnation" title="Next section in reading order"> &gt; </a>]</td>
 
14254
<td valign="middle" align="left"> &nbsp; </td>
 
14255
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14256
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14257
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14258
<td valign="middle" align="left"> &nbsp; </td>
 
14259
<td valign="middle" align="left"> &nbsp; </td>
 
14260
<td valign="middle" align="left"> &nbsp; </td>
 
14261
<td valign="middle" align="left"> &nbsp; </td>
 
14262
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14263
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14264
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14265
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14266
</tr></table>
 
14267
<a name="Height-1"></a>
 
14268
<h3 class="subsection">6.4.18 Height</h3>
 
14269
 
 
14270
<p>A global read only variable reports the height of the world in grid units.
 
14271
This is set by the initial world constructor call
 
14272
(see section <a href="#World-Creation">World Creation</a>).
 
14273
</p>
 
14274
<dl compact="compact">
 
14275
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
14276
<dt> <b>Values:</b> &nbsp;&nbsp;positive integer number</dt>
 
14277
<dt> <b>Default:</b> &nbsp;&nbsp;<code>?</code></dt>
 
14278
<dt> <b>Access:</b> &nbsp;&nbsp;read only</dt>
 
14279
<dt> <b>Support:</b> &nbsp;&nbsp;object independent</dt>
 
14280
</dl>
 
14281
 
 
14282
<hr size="6">
 
14283
<a name="InfiniteReincarnation"></a>
 
14284
<table cellpadding="1" cellspacing="1" border="0">
 
14285
<tr><td valign="middle" align="left">[<a href="#Height" title="Previous section in reading order"> &lt; </a>]</td>
 
14286
<td valign="middle" align="left">[<a href="#IsDifficult" title="Next section in reading order"> &gt; </a>]</td>
 
14287
<td valign="middle" align="left"> &nbsp; </td>
 
14288
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14289
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14290
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14291
<td valign="middle" align="left"> &nbsp; </td>
 
14292
<td valign="middle" align="left"> &nbsp; </td>
 
14293
<td valign="middle" align="left"> &nbsp; </td>
 
14294
<td valign="middle" align="left"> &nbsp; </td>
 
14295
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14296
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14297
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14298
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14299
</tr></table>
 
14300
<a name="InfiniteReincarnation-1"></a>
 
14301
<h3 class="subsection">6.4.19 InfiniteReincarnation</h3>
 
14302
 
 
14303
<p>A global variable that switches off the <a href="#it_005fextralife">it_extralife</a> consumption on
 
14304
resurrection of a dead actor. Usually the number of extralifes is counted,
 
14305
the items are explicitly set or an <a href="#st_005fdispenser">st_dispenser</a> for extralifes is located
 
14306
at strategic positions. The main purpose of this flag is the support of easy
 
14307
modes for very lethal levels, that should give the user the opportunity to
 
14308
exercise difficult patterns. Usage of this flag for the regular difficult mode
 
14309
is deprecated.
 
14310
</p>
 
14311
<dl compact="compact">
 
14312
<dt> <b>Type:</b> &nbsp;&nbsp;bool</dt>
 
14313
<dt> <b>Values:</b> &nbsp;&nbsp;<code>true</code>, <code>false</code></dt>
 
14314
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
14315
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14316
<dt> <b>Support:</b> &nbsp;&nbsp;object independent</dt>
 
14317
</dl>
 
14318
 
 
14319
<hr size="6">
 
14320
<a name="IsDifficult"></a>
 
14321
<table cellpadding="1" cellspacing="1" border="0">
 
14322
<tr><td valign="middle" align="left">[<a href="#InfiniteReincarnation" title="Previous section in reading order"> &lt; </a>]</td>
 
14323
<td valign="middle" align="left">[<a href="#MagnetRange" title="Next section in reading order"> &gt; </a>]</td>
 
14324
<td valign="middle" align="left"> &nbsp; </td>
 
14325
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14326
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14327
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14328
<td valign="middle" align="left"> &nbsp; </td>
 
14329
<td valign="middle" align="left"> &nbsp; </td>
 
14330
<td valign="middle" align="left"> &nbsp; </td>
 
14331
<td valign="middle" align="left"> &nbsp; </td>
 
14332
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14333
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14334
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14335
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14336
</tr></table>
 
14337
<a name="IsDifficult-1"></a>
 
14338
<h3 class="subsection">6.4.20 IsDifficult</h3>
 
14339
 
 
14340
<p>A global read only variable that defines the current difficulty mode selected
 
14341
by the user. All differences of easy and difficult mode within the level should
 
14342
be coded solely in dependence of this flag. If a level that supports an easy
 
14343
mode the author needs to declare it in the XML header in the element
 
14344
<a href="#g_t_003cmodes_003e">&lt;modes&gt;</a>.
 
14345
</p>
 
14346
<dl compact="compact">
 
14347
<dt> <b>Type:</b> &nbsp;&nbsp;bool</dt>
 
14348
<dt> <b>Values:</b> &nbsp;&nbsp;<code>true</code>, <code>false</code></dt>
 
14349
<dt> <b>Default:</b> &nbsp;&nbsp;<code>true</code></dt>
 
14350
<dt> <b>Access:</b> &nbsp;&nbsp;read only</dt>
 
14351
<dt> <b>Support:</b> &nbsp;&nbsp;object independent</dt>
 
14352
</dl>
 
14353
 
 
14354
<hr size="6">
 
14355
<a name="MagnetRange"></a>
 
14356
<table cellpadding="1" cellspacing="1" border="0">
 
14357
<tr><td valign="middle" align="left">[<a href="#IsDifficult" title="Previous section in reading order"> &lt; </a>]</td>
 
14358
<td valign="middle" align="left">[<a href="#MagnetStrength" title="Next section in reading order"> &gt; </a>]</td>
 
14359
<td valign="middle" align="left"> &nbsp; </td>
 
14360
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14361
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14362
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14363
<td valign="middle" align="left"> &nbsp; </td>
 
14364
<td valign="middle" align="left"> &nbsp; </td>
 
14365
<td valign="middle" align="left"> &nbsp; </td>
 
14366
<td valign="middle" align="left"> &nbsp; </td>
 
14367
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14368
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14369
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14370
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14371
</tr></table>
 
14372
<a name="MagnetRange-1"></a>
 
14373
<h3 class="subsection">6.4.21 MagnetRange</h3>
 
14374
 
 
14375
<p>A global default distance up to which magnets apply forces to actors. This
 
14376
global value is only used if no object specific value is set.
 
14377
</p>
 
14378
<dl compact="compact">
 
14379
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
14380
<dt> <b>Values:</b> &nbsp;&nbsp;positive float number or zero</dt>
 
14381
<dt> <b>Default:</b> &nbsp;&nbsp;<code>10.0</code></dt>
 
14382
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14383
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#it_005fmagnet">it_magnet</a></dt>
 
14384
</dl>
 
14385
 
 
14386
<hr size="6">
 
14387
<a name="MagnetStrength"></a>
 
14388
<table cellpadding="1" cellspacing="1" border="0">
 
14389
<tr><td valign="middle" align="left">[<a href="#MagnetRange" title="Previous section in reading order"> &lt; </a>]</td>
 
14390
<td valign="middle" align="left">[<a href="#MaxOxydColor" title="Next section in reading order"> &gt; </a>]</td>
 
14391
<td valign="middle" align="left"> &nbsp; </td>
 
14392
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14393
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14394
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14395
<td valign="middle" align="left"> &nbsp; </td>
 
14396
<td valign="middle" align="left"> &nbsp; </td>
 
14397
<td valign="middle" align="left"> &nbsp; </td>
 
14398
<td valign="middle" align="left"> &nbsp; </td>
 
14399
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14400
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14401
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14402
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14403
</tr></table>
 
14404
<a name="MagnetStrength-1"></a>
 
14405
<h3 class="subsection">6.4.22 MagnetStrength</h3>
 
14406
 
 
14407
<p>A global scalar default factor for magnet forces. Positive numbers are
 
14408
attracting forces where as negative numbers are repelling forces. This global
 
14409
value is only used if no object specific value is set.
 
14410
</p>
 
14411
<dl compact="compact">
 
14412
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
14413
<dt> <b>Values:</b> &nbsp;&nbsp;float number</dt>
 
14414
<dt> <b>Default:</b> &nbsp;&nbsp;<code>30.0</code></dt>
 
14415
<dd><p>Positive number are attracting, negative numbers are repelling.
 
14416
</p></dd>
 
14417
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14418
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#it_005fmagnet">it_magnet</a></dt>
 
14419
</dl>
 
14420
 
 
14421
<hr size="6">
 
14422
<a name="MaxOxydColor"></a>
 
14423
<table cellpadding="1" cellspacing="1" border="0">
 
14424
<tr><td valign="middle" align="left">[<a href="#MagnetStrength" title="Previous section in reading order"> &lt; </a>]</td>
 
14425
<td valign="middle" align="left">[<a href="#MeditationStrength" title="Next section in reading order"> &gt; </a>]</td>
 
14426
<td valign="middle" align="left"> &nbsp; </td>
 
14427
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14428
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14429
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14430
<td valign="middle" align="left"> &nbsp; </td>
 
14431
<td valign="middle" align="left"> &nbsp; </td>
 
14432
<td valign="middle" align="left"> &nbsp; </td>
 
14433
<td valign="middle" align="left"> &nbsp; </td>
 
14434
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14435
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14436
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14437
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14438
</tr></table>
 
14439
<a name="MaxOxydColor-1"></a>
 
14440
<h3 class="subsection">6.4.23 MaxOxydColor</h3>
 
14441
 
 
14442
<p>A global variable that limits the number of colors assigned to autocolored
 
14443
<a href="#st_005foxyd">st_oxyd</a>. Be careful with increasing this value beyond its default.
 
14444
</p>
 
14445
<dl compact="compact">
 
14446
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
14447
<dt> <b>Values:</b> &nbsp;&nbsp;<code>OXYD_BLUE</code>, ... <code>OXYD_BROWN</code></dt>
 
14448
<dt> <b>Default:</b> &nbsp;&nbsp;<code>OXYD_BLACK</code></dt>
 
14449
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14450
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#st_005foxyd">st_oxyd</a></dt>
 
14451
</dl>
 
14452
 
 
14453
<hr size="6">
 
14454
<a name="MeditationStrength"></a>
 
14455
<table cellpadding="1" cellspacing="1" border="0">
 
14456
<tr><td valign="middle" align="left">[<a href="#MaxOxydColor" title="Previous section in reading order"> &lt; </a>]</td>
 
14457
<td valign="middle" align="left">[<a href="#ProvideExtralifes" title="Next section in reading order"> &gt; </a>]</td>
 
14458
<td valign="middle" align="left"> &nbsp; </td>
 
14459
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14460
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14461
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14462
<td valign="middle" align="left"> &nbsp; </td>
 
14463
<td valign="middle" align="left"> &nbsp; </td>
 
14464
<td valign="middle" align="left"> &nbsp; </td>
 
14465
<td valign="middle" align="left"> &nbsp; </td>
 
14466
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14467
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14468
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14469
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14470
</tr></table>
 
14471
<a name="MeditationStrength-1"></a>
 
14472
<h3 class="subsection">6.4.24 MeditationStrength</h3>
 
14473
 
 
14474
<p>A global scalar default factor for <a href="#it_005fmeditation">it_meditation</a> slope forces. Positive
 
14475
numbers are downhill forces that let actors roll into dents and hollows and roll
 
14476
down from hills and bumps.
 
14477
</p>
 
14478
<dl compact="compact">
 
14479
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
14480
<dt> <b>Values:</b> &nbsp;&nbsp;float number</dt>
 
14481
<dt> <b>Default:</b> &nbsp;&nbsp;<code>1.0</code></dt>
 
14482
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14483
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#it_005fmeditation">it_meditation</a></dt>
 
14484
</dl>
 
14485
 
 
14486
<hr size="6">
 
14487
<a name="ProvideExtralifes"></a>
 
14488
<table cellpadding="1" cellspacing="1" border="0">
 
14489
<tr><td valign="middle" align="left">[<a href="#MeditationStrength" title="Previous section in reading order"> &lt; </a>]</td>
 
14490
<td valign="middle" align="left">[<a href="#RubberViolationStrength" title="Next section in reading order"> &gt; </a>]</td>
 
14491
<td valign="middle" align="left"> &nbsp; </td>
 
14492
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14493
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14494
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14495
<td valign="middle" align="left"> &nbsp; </td>
 
14496
<td valign="middle" align="left"> &nbsp; </td>
 
14497
<td valign="middle" align="left"> &nbsp; </td>
 
14498
<td valign="middle" align="left"> &nbsp; </td>
 
14499
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14500
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14501
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14502
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14503
</tr></table>
 
14504
<a name="ProvideExtralifes-1"></a>
 
14505
<h3 class="subsection">6.4.25 ProvideExtralifes</h3>
 
14506
 
 
14507
<p>A global variable that causes two <a href="#it_005fextralife">it_extralife</a>s to be added to both player
 
14508
inventories on start of a new level. Set it to &lsquo;<samp>false</samp>&rsquo; if a gamer could
 
14509
misuse these items. It is important to set this attribute before the world is
 
14510
created (see section <a href="#World-Creation">World Creation</a>).
 
14511
</p>
 
14512
<dl compact="compact">
 
14513
<dt> <b>Type:</b> &nbsp;&nbsp;bool</dt>
 
14514
<dt> <b>Values:</b> &nbsp;&nbsp;<code>true</code>, <code>false</code></dt>
 
14515
<dt> <b>Default:</b> &nbsp;&nbsp;<code>true</code></dt>
 
14516
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14517
<dt> <b>Support:</b> &nbsp;&nbsp;object independent</dt>
 
14518
</dl>
 
14519
 
 
14520
<hr size="6">
 
14521
<a name="RubberViolationStrength"></a>
 
14522
<table cellpadding="1" cellspacing="1" border="0">
 
14523
<tr><td valign="middle" align="left">[<a href="#ProvideExtralifes" title="Previous section in reading order"> &lt; </a>]</td>
 
14524
<td valign="middle" align="left">[<a href="#ShowMoves" title="Next section in reading order"> &gt; </a>]</td>
 
14525
<td valign="middle" align="left"> &nbsp; </td>
 
14526
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14527
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14528
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14529
<td valign="middle" align="left"> &nbsp; </td>
 
14530
<td valign="middle" align="left"> &nbsp; </td>
 
14531
<td valign="middle" align="left"> &nbsp; </td>
 
14532
<td valign="middle" align="left"> &nbsp; </td>
 
14533
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14534
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14535
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14536
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14537
</tr></table>
 
14538
<a name="RubberViolationStrength-1"></a>
 
14539
<h3 class="subsection">6.4.26 RubberViolationStrength</h3>
 
14540
 
 
14541
<p>A global scalar default factor for the <a href="#ot_005frubberband">ot_rubberband</a> force that is applied
 
14542
to actors if the length of the rubberband exceeds the given min or max limits.
 
14543
This can happen due to extraordinary events like actor warping, actor
 
14544
resurrection, moving anchor stones or simply new rubberbands that are created
 
14545
with off limit length.
 
14546
</p>
 
14547
<dl compact="compact">
 
14548
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
14549
<dt> <b>Values:</b> &nbsp;&nbsp;positive float number</dt>
 
14550
<dt> <b>Default:</b> &nbsp;&nbsp;<code>50.0</code></dt>
 
14551
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14552
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#ot_005frubberband">ot_rubberband</a></dt>
 
14553
</dl>
 
14554
 
 
14555
<hr size="6">
 
14556
<a name="ShowMoves"></a>
 
14557
<table cellpadding="1" cellspacing="1" border="0">
 
14558
<tr><td valign="middle" align="left">[<a href="#RubberViolationStrength" title="Previous section in reading order"> &lt; </a>]</td>
 
14559
<td valign="middle" align="left">[<a href="#SlopeStrength" title="Next section in reading order"> &gt; </a>]</td>
 
14560
<td valign="middle" align="left"> &nbsp; </td>
 
14561
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14562
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14563
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14564
<td valign="middle" align="left"> &nbsp; </td>
 
14565
<td valign="middle" align="left"> &nbsp; </td>
 
14566
<td valign="middle" align="left"> &nbsp; </td>
 
14567
<td valign="middle" align="left"> &nbsp; </td>
 
14568
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14569
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14570
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14571
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14572
</tr></table>
 
14573
<a name="ShowMoves-1"></a>
 
14574
<h3 class="subsection">6.4.27 ShowMoves</h3>
 
14575
 
 
14576
<p>A global variable that enables or disables the display of the stone push
 
14577
counter besides the level time. It is mainly used in Sokoban like levels.
 
14578
</p>
 
14579
<dl compact="compact">
 
14580
<dt> <b>Type:</b> &nbsp;&nbsp;bool</dt>
 
14581
<dt> <b>Values:</b> &nbsp;&nbsp;<code>true</code>, <code>false</code></dt>
 
14582
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
14583
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14584
<dt> <b>Support:</b> &nbsp;&nbsp;object independent</dt>
 
14585
</dl>
 
14586
 
 
14587
<hr size="6">
 
14588
<a name="SlopeStrength"></a>
 
14589
<table cellpadding="1" cellspacing="1" border="0">
 
14590
<tr><td valign="middle" align="left">[<a href="#ShowMoves" title="Previous section in reading order"> &lt; </a>]</td>
 
14591
<td valign="middle" align="left">[<a href="#SublevelNumber" title="Next section in reading order"> &gt; </a>]</td>
 
14592
<td valign="middle" align="left"> &nbsp; </td>
 
14593
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14594
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14595
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14596
<td valign="middle" align="left"> &nbsp; </td>
 
14597
<td valign="middle" align="left"> &nbsp; </td>
 
14598
<td valign="middle" align="left"> &nbsp; </td>
 
14599
<td valign="middle" align="left"> &nbsp; </td>
 
14600
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14601
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14602
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14603
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14604
</tr></table>
 
14605
<a name="SlopeStrength-1"></a>
 
14606
<h3 class="subsection">6.4.28 SlopeStrength</h3>
 
14607
 
 
14608
<p>A global scalar default factor for <a href="#fl_005fslope">fl_slope</a> floor gradient forces. This
 
14609
global value is used if no slope object specific strength factor is supplied.
 
14610
</p>
 
14611
<dl compact="compact">
 
14612
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
14613
<dt> <b>Values:</b> &nbsp;&nbsp;float number</dt>
 
14614
<dt> <b>Default:</b> &nbsp;&nbsp;<code>25.0</code></dt>
 
14615
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14616
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#fl_005fslope">fl_slope</a></dt>
 
14617
</dl>
 
14618
 
 
14619
<hr size="6">
 
14620
<a name="SublevelNumber"></a>
 
14621
<table cellpadding="1" cellspacing="1" border="0">
 
14622
<tr><td valign="middle" align="left">[<a href="#SlopeStrength" title="Previous section in reading order"> &lt; </a>]</td>
 
14623
<td valign="middle" align="left">[<a href="#SublevelTitle" title="Next section in reading order"> &gt; </a>]</td>
 
14624
<td valign="middle" align="left"> &nbsp; </td>
 
14625
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14626
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14627
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14628
<td valign="middle" align="left"> &nbsp; </td>
 
14629
<td valign="middle" align="left"> &nbsp; </td>
 
14630
<td valign="middle" align="left"> &nbsp; </td>
 
14631
<td valign="middle" align="left"> &nbsp; </td>
 
14632
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14633
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14634
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14635
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14636
</tr></table>
 
14637
<a name="SublevelNumber-1"></a>
 
14638
<h3 class="subsection">6.4.29 SublevelNumber</h3>
 
14639
 
 
14640
<p>A global variable that is only used by <a href="#Multilevel-Files">Multilevel Files</a>. It contains the
 
14641
number of the sublevel that should be loaded and played. The number is preset
 
14642
to a value between <code>1</code> and the &lsquo;<samp>quantity</samp>&rsquo; given in the
 
14643
<a href="#Info-metadata">Info metadata</a>.
 
14644
</p>
 
14645
<dl compact="compact">
 
14646
<dt> <b>Type:</b> &nbsp;&nbsp;int</dt>
 
14647
<dt> <b>Values:</b> &nbsp;&nbsp;positive integer numbers</dt>
 
14648
<dt> <b>Default:</b> &nbsp;&nbsp;<code>1</code></dt>
 
14649
<dt> <b>Access:</b> &nbsp;&nbsp;read only</dt>
 
14650
<dt> <b>Support:</b> &nbsp;&nbsp;no objects</dt>
 
14651
</dl>
 
14652
 
 
14653
<hr size="6">
 
14654
<a name="SublevelTitle"></a>
 
14655
<table cellpadding="1" cellspacing="1" border="0">
 
14656
<tr><td valign="middle" align="left">[<a href="#SublevelNumber" title="Previous section in reading order"> &lt; </a>]</td>
 
14657
<td valign="middle" align="left">[<a href="#SubSoil" title="Next section in reading order"> &gt; </a>]</td>
 
14658
<td valign="middle" align="left"> &nbsp; </td>
 
14659
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14660
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14661
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14662
<td valign="middle" align="left"> &nbsp; </td>
 
14663
<td valign="middle" align="left"> &nbsp; </td>
 
14664
<td valign="middle" align="left"> &nbsp; </td>
 
14665
<td valign="middle" align="left"> &nbsp; </td>
 
14666
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14667
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14668
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14669
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14670
</tr></table>
 
14671
<a name="SublevelTitle-1"></a>
 
14672
<h3 class="subsection">6.4.30 SublevelTitle</h3>
 
14673
 
 
14674
<p>A global variable that is only used by <a href="#Multilevel-Files">Multilevel Files</a>. If the sublevel
 
14675
provides an individual title this variable must be set on level load to the
 
14676
title string. An empty string value causes an auto generated title based on
 
14677
the title given in the <a href="#g_t_003cidentity_003e">&lt;identity&gt;</a> element and the <a href="#SublevelNumber">SublevelNumber</a>.
 
14678
</p>
 
14679
<dl compact="compact">
 
14680
<dt> <b>Type:</b> &nbsp;&nbsp;string</dt>
 
14681
<dt> <b>Values:</b> &nbsp;&nbsp;any string</dt>
 
14682
<dt> <b>Default:</b> &nbsp;&nbsp;<code>&quot;&quot;</code></dt>
 
14683
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14684
<dt> <b>Support:</b> &nbsp;&nbsp;no objects</dt>
 
14685
</dl>
 
14686
 
 
14687
<hr size="6">
 
14688
<a name="SubSoil"></a>
 
14689
<table cellpadding="1" cellspacing="1" border="0">
 
14690
<tr><td valign="middle" align="left">[<a href="#SublevelTitle" title="Previous section in reading order"> &lt; </a>]</td>
 
14691
<td valign="middle" align="left">[<a href="#SurviveFinish" title="Next section in reading order"> &gt; </a>]</td>
 
14692
<td valign="middle" align="left"> &nbsp; </td>
 
14693
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14694
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14695
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14696
<td valign="middle" align="left"> &nbsp; </td>
 
14697
<td valign="middle" align="left"> &nbsp; </td>
 
14698
<td valign="middle" align="left"> &nbsp; </td>
 
14699
<td valign="middle" align="left"> &nbsp; </td>
 
14700
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14701
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14702
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14703
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14704
</tr></table>
 
14705
<a name="SubSoil-1"></a>
 
14706
<h3 class="subsection">6.4.31 SubSoil</h3>
 
14707
 
 
14708
<p>A global variable that defines the subsoil which replaces a floor on its
 
14709
physical destruction. <a href="#it_005fbomb">it_bomb</a>s and <a href="#ot_005fcannonball">ot_cannonball</a>s can cause
 
14710
<a href="#it_005fexplosion">it_explosion</a>_debris which in turn dissolves the floor to the base
 
14711
subsoil. The special value <code>SUBSOIL_AUTO</code> determines the subsoil based
 
14712
on the surrounding floors. Any <a href="#fl_005fwater">fl_water</a> on a direct neighboring floor
 
14713
causes the floor to be replaced by water, too. Otherwise the default
 
14714
<a href="#fl_005fabyss">fl_abyss</a> will be used as replacement.
 
14715
</p>
 
14716
<dl compact="compact">
 
14717
<dt> <b>Type:</b> &nbsp;&nbsp;int</dt>
 
14718
<dt> <b>Values:</b> &nbsp;&nbsp;<code>SUBSOIL_ABYSS</code>, <code>SUBSOIL_WATER</code>, <code>SUBSOIL_AUTO</code></dt>
 
14719
<dt> <b>Default:</b> &nbsp;&nbsp;<code>SUBSOIL_ABYSS</code></dt>
 
14720
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14721
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#it_005fexplosion">it_explosion</a></dt>
 
14722
</dl>
 
14723
 
 
14724
<hr size="6">
 
14725
<a name="SurviveFinish"></a>
 
14726
<table cellpadding="1" cellspacing="1" border="0">
 
14727
<tr><td valign="middle" align="left">[<a href="#SubSoil" title="Previous section in reading order"> &lt; </a>]</td>
 
14728
<td valign="middle" align="left">[<a href="#SwampSinkTime" title="Next section in reading order"> &gt; </a>]</td>
 
14729
<td valign="middle" align="left"> &nbsp; </td>
 
14730
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14731
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14732
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14733
<td valign="middle" align="left"> &nbsp; </td>
 
14734
<td valign="middle" align="left"> &nbsp; </td>
 
14735
<td valign="middle" align="left"> &nbsp; </td>
 
14736
<td valign="middle" align="left"> &nbsp; </td>
 
14737
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14738
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14739
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14740
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14741
</tr></table>
 
14742
<a name="SurviveFinish-1"></a>
 
14743
<h3 class="subsection">6.4.32 SurviveFinish</h3>
 
14744
 
 
14745
<p>A global variable that defines if the essential actors have to survive the
 
14746
finish of the game (see section <a href="#Ending-Conditions">Ending Conditions</a>). With this attribute set to
 
14747
&lsquo;<samp>false</samp>&rsquo; a gamer can sacrifice an essential actor to finish the level in the
 
14748
same step in some subtle cases.
 
14749
</p>
 
14750
<dl compact="compact">
 
14751
<dt> <b>Type:</b> &nbsp;&nbsp;bool</dt>
 
14752
<dt> <b>Values:</b> &nbsp;&nbsp;<code>true</code>, <code>false</code></dt>
 
14753
<dt> <b>Default:</b> &nbsp;&nbsp;<code>true</code></dt>
 
14754
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14755
<dt> <b>Support:</b> &nbsp;&nbsp;object independent</dt>
 
14756
</dl>
 
14757
 
 
14758
<hr size="6">
 
14759
<a name="SwampSinkTime"></a>
 
14760
<table cellpadding="1" cellspacing="1" border="0">
 
14761
<tr><td valign="middle" align="left">[<a href="#SurviveFinish" title="Previous section in reading order"> &lt; </a>]</td>
 
14762
<td valign="middle" align="left">[<a href="#WaterSinkTime" title="Next section in reading order"> &gt; </a>]</td>
 
14763
<td valign="middle" align="left"> &nbsp; </td>
 
14764
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14765
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14766
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14767
<td valign="middle" align="left"> &nbsp; </td>
 
14768
<td valign="middle" align="left"> &nbsp; </td>
 
14769
<td valign="middle" align="left"> &nbsp; </td>
 
14770
<td valign="middle" align="left"> &nbsp; </td>
 
14771
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14772
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14773
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14774
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14775
</tr></table>
 
14776
<a name="SwampSinkTime-1"></a>
 
14777
<h3 class="subsection">6.4.33 SwampSinkTime</h3>
 
14778
 
 
14779
<p>A global default for the time it takes a static actor to sink in <a href="#fl_005fswamp">fl_swamp</a>.
 
14780
Fast moving actors will need slightly more time than static actors.
 
14781
</p>
 
14782
<dl compact="compact">
 
14783
<dt> <b>Type:</b> &nbsp;&nbsp;number or <code>nil</code></dt>
 
14784
<dt> <b>Values:</b> &nbsp;&nbsp;positive float number or zero or <code>nil</code></dt>
 
14785
<dd><p>Sink time in seconds or &lsquo;<samp>nil</samp>&rsquo; for an infinite time aka not sinking. Time
 
14786
values smaller than approximately 0.7 ms will be rounded down to 0 ms.
 
14787
</p></dd>
 
14788
<dt> <b>Default:</b> &nbsp;&nbsp;<code>1.75</code></dt>
 
14789
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14790
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#fl_005fswamp">fl_swamp</a></dt>
 
14791
</dl>
 
14792
 
 
14793
<hr size="6">
 
14794
<a name="WaterSinkTime"></a>
 
14795
<table cellpadding="1" cellspacing="1" border="0">
 
14796
<tr><td valign="middle" align="left">[<a href="#SwampSinkTime" title="Previous section in reading order"> &lt; </a>]</td>
 
14797
<td valign="middle" align="left">[<a href="#Width" title="Next section in reading order"> &gt; </a>]</td>
 
14798
<td valign="middle" align="left"> &nbsp; </td>
 
14799
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14800
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14801
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14802
<td valign="middle" align="left"> &nbsp; </td>
 
14803
<td valign="middle" align="left"> &nbsp; </td>
 
14804
<td valign="middle" align="left"> &nbsp; </td>
 
14805
<td valign="middle" align="left"> &nbsp; </td>
 
14806
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14807
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14808
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14809
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14810
</tr></table>
 
14811
<a name="WaterSinkTime-1"></a>
 
14812
<h3 class="subsection">6.4.34 WaterSinkTime</h3>
 
14813
 
 
14814
<p>A global default for the time it takes an actor to sink in <a href="#fl_005fwater">fl_water</a>.
 
14815
</p>
 
14816
<dl compact="compact">
 
14817
<dt> <b>Type:</b> &nbsp;&nbsp;number or <code>nil</code></dt>
 
14818
<dt> <b>Values:</b> &nbsp;&nbsp;positive float number or zero or <code>nil</code></dt>
 
14819
<dd><p>Sink time in seconds or &lsquo;<samp>nil</samp>&rsquo; for an infinite time aka not sinking. Time
 
14820
values smaller than approximately 0.7 ms will be rounded down to 0 ms.
 
14821
</p></dd>
 
14822
<dt> <b>Default:</b> &nbsp;&nbsp;<code>0.0</code></dt>
 
14823
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14824
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#fl_005fwater">fl_water</a></dt>
 
14825
</dl>
 
14826
 
 
14827
<hr size="6">
 
14828
<a name="Width"></a>
 
14829
<table cellpadding="1" cellspacing="1" border="0">
 
14830
<tr><td valign="middle" align="left">[<a href="#WaterSinkTime" title="Previous section in reading order"> &lt; </a>]</td>
 
14831
<td valign="middle" align="left">[<a href="#WormholeRange" title="Next section in reading order"> &gt; </a>]</td>
 
14832
<td valign="middle" align="left"> &nbsp; </td>
 
14833
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14834
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14835
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14836
<td valign="middle" align="left"> &nbsp; </td>
 
14837
<td valign="middle" align="left"> &nbsp; </td>
 
14838
<td valign="middle" align="left"> &nbsp; </td>
 
14839
<td valign="middle" align="left"> &nbsp; </td>
 
14840
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14841
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14842
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14843
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14844
</tr></table>
 
14845
<a name="Width-1"></a>
 
14846
<h3 class="subsection">6.4.35 Width</h3>
 
14847
 
 
14848
<p>A global read only variable reports the width of the world in grid units.
 
14849
This is set by the initial world constructor call
 
14850
(see section <a href="#World-Creation">World Creation</a>).
 
14851
</p>
 
14852
<dl compact="compact">
 
14853
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
14854
<dt> <b>Values:</b> &nbsp;&nbsp;positive integer number</dt>
 
14855
<dt> <b>Default:</b> &nbsp;&nbsp;<code>?</code></dt>
 
14856
<dt> <b>Access:</b> &nbsp;&nbsp;read only</dt>
 
14857
<dt> <b>Support:</b> &nbsp;&nbsp;object independent</dt>
 
14858
</dl>
 
14859
 
 
14860
 
 
14861
<hr size="6">
 
14862
<a name="WormholeRange"></a>
 
14863
<table cellpadding="1" cellspacing="1" border="0">
 
14864
<tr><td valign="middle" align="left">[<a href="#Width" title="Previous section in reading order"> &lt; </a>]</td>
 
14865
<td valign="middle" align="left">[<a href="#WormholeStrength" title="Next section in reading order"> &gt; </a>]</td>
 
14866
<td valign="middle" align="left"> &nbsp; </td>
 
14867
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14868
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14869
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14870
<td valign="middle" align="left"> &nbsp; </td>
 
14871
<td valign="middle" align="left"> &nbsp; </td>
 
14872
<td valign="middle" align="left"> &nbsp; </td>
 
14873
<td valign="middle" align="left"> &nbsp; </td>
 
14874
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14875
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14876
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14877
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14878
</tr></table>
 
14879
<a name="WormholeRange-1"></a>
 
14880
<h3 class="subsection">6.4.36 WormholeRange</h3>
 
14881
 
 
14882
<p>A global default distance up to which wormholes apply forces to actors. This
 
14883
global value is only used if no object specific value is set.
 
14884
</p>
 
14885
<dl compact="compact">
 
14886
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
14887
<dt> <b>Values:</b> &nbsp;&nbsp;positive float number or zero</dt>
 
14888
<dt> <b>Default:</b> &nbsp;&nbsp;<code>10.0</code></dt>
 
14889
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14890
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#it_005fwormhole">it_wormhole</a></dt>
 
14891
</dl>
 
14892
 
 
14893
<hr size="6">
 
14894
<a name="WormholeStrength"></a>
 
14895
<table cellpadding="1" cellspacing="1" border="0">
 
14896
<tr><td valign="middle" align="left">[<a href="#WormholeRange" title="Previous section in reading order"> &lt; </a>]</td>
 
14897
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next section in reading order"> &gt; </a>]</td>
 
14898
<td valign="middle" align="left"> &nbsp; </td>
 
14899
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14900
<td valign="middle" align="left">[<a href="#Global-Attributes" title="Up section"> Up </a>]</td>
 
14901
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14902
<td valign="middle" align="left"> &nbsp; </td>
 
14903
<td valign="middle" align="left"> &nbsp; </td>
 
14904
<td valign="middle" align="left"> &nbsp; </td>
 
14905
<td valign="middle" align="left"> &nbsp; </td>
 
14906
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14907
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14908
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14909
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14910
</tr></table>
 
14911
<a name="WormholeStrength-1"></a>
 
14912
<h3 class="subsection">6.4.37 WormholeStrength</h3>
 
14913
 
 
14914
<p>A global scalar default factor for wormhole forces. Positive numbers are
 
14915
attracting forces where as negative numbers are repelling forces. This global
 
14916
value is only used if no object specific value is set.
 
14917
</p>
 
14918
<dl compact="compact">
 
14919
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
14920
<dt> <b>Values:</b> &nbsp;&nbsp;float number</dt>
 
14921
<dt> <b>Default:</b> &nbsp;&nbsp;<code>30.0</code></dt>
 
14922
<dd><p>Positive number are attracting, negative numbers are repelling.
 
14923
</p></dd>
 
14924
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
14925
<dt> <b>Support:</b> &nbsp;&nbsp;<a href="#it_005fwormhole">it_wormhole</a></dt>
 
14926
</dl>
 
14927
 
 
14928
 
 
14929
<hr size="6">
 
14930
<a name="Floor-Objects"></a>
 
14931
<table cellpadding="1" cellspacing="1" border="0">
 
14932
<tr><td valign="middle" align="left">[<a href="#WormholeStrength" title="Previous section in reading order"> &lt; </a>]</td>
 
14933
<td valign="middle" align="left">[<a href="#Floor-Overview" title="Next section in reading order"> &gt; </a>]</td>
 
14934
<td valign="middle" align="left"> &nbsp; </td>
 
14935
<td valign="middle" align="left">[<a href="#Common-Attributes-and-Messages" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14936
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
14937
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14938
<td valign="middle" align="left"> &nbsp; </td>
 
14939
<td valign="middle" align="left"> &nbsp; </td>
 
14940
<td valign="middle" align="left"> &nbsp; </td>
 
14941
<td valign="middle" align="left"> &nbsp; </td>
 
14942
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14943
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14944
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14945
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14946
</tr></table>
 
14947
<a name="Floor-Objects-1"></a>
 
14948
<h1 class="chapter">7. Floor Objects</h1>
 
14949
 
 
14950
<table class="menu" border="0" cellspacing="0">
 
14951
<tr><td align="left" valign="top"><a href="#Floor-Overview">7.1 Floor Overview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
14952
</td></tr>
 
14953
<tr><td align="left" valign="top"><a href="#Floor-Attributes">7.2 Floor Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
14954
</td></tr>
 
14955
<tr><td align="left" valign="top"><a href="#Standard-Floors">7.3 Standard Floors</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
14956
</td></tr>
 
14957
<tr><td align="left" valign="top"><a href="#Special-Floors">7.4 Special Floors</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
14958
</td></tr>
 
14959
</table>
 
14960
 
 
14961
<hr size="6">
 
14962
<a name="Floor-Overview"></a>
 
14963
<table cellpadding="1" cellspacing="1" border="0">
 
14964
<tr><td valign="middle" align="left">[<a href="#Floor-Objects" title="Previous section in reading order"> &lt; </a>]</td>
 
14965
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Next section in reading order"> &gt; </a>]</td>
 
14966
<td valign="middle" align="left"> &nbsp; </td>
 
14967
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
14968
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Up section"> Up </a>]</td>
 
14969
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
14970
<td valign="middle" align="left"> &nbsp; </td>
 
14971
<td valign="middle" align="left"> &nbsp; </td>
 
14972
<td valign="middle" align="left"> &nbsp; </td>
 
14973
<td valign="middle" align="left"> &nbsp; </td>
 
14974
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
14975
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
14976
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
14977
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
14978
</tr></table>
 
14979
<a name="Floor-Overview-1"></a>
 
14980
<h2 class="section">7.1 Floor Overview</h2>
 
14981
 
 
14982
<table>
 
14983
<tr><td width="8%"><img src="images/fl_abyss.png" alt="images/fl_abyss"></td><td width="25%"><a href="#fl_005fabyss">fl_abyss</a></td><td width="8%"><img src="images/fl_adhesionless.png" alt="images/fl_adhesionless"></td><td width="25%"><a href="#fl_005fadhesionless">fl_adhesionless</a></td><td width="9%"><img src="images/fl_aquamarine.png" alt="images/fl_aquamarine"></td><td width="25%"><a href="#fl_005faquamarine">fl_aquamarine</a></td></tr>
 
14984
<tr><td width="8%"><img src="images/fl_bast.png" alt="images/fl_bast"></td><td width="25%"><a href="#fl_005fbast">fl_bast</a></td><td width="8%"><img src="images/fl_bluegray.png" alt="images/fl_bluegray"></td><td width="25%"><a href="#fl_005fbluegray">fl_bluegray</a></td><td width="9%"><img src="images/fl_bluegreen.png" alt="images/fl_bluegreen"></td><td width="25%"><a href="#fl_005fbluegreen">fl_bluegreen</a></td></tr>
 
14985
<tr><td width="8%"><img src="images/fl_blueslab.png" alt="images/fl_blueslab"></td><td width="25%"><a href="#fl_005fblueslab">fl_blueslab</a></td><td width="8%"><img src="images/fl_brick.png" alt="images/fl_brick"></td><td width="25%"><a href="#fl_005fbrick">fl_brick</a></td><td width="9%"><img src="images/fl_bridge_bw_closed.png" alt="images/fl_bridge_bw_closed"></td><td width="25%"><a href="#fl_005fbridge">fl_bridge</a>_bw</td></tr>
 
14986
<tr><td width="8%"><img src="images/fl_bridge_gc_closed.png" alt="images/fl_bridge_gc_closed"></td><td width="25%"><a href="#fl_005fbridge">fl_bridge</a>_gc</td><td width="8%"><img src="images/fl_bright.png" alt="images/fl_bright"></td><td width="25%"><a href="#fl_005fbright">fl_bright</a></td><td width="9%"><img src="images/fl_concrete.png" alt="images/fl_concrete"></td><td width="25%"><a href="#fl_005fconcrete">fl_concrete</a></td></tr>
 
14987
<tr><td width="8%"><img src="images/fl_darkgray.png" alt="images/fl_darkgray"></td><td width="25%"><a href="#fl_005fdarkgray">fl_darkgray</a></td><td width="8%"><img src="images/fl_dark.png" alt="images/fl_dark"></td><td width="25%"><a href="#fl_005fdark">fl_dark</a></td><td width="9%"><img src="images/fl_dunes.png" alt="images/fl_dunes"></td><td width="25%"><a href="#fl_005fdunes">fl_dunes</a></td></tr>
 
14988
<tr><td width="8%"><img src="images/fl_fake_trigger.png" alt="images/fl_fake_trigger"></td><td width="25%"><a href="#fl_005ffake">fl_fake</a>_trigger</td><td width="8%"><img src="images/fl_gravel.png" alt="images/fl_gravel"></td><td width="25%"><a href="#fl_005fgravel">fl_gravel</a></td><td width="9%"><img src="images/fl_gray.png" alt="images/fl_gray"></td><td width="25%"><a href="#fl_005fgray">fl_gray</a></td></tr>
 
14989
<tr><td width="8%"><img src="images/fl_hay.png" alt="images/fl_hay"></td><td width="25%"><a href="#fl_005fhay">fl_hay</a></td><td width="8%"><img src="images/fl_himalaya.png" alt="images/fl_himalaya"></td><td width="25%"><a href="#fl_005fhimalaya">fl_himalaya</a></td><td width="9%"><img src="images/fl_ice.png" alt="images/fl_ice"></td><td width="25%"><a href="#fl_005fice">fl_ice</a></td></tr>
 
14990
<tr><td width="8%"><img src="images/fl_inverse_gray.png" alt="images/fl_inverse_gray"></td><td width="25%"><a href="#fl_005finverse">fl_inverse</a>_gray</td><td width="8%"><img src="images/fl_inverse_white.png" alt="images/fl_inverse_white"></td><td width="25%"><a href="#fl_005finverse">fl_inverse</a>_white</td><td width="9%"><img src="images/fl_ivory.png" alt="images/fl_ivory"></td><td width="25%"><a href="#fl_005fivory">fl_ivory</a></td></tr>
 
14991
<tr><td width="8%"><img src="images/fl_lawn.png" alt="images/fl_lawn"></td><td width="25%"><a href="#fl_005flawn">fl_lawn</a></td><td width="8%"><img src="images/fl_marble.png" alt="images/fl_marble"></td><td width="25%"><a href="#fl_005fmarble">fl_marble</a></td><td width="9%"><img src="images/fl_metal.png" alt="images/fl_metal"></td><td width="25%"><a href="#fl_005fmetal">fl_metal</a></td></tr>
 
14992
<tr><td width="8%"><img src="images/fl_mortar.png" alt="images/fl_mortar"></td><td width="25%"><a href="#fl_005fmortar">fl_mortar</a></td><td width="8%"><img src="images/fl_pinkbumps.png" alt="images/fl_pinkbumps"></td><td width="25%"><a href="#fl_005fpinkbumps">fl_pinkbumps</a></td><td width="9%"><img src="images/fl_plank.png" alt="images/fl_plank"></td><td width="25%"><a href="#fl_005fplank">fl_plank</a></td></tr>
 
14993
<tr><td width="8%"><img src="images/fl_platinum.png" alt="images/fl_platinum"></td><td width="25%"><a href="#fl_005fplatinum">fl_platinum</a></td><td width="8%"><img src="images/fl_red.png" alt="images/fl_red"></td><td width="25%"><a href="#fl_005fred">fl_red</a></td><td width="9%"><img src="images/fl_redslab.png" alt="images/fl_redslab"></td><td width="25%"><a href="#fl_005fredslab">fl_redslab</a></td></tr>
 
14994
<tr><td width="8%"><img src="images/fl_rock.png" alt="images/fl_rock"></td><td width="25%"><a href="#fl_005frock">fl_rock</a></td><td width="8%"><img src="images/fl_rough.png" alt="images/fl_rough"></td><td width="25%"><a href="#fl_005frough">fl_rough</a></td><td width="9%"><img src="images/fl_sahara.png" alt="images/fl_sahara"></td><td width="25%"><a href="#fl_005fsahara">fl_sahara</a></td></tr>
 
14995
<tr><td width="8%"><img src="images/fl_samba.png" alt="images/fl_samba"></td><td width="25%"><a href="#fl_005fsamba">fl_samba</a></td><td width="8%"><img src="images/fl_sand.png" alt="images/fl_sand"></td><td width="25%"><a href="#fl_005fsand">fl_sand</a></td><td width="9%"><img src="images/fl_scales_brick.png" alt="images/fl_scales_brick"></td><td width="25%"><a href="#fl_005fscales">fl_scales</a>_brick</td></tr>
 
14996
<tr><td width="8%"><img src="images/fl_scales_bridge_bw_closed.png" alt="images/fl_scales_bridge_bw_closed"></td><td width="25%"><a href="#fl_005fscales">fl_scales</a>_bridgewood</td><td width="8%"><img src="images/fl_scales_concrete.png" alt="images/fl_scales_concrete"></td><td width="25%"><a href="#fl_005fscales">fl_scales</a>_concrete</td><td width="9%"><img src="images/fl_scales_darkgray.png" alt="images/fl_scales_darkgray"></td><td width="25%"><a href="#fl_005fscales">fl_scales</a>_darkgray</td></tr>
 
14997
<tr><td width="8%"><img src="images/fl_scales_gray.png" alt="images/fl_scales_gray"></td><td width="25%"><a href="#fl_005fscales">fl_scales</a>_gray</td><td width="8%"><img src="images/fl_scales_platinum.png" alt="images/fl_scales_platinum"></td><td width="25%"><a href="#fl_005fscales">fl_scales</a>_platinum</td><td width="9%"><img src="images/fl_slope_f.png" alt="images/fl_slope_f"></td><td width="25%"><a href="#fl_005fslope">fl_slope</a></td></tr>
 
14998
<tr><td width="8%"><img src="images/fl_slope.png" alt="images/fl_slope"></td><td width="25%"><a href="#fl_005fslope">fl_slope</a>_ps</td><td width="8%"><img src="images/fl_slope_c.png" alt="images/fl_slope_c"></td><td width="25%"><a href="#fl_005fslope">fl_slope</a>_ise</td><td width="9%"><img src="images/fl_slope_b.png" alt="images/fl_slope_b"></td><td width="25%"><a href="#fl_005fslope">fl_slope</a>_ose</td></tr>
 
14999
<tr><td width="8%"><img src="images/fl_space.png" alt="images/fl_space"></td><td width="25%"><a href="#fl_005fspace">fl_space</a></td><td width="8%"><img src="images/fl_stone.png" alt="images/fl_stone"></td><td width="25%"><a href="#fl_005fstone">fl_stone</a></td><td width="9%"><img src="images/fl_swamp.png" alt="images/fl_swamp"></td><td width="25%"><a href="#fl_005fswamp">fl_swamp</a></td></tr>
 
15000
<tr><td width="8%"><img src="images/fl_thief.png" alt="images/fl_thief"></td><td width="25%"><a href="#fl_005fthief">fl_thief</a></td><td width="8%"><img src="images/fl_thief_capture.png" alt="images/fl_thief_capture"></td><td width="25%"><a href="#fl_005fthief">fl_thief</a></td><td width="9%"><img src="images/fl_thief_drunken.png" alt="images/fl_thief_drunken"></td><td width="25%"><a href="#fl_005fthief">fl_thief</a></td></tr>
 
15001
<tr><td width="8%"><img src="images/fl_tigris.png" alt="images/fl_tigris"></td><td width="25%"><a href="#fl_005ftigris">fl_tigris</a></td><td width="8%"><img src="images/fl_water.png" alt="images/fl_water"></td><td width="25%"><a href="#fl_005fwater">fl_water</a></td><td width="9%"><img src="images/fl_white.png" alt="images/fl_white"></td><td width="25%"><a href="#fl_005fwhite">fl_white</a></td></tr>
 
15002
<tr><td width="8%"><img src="images/fl_wood.png" alt="images/fl_wood"></td><td width="25%"><a href="#fl_005fwood">fl_wood</a></td><td width="8%"><img src="images/fl_woven.png" alt="images/fl_woven"></td><td width="25%"><a href="#fl_005fwoven">fl_woven</a></td><td width="9%"><img src="images/fl_yinyang_yang.png" alt="images/fl_yinyang_yang"></td><td width="25%"><a href="#fl_005fyinyang">fl_yinyang</a>_yang</td></tr>
 
15003
<tr><td width="8%"><img src="images/fl_yinyang_yin.png" alt="images/fl_yinyang_yin"></td><td width="25%"><a href="#fl_005fyinyang">fl_yinyang</a>_yin</td></tr>
 
15004
</table>
 
15005
 
 
15006
<hr size="6">
 
15007
<a name="Floor-Attributes"></a>
 
15008
<table cellpadding="1" cellspacing="1" border="0">
 
15009
<tr><td valign="middle" align="left">[<a href="#Floor-Overview" title="Previous section in reading order"> &lt; </a>]</td>
 
15010
<td valign="middle" align="left">[<a href="#adhesion-_0028floor_0029" title="Next section in reading order"> &gt; </a>]</td>
 
15011
<td valign="middle" align="left"> &nbsp; </td>
 
15012
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15013
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Up section"> Up </a>]</td>
 
15014
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15015
<td valign="middle" align="left"> &nbsp; </td>
 
15016
<td valign="middle" align="left"> &nbsp; </td>
 
15017
<td valign="middle" align="left"> &nbsp; </td>
 
15018
<td valign="middle" align="left"> &nbsp; </td>
 
15019
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15020
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15021
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15022
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15023
</tr></table>
 
15024
<a name="Floor-Attributes-1"></a>
 
15025
<h2 class="section">7.2 Floor Attributes</h2>
 
15026
 
 
15027
<table class="menu" border="0" cellspacing="0">
 
15028
<tr><td align="left" valign="top"><a href="#adhesion-_0028floor_0029">7.2.1 adhesion (floor)</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Effectiveness of mousemotion
 
15029
</td></tr>
 
15030
<tr><td align="left" valign="top"><a href="#burnable">7.2.2 burnable</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                -
 
15031
</td></tr>
 
15032
<tr><td align="left" valign="top"><a href="#eternal">7.2.3 eternal</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 -
 
15033
</td></tr>
 
15034
<tr><td align="left" valign="top"><a href="#faces-_0028floor_0029">7.2.4 faces (floor)</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Framing Configuration
 
15035
</td></tr>
 
15036
<tr><td align="left" valign="top"><a href="#fastfire">7.2.5 fastfire</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                -
 
15037
</td></tr>
 
15038
<tr><td align="left" valign="top"><a href="#floodable">7.2.6 floodable</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               Flood Affinity
 
15039
</td></tr>
 
15040
<tr><td align="left" valign="top"><a href="#force_005fx">7.2.7 force_x</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 Constant Force
 
15041
</td></tr>
 
15042
<tr><td align="left" valign="top"><a href="#force_005fy">7.2.8 force_y</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 Constant Force
 
15043
</td></tr>
 
15044
<tr><td align="left" valign="top"><a href="#fragility-_0028floor_0029">7.2.9 fragility (floor)</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Crack
 
15045
</td></tr>
 
15046
<tr><td align="left" valign="top"><a href="#freeze_005fcheck-_0028floor_0029">7.2.10 freeze_check (floor)</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    Freeze Checking
 
15047
</td></tr>
 
15048
<tr><td align="left" valign="top"><a href="#friction-_0028floor_0029">7.2.11 friction (floor)</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Decelerating friction force factor
 
15049
</td></tr>
 
15050
<tr><td align="left" valign="top"><a href="#ignitable">7.2.12 ignitable</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               -
 
15051
</td></tr>
 
15052
<tr><td align="left" valign="top"><a href="#indestructible">7.2.13 indestructible</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          System Flag for destruction resistance
 
15053
</td></tr>
 
15054
<tr><td align="left" valign="top"><a href="#initfire">7.2.14 initfire</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                -
 
15055
</td></tr>
 
15056
<tr><td align="left" valign="top"><a href="#noash">7.2.15 noash</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                   -
 
15057
</td></tr>
 
15058
<tr><td align="left" valign="top"><a href="#push_005fdirections">7.2.16 push_directions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Puzzle Shuffle Hint
 
15059
</td></tr>
 
15060
<tr><td align="left" valign="top"><a href="#secure">7.2.17 secure</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                  -
 
15061
</td></tr>
 
15062
<tr><td align="left" valign="top"><a href="#texture">7.2.18 texture</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 Graphical Image Texture
 
15063
</td></tr>
 
15064
</table>
 
15065
 
 
15066
 
 
15067
<hr size="6">
 
15068
<a name="adhesion-_0028floor_0029"></a>
 
15069
<table cellpadding="1" cellspacing="1" border="0">
 
15070
<tr><td valign="middle" align="left">[<a href="#Floor-Attributes" title="Previous section in reading order"> &lt; </a>]</td>
 
15071
<td valign="middle" align="left">[<a href="#burnable" title="Next section in reading order"> &gt; </a>]</td>
 
15072
<td valign="middle" align="left"> &nbsp; </td>
 
15073
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15074
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15075
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15076
<td valign="middle" align="left"> &nbsp; </td>
 
15077
<td valign="middle" align="left"> &nbsp; </td>
 
15078
<td valign="middle" align="left"> &nbsp; </td>
 
15079
<td valign="middle" align="left"> &nbsp; </td>
 
15080
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15081
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15082
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15083
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15084
</tr></table>
 
15085
<a name="adhesion-_0028floor_0029-1"></a>
 
15086
<h3 class="subsection">7.2.1 adhesion (floor)</h3>
 
15087
 
 
15088
<p>The responsiveness of an actor on mouse movements. It is a scalar factor to
 
15089
the accelerating force applied to an actor. Note that the actor itself
 
15090
has another scalar <a href="#adhesion-_0028actor_0029">adhesion (actor)</a> factor. The adhesion may take negative
 
15091
values, too. Such values correspond to inverse forces.
 
15092
</p>
 
15093
<dl compact="compact">
 
15094
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
15095
<dt> <b>Values:</b> &nbsp;&nbsp;float number</dt>
 
15096
<dt> <b>Default:</b> &nbsp;&nbsp;<code>0.0</code></dt>
 
15097
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
15098
</dl>
 
15099
 
 
15100
<hr size="6">
 
15101
<a name="burnable"></a>
 
15102
<table cellpadding="1" cellspacing="1" border="0">
 
15103
<tr><td valign="middle" align="left">[<a href="#adhesion-_0028floor_0029" title="Previous section in reading order"> &lt; </a>]</td>
 
15104
<td valign="middle" align="left">[<a href="#eternal" title="Next section in reading order"> &gt; </a>]</td>
 
15105
<td valign="middle" align="left"> &nbsp; </td>
 
15106
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15107
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15108
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15109
<td valign="middle" align="left"> &nbsp; </td>
 
15110
<td valign="middle" align="left"> &nbsp; </td>
 
15111
<td valign="middle" align="left"> &nbsp; </td>
 
15112
<td valign="middle" align="left"> &nbsp; </td>
 
15113
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15114
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15115
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15116
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15117
</tr></table>
 
15118
<a name="burnable-1"></a>
 
15119
<h3 class="subsection">7.2.2 burnable</h3>
 
15120
 
 
15121
<p>Determines whether the floor starts to burn when a fire is nearby and the item
 
15122
on the floor allows it to burn. See section <a href="#Fire-Spreading">Fire Spreading</a> for details.
 
15123
</p>
 
15124
<dl compact="compact">
 
15125
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
15126
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
15127
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
15128
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
15129
</dl>
 
15130
 
 
15131
<hr size="6">
 
15132
<a name="eternal"></a>
 
15133
<table cellpadding="1" cellspacing="1" border="0">
 
15134
<tr><td valign="middle" align="left">[<a href="#burnable" title="Previous section in reading order"> &lt; </a>]</td>
 
15135
<td valign="middle" align="left">[<a href="#faces-_0028floor_0029" title="Next section in reading order"> &gt; </a>]</td>
 
15136
<td valign="middle" align="left"> &nbsp; </td>
 
15137
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15138
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15139
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15140
<td valign="middle" align="left"> &nbsp; </td>
 
15141
<td valign="middle" align="left"> &nbsp; </td>
 
15142
<td valign="middle" align="left"> &nbsp; </td>
 
15143
<td valign="middle" align="left"> &nbsp; </td>
 
15144
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15145
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15146
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15147
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15148
</tr></table>
 
15149
<a name="eternal-1"></a>
 
15150
<h3 class="subsection">7.2.3 eternal</h3>
 
15151
 
 
15152
<p>Determines whether a fire keeps on burning unlimited, until an external cause
 
15153
stops it. See section <a href="#Fire-Spreading">Fire Spreading</a> for details.
 
15154
</p>
 
15155
<dl compact="compact">
 
15156
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
15157
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
15158
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
15159
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
15160
</dl>
 
15161
 
 
15162
<hr size="6">
 
15163
<a name="faces-_0028floor_0029"></a>
 
15164
<table cellpadding="1" cellspacing="1" border="0">
 
15165
<tr><td valign="middle" align="left">[<a href="#eternal" title="Previous section in reading order"> &lt; </a>]</td>
 
15166
<td valign="middle" align="left">[<a href="#fastfire" title="Next section in reading order"> &gt; </a>]</td>
 
15167
<td valign="middle" align="left"> &nbsp; </td>
 
15168
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15169
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15170
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15171
<td valign="middle" align="left"> &nbsp; </td>
 
15172
<td valign="middle" align="left"> &nbsp; </td>
 
15173
<td valign="middle" align="left"> &nbsp; </td>
 
15174
<td valign="middle" align="left"> &nbsp; </td>
 
15175
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15176
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15177
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15178
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15179
</tr></table>
 
15180
<a name="faces-_0028floor_0029-1"></a>
 
15181
<h3 class="subsection">7.2.4 faces (floor)</h3>
 
15182
 
 
15183
<p>Describes if a floor is framed.
 
15184
</p>
 
15185
<p>Currently a floor is either not framed at all or framed on all sides. The frame
 
15186
attribute can not be directly accessed and modified on most floors. Append the
 
15187
string <code>&quot;_framed&quot;</code> to a given floor name to yield the all side framed
 
15188
variant.
 
15189
</p>
 
15190
<dl compact="compact">
 
15191
<dt> <b>Type:</b> &nbsp;&nbsp;string or nil</dt>
 
15192
<dt> <b>Values:</b> &nbsp;&nbsp;<code>nil</code>, <code>&quot;nesw&quot;</code></dt>
 
15193
<dt> <b>Default:</b> &nbsp;&nbsp;<code>nil</code></dt>
 
15194
<dt> <b>Access:</b> &nbsp;&nbsp;none - with a few exceptions</dt>
 
15195
</dl>
 
15196
 
 
15197
<hr size="6">
 
15198
<a name="fastfire"></a>
 
15199
<table cellpadding="1" cellspacing="1" border="0">
 
15200
<tr><td valign="middle" align="left">[<a href="#faces-_0028floor_0029" title="Previous section in reading order"> &lt; </a>]</td>
 
15201
<td valign="middle" align="left">[<a href="#floodable" title="Next section in reading order"> &gt; </a>]</td>
 
15202
<td valign="middle" align="left"> &nbsp; </td>
 
15203
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15204
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15205
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15206
<td valign="middle" align="left"> &nbsp; </td>
 
15207
<td valign="middle" align="left"> &nbsp; </td>
 
15208
<td valign="middle" align="left"> &nbsp; </td>
 
15209
<td valign="middle" align="left"> &nbsp; </td>
 
15210
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15211
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15212
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15213
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15214
</tr></table>
 
15215
<a name="fastfire-1"></a>
 
15216
<h3 class="subsection">7.2.5 fastfire</h3>
 
15217
 
 
15218
<p>When set to <code>true</code>, fire will spread faster than usual, with the same
 
15219
speed as if <a href="#it_005fburnable">it_burnable</a>[_oil] would be on it. See section <a href="#Flood-Spreading">Flood Spreading</a> for
 
15220
details.
 
15221
</p>
 
15222
<dl compact="compact">
 
15223
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
15224
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
15225
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
15226
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
15227
</dl>
 
15228
 
 
15229
<hr size="6">
 
15230
<a name="floodable"></a>
 
15231
<table cellpadding="1" cellspacing="1" border="0">
 
15232
<tr><td valign="middle" align="left">[<a href="#fastfire" title="Previous section in reading order"> &lt; </a>]</td>
 
15233
<td valign="middle" align="left">[<a href="#force_005fx" title="Next section in reading order"> &gt; </a>]</td>
 
15234
<td valign="middle" align="left"> &nbsp; </td>
 
15235
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15236
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15237
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15238
<td valign="middle" align="left"> &nbsp; </td>
 
15239
<td valign="middle" align="left"> &nbsp; </td>
 
15240
<td valign="middle" align="left"> &nbsp; </td>
 
15241
<td valign="middle" align="left"> &nbsp; </td>
 
15242
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15243
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15244
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15245
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15246
</tr></table>
 
15247
<a name="floodable-1"></a>
 
15248
<h3 class="subsection">7.2.6 floodable</h3>
 
15249
 
 
15250
<p>Determines whether a floor can be flooded by <a href="#fl_005fwater">fl_water</a> from a neighboring
 
15251
floor. See section <a href="#Flood-Spreading">Flood Spreading</a> for details.
 
15252
</p>
 
15253
<dl compact="compact">
 
15254
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
15255
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
15256
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
15257
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
15258
</dl>
 
15259
 
 
15260
<hr size="6">
 
15261
<a name="force_005fx"></a>
 
15262
<table cellpadding="1" cellspacing="1" border="0">
 
15263
<tr><td valign="middle" align="left">[<a href="#floodable" title="Previous section in reading order"> &lt; </a>]</td>
 
15264
<td valign="middle" align="left">[<a href="#force_005fy" title="Next section in reading order"> &gt; </a>]</td>
 
15265
<td valign="middle" align="left"> &nbsp; </td>
 
15266
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15267
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15268
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15269
<td valign="middle" align="left"> &nbsp; </td>
 
15270
<td valign="middle" align="left"> &nbsp; </td>
 
15271
<td valign="middle" align="left"> &nbsp; </td>
 
15272
<td valign="middle" align="left"> &nbsp; </td>
 
15273
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15274
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15275
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15276
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15277
</tr></table>
 
15278
<a name="force_005fx-1"></a>
 
15279
<h3 class="subsection">7.2.7 force_x</h3>
 
15280
 
 
15281
<p>A constant floor specific force into east direction applied additionally to all
 
15282
other forces to all actors on the floor.
 
15283
</p>
 
15284
<dl compact="compact">
 
15285
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
15286
<dt> <b>Values:</b> &nbsp;&nbsp;float number</dt>
 
15287
<dt> <b>Default:</b> &nbsp;&nbsp;<code>0.0</code></dt>
 
15288
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
15289
</dl>
 
15290
 
 
15291
<hr size="6">
 
15292
<a name="force_005fy"></a>
 
15293
<table cellpadding="1" cellspacing="1" border="0">
 
15294
<tr><td valign="middle" align="left">[<a href="#force_005fx" title="Previous section in reading order"> &lt; </a>]</td>
 
15295
<td valign="middle" align="left">[<a href="#fragility-_0028floor_0029" title="Next section in reading order"> &gt; </a>]</td>
 
15296
<td valign="middle" align="left"> &nbsp; </td>
 
15297
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15298
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15299
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15300
<td valign="middle" align="left"> &nbsp; </td>
 
15301
<td valign="middle" align="left"> &nbsp; </td>
 
15302
<td valign="middle" align="left"> &nbsp; </td>
 
15303
<td valign="middle" align="left"> &nbsp; </td>
 
15304
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15305
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15306
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15307
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15308
</tr></table>
 
15309
<a name="force_005fy-1"></a>
 
15310
<h3 class="subsection">7.2.8 force_y</h3>
 
15311
 
 
15312
<p>A constant floor specific force into south direction applied additionally to all
 
15313
other forces to all actors on the floor.
 
15314
</p>
 
15315
<dl compact="compact">
 
15316
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
15317
<dt> <b>Values:</b> &nbsp;&nbsp;float number</dt>
 
15318
<dt> <b>Default:</b> &nbsp;&nbsp;<code>0.0</code></dt>
 
15319
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
15320
</dl>
 
15321
 
 
15322
<hr size="6">
 
15323
<a name="fragility-_0028floor_0029"></a>
 
15324
<table cellpadding="1" cellspacing="1" border="0">
 
15325
<tr><td valign="middle" align="left">[<a href="#force_005fy" title="Previous section in reading order"> &lt; </a>]</td>
 
15326
<td valign="middle" align="left">[<a href="#freeze_005fcheck-_0028floor_0029" title="Next section in reading order"> &gt; </a>]</td>
 
15327
<td valign="middle" align="left"> &nbsp; </td>
 
15328
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15329
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15330
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15331
<td valign="middle" align="left"> &nbsp; </td>
 
15332
<td valign="middle" align="left"> &nbsp; </td>
 
15333
<td valign="middle" align="left"> &nbsp; </td>
 
15334
<td valign="middle" align="left"> &nbsp; </td>
 
15335
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15336
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15337
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15338
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15339
</tr></table>
 
15340
<a name="fragility-_0028floor_0029-1"></a>
 
15341
<h3 class="subsection">7.2.9 fragility (floor)</h3>
 
15342
 
 
15343
<p>A value denoting the probability that a brittle floor plate, that is a floor
 
15344
with an <a href="#it_005fcrack">it_crack</a> on top, continues to disintegrate on events like an actor
 
15345
entering, passing a neighboring <a href="#it_005fcrack">it_crack</a>, nearby explosions or fire
 
15346
heating. A value of <code>1.0</code> ensures that the crack continues to disintegrate
 
15347
on these events, a value of <code>0.0</code> prohibits visible cracks to get larger.
 
15348
This value is defaulted by <a href="#Fragility">Fragility</a> and superseded by <a href="#it_005fcrack">it_crack</a>
 
15349
specific values.
 
15350
</p>
 
15351
<dl compact="compact">
 
15352
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
15353
<dt> <b>Values:</b> &nbsp;&nbsp;float numbers between <code>0.0</code> and <code>1.0</code></dt>
 
15354
<dt> <b>Default:</b> &nbsp;&nbsp;<code>1.0</code></dt>
 
15355
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
15356
</dl>
 
15357
 
 
15358
<hr size="6">
 
15359
<a name="freeze_005fcheck-_0028floor_0029"></a>
 
15360
<table cellpadding="1" cellspacing="1" border="0">
 
15361
<tr><td valign="middle" align="left">[<a href="#fragility-_0028floor_0029" title="Previous section in reading order"> &lt; </a>]</td>
 
15362
<td valign="middle" align="left">[<a href="#friction-_0028floor_0029" title="Next section in reading order"> &gt; </a>]</td>
 
15363
<td valign="middle" align="left"> &nbsp; </td>
 
15364
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15365
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15366
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15367
<td valign="middle" align="left"> &nbsp; </td>
 
15368
<td valign="middle" align="left"> &nbsp; </td>
 
15369
<td valign="middle" align="left"> &nbsp; </td>
 
15370
<td valign="middle" align="left"> &nbsp; </td>
 
15371
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15372
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15373
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15374
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15375
</tr></table>
 
15376
<a name="freeze_005fcheck-_0028floor_0029-1"></a>
 
15377
<h3 class="subsection">7.2.10 freeze_check (floor)</h3>
 
15378
 
 
15379
<p>If <code>true</code>, allows for <a href="#Freeze-Checking">Freeze Checking</a> on this floor tile. Note that
 
15380
Freeze Checking only works with those (movable) stones that have additionally set
 
15381
<code>freeze_check = true</code> on their own, see <a href="#freeze_005fcheck-_0028stone_0029">freeze_check (stone)</a>.
 
15382
</p>
 
15383
<dl compact="compact">
 
15384
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
15385
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
15386
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
15387
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
15388
</dl>
 
15389
 
 
15390
<hr size="6">
 
15391
<a name="friction-_0028floor_0029"></a>
 
15392
<table cellpadding="1" cellspacing="1" border="0">
 
15393
<tr><td valign="middle" align="left">[<a href="#freeze_005fcheck-_0028floor_0029" title="Previous section in reading order"> &lt; </a>]</td>
 
15394
<td valign="middle" align="left">[<a href="#ignitable" title="Next section in reading order"> &gt; </a>]</td>
 
15395
<td valign="middle" align="left"> &nbsp; </td>
 
15396
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15397
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15398
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15399
<td valign="middle" align="left"> &nbsp; </td>
 
15400
<td valign="middle" align="left"> &nbsp; </td>
 
15401
<td valign="middle" align="left"> &nbsp; </td>
 
15402
<td valign="middle" align="left"> &nbsp; </td>
 
15403
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15404
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15405
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15406
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15407
</tr></table>
 
15408
<a name="friction-_0028floor_0029-1"></a>
 
15409
<h3 class="subsection">7.2.11 friction (floor)</h3>
 
15410
 
 
15411
<p>see section <a href="#friction">friction</a>.
 
15412
</p>
 
15413
<dl compact="compact">
 
15414
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
15415
<dt> <b>Values:</b> &nbsp;&nbsp;float number</dt>
 
15416
<dt> <b>Default:</b> &nbsp;&nbsp;<code>0.0</code></dt>
 
15417
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
15418
</dl>
 
15419
 
 
15420
<hr size="6">
 
15421
<a name="ignitable"></a>
 
15422
<table cellpadding="1" cellspacing="1" border="0">
 
15423
<tr><td valign="middle" align="left">[<a href="#friction-_0028floor_0029" title="Previous section in reading order"> &lt; </a>]</td>
 
15424
<td valign="middle" align="left">[<a href="#indestructible" title="Next section in reading order"> &gt; </a>]</td>
 
15425
<td valign="middle" align="left"> &nbsp; </td>
 
15426
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15427
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15428
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15429
<td valign="middle" align="left"> &nbsp; </td>
 
15430
<td valign="middle" align="left"> &nbsp; </td>
 
15431
<td valign="middle" align="left"> &nbsp; </td>
 
15432
<td valign="middle" align="left"> &nbsp; </td>
 
15433
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15434
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15435
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15436
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15437
</tr></table>
 
15438
<a name="ignitable-1"></a>
 
15439
<h3 class="subsection">7.2.12 ignitable</h3>
 
15440
 
 
15441
<p>When <code>true</code>, and the item on the floor allows it to burn, it will start
 
15442
burning on nearby explosions. See section <a href="#Fire-Spreading">Fire Spreading</a> for details.
 
15443
</p>
 
15444
<dl compact="compact">
 
15445
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
15446
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
15447
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
15448
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
15449
</dl>
 
15450
 
 
15451
<hr size="6">
 
15452
<a name="indestructible"></a>
 
15453
<table cellpadding="1" cellspacing="1" border="0">
 
15454
<tr><td valign="middle" align="left">[<a href="#ignitable" title="Previous section in reading order"> &lt; </a>]</td>
 
15455
<td valign="middle" align="left">[<a href="#initfire" title="Next section in reading order"> &gt; </a>]</td>
 
15456
<td valign="middle" align="left"> &nbsp; </td>
 
15457
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15458
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15459
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15460
<td valign="middle" align="left"> &nbsp; </td>
 
15461
<td valign="middle" align="left"> &nbsp; </td>
 
15462
<td valign="middle" align="left"> &nbsp; </td>
 
15463
<td valign="middle" align="left"> &nbsp; </td>
 
15464
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15465
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15466
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15467
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15468
</tr></table>
 
15469
<a name="indestructible-1"></a>
 
15470
<h3 class="subsection">7.2.13 indestructible</h3>
 
15471
 
 
15472
<p>Most floors can dissolve to <a href="#fl_005fabyss">fl_abyss</a> or <a href="#fl_005fwater">fl_water</a> on destruction
 
15473
by explosions, fire, <a href="#ot_005fcannonball">ot_cannonball</a> hits, <a href="#it_005fcrack">it_crack</a>, <a href="#it_005ftrap">it_trap</a>,
 
15474
etc. But a few like <a href="#fl_005fabyss">fl_abyss</a>, <a href="#fl_005fwater">fl_water</a> and <a href="#fl_005fswamp">fl_swamp</a> are
 
15475
indestructible by all these events.
 
15476
</p>
 
15477
<dl compact="compact">
 
15478
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
15479
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
15480
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
15481
<dt> <b>Access:</b> &nbsp;&nbsp;none</dt>
 
15482
</dl>
 
15483
 
 
15484
<hr size="6">
 
15485
<a name="initfire"></a>
 
15486
<table cellpadding="1" cellspacing="1" border="0">
 
15487
<tr><td valign="middle" align="left">[<a href="#indestructible" title="Previous section in reading order"> &lt; </a>]</td>
 
15488
<td valign="middle" align="left">[<a href="#noash" title="Next section in reading order"> &gt; </a>]</td>
 
15489
<td valign="middle" align="left"> &nbsp; </td>
 
15490
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15491
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15492
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15493
<td valign="middle" align="left"> &nbsp; </td>
 
15494
<td valign="middle" align="left"> &nbsp; </td>
 
15495
<td valign="middle" align="left"> &nbsp; </td>
 
15496
<td valign="middle" align="left"> &nbsp; </td>
 
15497
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15498
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15499
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15500
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15501
</tr></table>
 
15502
<a name="initfire-1"></a>
 
15503
<h3 class="subsection">7.2.14 initfire</h3>
 
15504
 
 
15505
<p>When set to <code>true</code>, the floor will start to burn after level
 
15506
initialization. See section <a href="#Fire-Spreading">Fire Spreading</a> for details.
 
15507
</p>
 
15508
<dl compact="compact">
 
15509
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
15510
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
15511
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
15512
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
15513
</dl>
 
15514
 
 
15515
<hr size="6">
 
15516
<a name="noash"></a>
 
15517
<table cellpadding="1" cellspacing="1" border="0">
 
15518
<tr><td valign="middle" align="left">[<a href="#initfire" title="Previous section in reading order"> &lt; </a>]</td>
 
15519
<td valign="middle" align="left">[<a href="#push_005fdirections" title="Next section in reading order"> &gt; </a>]</td>
 
15520
<td valign="middle" align="left"> &nbsp; </td>
 
15521
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15522
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15523
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15524
<td valign="middle" align="left"> &nbsp; </td>
 
15525
<td valign="middle" align="left"> &nbsp; </td>
 
15526
<td valign="middle" align="left"> &nbsp; </td>
 
15527
<td valign="middle" align="left"> &nbsp; </td>
 
15528
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15529
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15530
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15531
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15532
</tr></table>
 
15533
<a name="noash-1"></a>
 
15534
<h3 class="subsection">7.2.15 noash</h3>
 
15535
 
 
15536
<p>Determines whether <a href="#it_005fburnable">it_burnable</a>_ash is put onto the floor after a fire
 
15537
stops. Ash stops a floor from re-igniting, so <code>noash = true</code> will allow a
 
15538
floor to start burning a second time, unless the item on it or its
 
15539
<code>burnable</code>-attribute deny fire. See section <a href="#Fire-Spreading">Fire Spreading</a> for details.
 
15540
</p>
 
15541
<p><a href="#fl_005fabyss">fl_abyss</a> is the only floor with <code>noash = true</code> by default, because
 
15542
ash falls into the abyss. Note however, that <a href="#fl_005fabyss">fl_abyss</a> isn&rsquo;t burnable by
 
15543
default.
 
15544
</p>
 
15545
<dl compact="compact">
 
15546
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
15547
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
15548
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
15549
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
15550
</dl>
 
15551
 
 
15552
<hr size="6">
 
15553
<a name="push_005fdirections"></a>
 
15554
<table cellpadding="1" cellspacing="1" border="0">
 
15555
<tr><td valign="middle" align="left">[<a href="#noash" title="Previous section in reading order"> &lt; </a>]</td>
 
15556
<td valign="middle" align="left">[<a href="#secure" title="Next section in reading order"> &gt; </a>]</td>
 
15557
<td valign="middle" align="left"> &nbsp; </td>
 
15558
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15559
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15560
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15561
<td valign="middle" align="left"> &nbsp; </td>
 
15562
<td valign="middle" align="left"> &nbsp; </td>
 
15563
<td valign="middle" align="left"> &nbsp; </td>
 
15564
<td valign="middle" align="left"> &nbsp; </td>
 
15565
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15566
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15567
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15568
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15569
</tr></table>
 
15570
<a name="push_005fdirections-1"></a>
 
15571
<h3 class="subsection">7.2.16 push_directions</h3>
 
15572
 
 
15573
<p>A hint for the resolver <a href="#res_002epuzzle">res.puzzle</a> for shuffling of a puzzle. A floor
 
15574
marked with this attribute guarantees that an adjacent puzzle row or column
 
15575
can be push rotated into the listed directions by the user.
 
15576
</p>
 
15577
<dl compact="compact">
 
15578
<dt> <b>Type:</b> &nbsp;&nbsp;string or nil</dt>
 
15579
<dt> <b>Values:</b> &nbsp;&nbsp;<code>nil</code>, <code>&quot;nesw&quot;</code></dt>
 
15580
<dt> <b>Default:</b> &nbsp;&nbsp;<code>nil</code></dt>
 
15581
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
15582
</dl>
 
15583
 
 
15584
<hr size="6">
 
15585
<a name="secure"></a>
 
15586
<table cellpadding="1" cellspacing="1" border="0">
 
15587
<tr><td valign="middle" align="left">[<a href="#push_005fdirections" title="Previous section in reading order"> &lt; </a>]</td>
 
15588
<td valign="middle" align="left">[<a href="#texture" title="Next section in reading order"> &gt; </a>]</td>
 
15589
<td valign="middle" align="left"> &nbsp; </td>
 
15590
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15591
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15592
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15593
<td valign="middle" align="left"> &nbsp; </td>
 
15594
<td valign="middle" align="left"> &nbsp; </td>
 
15595
<td valign="middle" align="left"> &nbsp; </td>
 
15596
<td valign="middle" align="left"> &nbsp; </td>
 
15597
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15598
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15599
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15600
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15601
</tr></table>
 
15602
<a name="secure-1"></a>
 
15603
<h3 class="subsection">7.2.17 secure</h3>
 
15604
 
 
15605
<p>Ensures that a nearby fire eventually ignites this floor. See section <a href="#Fire-Spreading">Fire Spreading</a>
 
15606
for details.
 
15607
</p>
 
15608
<dl compact="compact">
 
15609
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
15610
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
15611
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
15612
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
15613
</dl>
 
15614
 
 
15615
<hr size="6">
 
15616
<a name="texture"></a>
 
15617
<table cellpadding="1" cellspacing="1" border="0">
 
15618
<tr><td valign="middle" align="left">[<a href="#secure" title="Previous section in reading order"> &lt; </a>]</td>
 
15619
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Next section in reading order"> &gt; </a>]</td>
 
15620
<td valign="middle" align="left"> &nbsp; </td>
 
15621
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15622
<td valign="middle" align="left">[<a href="#Floor-Attributes" title="Up section"> Up </a>]</td>
 
15623
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15624
<td valign="middle" align="left"> &nbsp; </td>
 
15625
<td valign="middle" align="left"> &nbsp; </td>
 
15626
<td valign="middle" align="left"> &nbsp; </td>
 
15627
<td valign="middle" align="left"> &nbsp; </td>
 
15628
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15629
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15630
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15631
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15632
</tr></table>
 
15633
<a name="texture-1"></a>
 
15634
<h3 class="subsection">7.2.18 texture</h3>
 
15635
 
 
15636
<p>Many floors do provide several textures - graphical image variations that are
 
15637
without any influence on the physical engine. Most floors do select a random
 
15638
texture in their default variant. This generates areas without unintended
 
15639
optical effects. But on some floors you can select the textures by means
 
15640
of variant kind names to create your own graphical floor layout.
 
15641
</p>
 
15642
<dl compact="compact">
 
15643
<dt> <b>Type:</b> &nbsp;&nbsp;integer number or string</dt>
 
15644
<dt> <b>Values:</b> &nbsp;&nbsp;integer number or string</dt>
 
15645
<dt> <b>Default:</b> &nbsp;&nbsp;<code>1</code></dt>
 
15646
<dt> <b>Access:</b> &nbsp;&nbsp;currently none - just by variants kind string on some floors</dt>
 
15647
</dl>
 
15648
 
 
15649
<hr size="6">
 
15650
<a name="Standard-Floors"></a>
 
15651
<table cellpadding="1" cellspacing="1" border="0">
 
15652
<tr><td valign="middle" align="left">[<a href="#texture" title="Previous section in reading order"> &lt; </a>]</td>
 
15653
<td valign="middle" align="left">[<a href="#fl_005fadhesionless" title="Next section in reading order"> &gt; </a>]</td>
 
15654
<td valign="middle" align="left"> &nbsp; </td>
 
15655
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15656
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Up section"> Up </a>]</td>
 
15657
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15658
<td valign="middle" align="left"> &nbsp; </td>
 
15659
<td valign="middle" align="left"> &nbsp; </td>
 
15660
<td valign="middle" align="left"> &nbsp; </td>
 
15661
<td valign="middle" align="left"> &nbsp; </td>
 
15662
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15663
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15664
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15665
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15666
</tr></table>
 
15667
<a name="Standard-Floors-1"></a>
 
15668
<h2 class="section">7.3 Standard Floors</h2>
 
15669
 
 
15670
<table class="menu" border="0" cellspacing="0">
 
15671
<tr><td align="left" valign="top"><a href="#fl_005fadhesionless">7.3.1 fl_adhesionless</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">   Floor without adhesion but friction
 
15672
</td></tr>
 
15673
<tr><td align="left" valign="top"><a href="#fl_005faquamarine">7.3.2 fl_aquamarine</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Aquamarine floor with low friction
 
15674
</td></tr>
 
15675
<tr><td align="left" valign="top"><a href="#fl_005fbast">7.3.3 fl_bast</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Brown woven bast with black background
 
15676
</td></tr>
 
15677
<tr><td align="left" valign="top"><a href="#fl_005fbluegray">7.3.4 fl_bluegray</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Light blue gray floor
 
15678
</td></tr>
 
15679
<tr><td align="left" valign="top"><a href="#fl_005fbluegreen">7.3.5 fl_bluegreen</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Dark blue green floor
 
15680
</td></tr>
 
15681
<tr><td align="left" valign="top"><a href="#fl_005fblueslab">7.3.6 fl_blueslab</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Dark blue marbled slab
 
15682
</td></tr>
 
15683
<tr><td align="left" valign="top"><a href="#fl_005fbrick">7.3.7 fl_brick</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Floor composed of small red bricks
 
15684
</td></tr>
 
15685
<tr><td align="left" valign="top"><a href="#fl_005fbright">7.3.8 fl_bright</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Nearly white floor
 
15686
</td></tr>
 
15687
<tr><td align="left" valign="top"><a href="#fl_005fconcrete">7.3.9 fl_concrete</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Granular gray concrete
 
15688
</td></tr>
 
15689
<tr><td align="left" valign="top"><a href="#fl_005fdark">7.3.10 fl_dark</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Nearly black floor
 
15690
</td></tr>
 
15691
<tr><td align="left" valign="top"><a href="#fl_005fdarkgray">7.3.11 fl_darkgray</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Cold gray floor
 
15692
</td></tr>
 
15693
<tr><td align="left" valign="top"><a href="#fl_005fdunes">7.3.12 fl_dunes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Brown granular dunes
 
15694
</td></tr>
 
15695
<tr><td align="left" valign="top"><a href="#fl_005fgravel">7.3.13 fl_gravel</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Dark gray, granular floor
 
15696
</td></tr>
 
15697
<tr><td align="left" valign="top"><a href="#fl_005fgray">7.3.14 fl_gray</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Gray with some brown spots
 
15698
</td></tr>
 
15699
<tr><td align="left" valign="top"><a href="#fl_005fhimalaya">7.3.15 fl_himalaya</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Blue purple marbled floor
 
15700
</td></tr>
 
15701
<tr><td align="left" valign="top"><a href="#fl_005fivory">7.3.16 fl_ivory</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Warm pearl white floor
 
15702
</td></tr>
 
15703
<tr><td align="left" valign="top"><a href="#fl_005flawn">7.3.17 fl_lawn</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Grass in several textures
 
15704
</td></tr>
 
15705
<tr><td align="left" valign="top"><a href="#fl_005fmarble">7.3.18 fl_marble</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Light red brown marbled floor
 
15706
</td></tr>
 
15707
<tr><td align="left" valign="top"><a href="#fl_005fmetal">7.3.19 fl_metal</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Metal floor in several textures
 
15708
</td></tr>
 
15709
<tr><td align="left" valign="top"><a href="#fl_005fmortar">7.3.20 fl_mortar</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Rough white floor with gray wrinkles
 
15710
</td></tr>
 
15711
<tr><td align="left" valign="top"><a href="#fl_005fpinkbumps">7.3.21 fl_pinkbumps</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Pink floor with white bumps
 
15712
</td></tr>
 
15713
<tr><td align="left" valign="top"><a href="#fl_005fplank">7.3.22 fl_plank</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Small diagonal planks
 
15714
</td></tr>
 
15715
<tr><td align="left" valign="top"><a href="#fl_005fplatinum">7.3.23 fl_platinum</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Warm light gray floor
 
15716
</td></tr>
 
15717
<tr><td align="left" valign="top"><a href="#fl_005fred">7.3.24 fl_red</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Warm red floor with low friction
 
15718
</td></tr>
 
15719
<tr><td align="left" valign="top"><a href="#fl_005fredslab">7.3.25 fl_redslab</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Dark red marbled slab
 
15720
</td></tr>
 
15721
<tr><td align="left" valign="top"><a href="#fl_005frough">7.3.26 fl_rough</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Rough warm white floor
 
15722
</td></tr>
 
15723
<tr><td align="left" valign="top"><a href="#fl_005fsahara">7.3.27 fl_sahara</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Bright yellow sandstone floor
 
15724
</td></tr>
 
15725
<tr><td align="left" valign="top"><a href="#fl_005fsamba">7.3.28 fl_samba</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Grey bleached wooden floor
 
15726
</td></tr>
 
15727
<tr><td align="left" valign="top"><a href="#fl_005fsand">7.3.29 fl_sand</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Granular orange gray sand floor
 
15728
</td></tr>
 
15729
<tr><td align="left" valign="top"><a href="#fl_005fspace">7.3.30 fl_space</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Black space with a few sparkling stars
 
15730
</td></tr>
 
15731
<tr><td align="left" valign="top"><a href="#fl_005fstone">7.3.31 fl_stone</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Granular brown gray floor
 
15732
</td></tr>
 
15733
<tr><td align="left" valign="top"><a href="#fl_005ftigris">7.3.32 fl_tigris</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Red sandstone floor
 
15734
</td></tr>
 
15735
<tr><td align="left" valign="top"><a href="#fl_005fwhite">7.3.33 fl_white</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Pure white floor
 
15736
</td></tr>
 
15737
<tr><td align="left" valign="top"><a href="#fl_005fwoven">7.3.34 fl_woven</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          White black woven floor
 
15738
</td></tr>
 
15739
</table>
 
15740
<hr size="6">
 
15741
<a name="fl_005fadhesionless"></a>
 
15742
<table cellpadding="1" cellspacing="1" border="0">
 
15743
<tr><td valign="middle" align="left">[<a href="#Standard-Floors" title="Previous section in reading order"> &lt; </a>]</td>
 
15744
<td valign="middle" align="left">[<a href="#fl_005faquamarine" title="Next section in reading order"> &gt; </a>]</td>
 
15745
<td valign="middle" align="left"> &nbsp; </td>
 
15746
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15747
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
15748
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15749
<td valign="middle" align="left"> &nbsp; </td>
 
15750
<td valign="middle" align="left"> &nbsp; </td>
 
15751
<td valign="middle" align="left"> &nbsp; </td>
 
15752
<td valign="middle" align="left"> &nbsp; </td>
 
15753
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15754
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15755
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15756
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15757
</tr></table>
 
15758
<a name="fl_005fadhesionless-1"></a>
 
15759
<h3 class="subsection">7.3.1 fl_adhesionless</h3>
 
15760
<a name="index-fl_005fadhesionless"></a>
 
15761
 
 
15762
<p>Orange velvet that offers no adhesion but causes friction.
 
15763
</p>
 
15764
<dl compact="compact">
 
15765
<dt> <b>Attributes:</b></dt>
 
15766
<dd><dl compact="compact">
 
15767
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 0.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
15768
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.5 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
15769
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
15770
</dl>
 
15771
 
 
15772
</dd>
 
15773
<dt> <b>Variants:</b></dt>
 
15774
<dd><dl compact="compact">
 
15775
<dt> <img src="images/fl_adhesionless.png" alt="images/fl_adhesionless"><p> <b>fl_adhesionless</b>
 
15776
</p></dt>
 
15777
</dl>
 
15778
</dd>
 
15779
</dl>
 
15780
 
 
15781
<hr size="6">
 
15782
<a name="fl_005faquamarine"></a>
 
15783
<table cellpadding="1" cellspacing="1" border="0">
 
15784
<tr><td valign="middle" align="left">[<a href="#fl_005fadhesionless" title="Previous section in reading order"> &lt; </a>]</td>
 
15785
<td valign="middle" align="left">[<a href="#fl_005fbast" title="Next section in reading order"> &gt; </a>]</td>
 
15786
<td valign="middle" align="left"> &nbsp; </td>
 
15787
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15788
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
15789
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15790
<td valign="middle" align="left"> &nbsp; </td>
 
15791
<td valign="middle" align="left"> &nbsp; </td>
 
15792
<td valign="middle" align="left"> &nbsp; </td>
 
15793
<td valign="middle" align="left"> &nbsp; </td>
 
15794
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15795
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15796
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15797
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15798
</tr></table>
 
15799
<a name="fl_005faquamarine-1"></a>
 
15800
<h3 class="subsection">7.3.2 fl_aquamarine</h3>
 
15801
<a name="index-fl_005faquamarine"></a>
 
15802
 
 
15803
<p>Aquamarine floor with low friction.
 
15804
</p>
 
15805
<dl compact="compact">
 
15806
<dt> <b>Attributes:</b></dt>
 
15807
<dd><dl compact="compact">
 
15808
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
15809
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 0.4 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
15810
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
15811
</dl>
 
15812
 
 
15813
</dd>
 
15814
<dt> <b>Variants:</b></dt>
 
15815
<dd><dl compact="compact">
 
15816
<dt> <img src="images/fl_aquamarine.png" alt="images/fl_aquamarine"><p> <b>fl_aquamarine</b>
 
15817
</p></dt>
 
15818
<dt> <img src="images/fl_aquamarine_framed.png" alt="images/fl_aquamarine_framed"><p> <b>fl_aquamarine_framed</b>
 
15819
</p></dt>
 
15820
</dl>
 
15821
</dd>
 
15822
</dl>
 
15823
 
 
15824
<hr size="6">
 
15825
<a name="fl_005fbast"></a>
 
15826
<table cellpadding="1" cellspacing="1" border="0">
 
15827
<tr><td valign="middle" align="left">[<a href="#fl_005faquamarine" title="Previous section in reading order"> &lt; </a>]</td>
 
15828
<td valign="middle" align="left">[<a href="#fl_005fbluegray" title="Next section in reading order"> &gt; </a>]</td>
 
15829
<td valign="middle" align="left"> &nbsp; </td>
 
15830
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15831
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
15832
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15833
<td valign="middle" align="left"> &nbsp; </td>
 
15834
<td valign="middle" align="left"> &nbsp; </td>
 
15835
<td valign="middle" align="left"> &nbsp; </td>
 
15836
<td valign="middle" align="left"> &nbsp; </td>
 
15837
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15838
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15839
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15840
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15841
</tr></table>
 
15842
<a name="fl_005fbast-1"></a>
 
15843
<h3 class="subsection">7.3.3 fl_bast</h3>
 
15844
<a name="index-fl_005fbast"></a>
 
15845
 
 
15846
<p>Brown woven bast with black background.
 
15847
</p>
 
15848
<p>When burnt, <code>fl_bast</code> will become <a href="#fl_005fabyss">fl_abyss</a>.
 
15849
</p>
 
15850
<dl compact="compact">
 
15851
<dt> <b>Attributes:</b></dt>
 
15852
<dd><dl compact="compact">
 
15853
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.5 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
15854
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.5 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
15855
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
15856
</dl>
 
15857
 
 
15858
</dd>
 
15859
<dt> <b>Variants:</b></dt>
 
15860
<dd><dl compact="compact">
 
15861
<dt> <img src="images/fl_bast.png" alt="images/fl_bast"><p> <b>fl_bast</b>
 
15862
</p></dt>
 
15863
<dt> <img src="images/fl_bast_framed.png" alt="images/fl_bast_framed"><p> <b>fl_bast_framed</b>
 
15864
</p></dt>
 
15865
</dl>
 
15866
</dd>
 
15867
</dl>
 
15868
 
 
15869
<hr size="6">
 
15870
<a name="fl_005fbluegray"></a>
 
15871
<table cellpadding="1" cellspacing="1" border="0">
 
15872
<tr><td valign="middle" align="left">[<a href="#fl_005fbast" title="Previous section in reading order"> &lt; </a>]</td>
 
15873
<td valign="middle" align="left">[<a href="#fl_005fbluegreen" title="Next section in reading order"> &gt; </a>]</td>
 
15874
<td valign="middle" align="left"> &nbsp; </td>
 
15875
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15876
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
15877
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15878
<td valign="middle" align="left"> &nbsp; </td>
 
15879
<td valign="middle" align="left"> &nbsp; </td>
 
15880
<td valign="middle" align="left"> &nbsp; </td>
 
15881
<td valign="middle" align="left"> &nbsp; </td>
 
15882
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15883
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15884
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15885
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15886
</tr></table>
 
15887
<a name="fl_005fbluegray-1"></a>
 
15888
<h3 class="subsection">7.3.4 fl_bluegray</h3>
 
15889
<a name="index-fl_005fbluegray"></a>
 
15890
 
 
15891
<p>Light blue gray floor, visually indistinguishable from <a href="#fl_005fthief">fl_thief</a>.
 
15892
</p>
 
15893
<dl compact="compact">
 
15894
<dt> <b>Attributes:</b></dt>
 
15895
<dd><dl compact="compact">
 
15896
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.5 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
15897
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 4.5 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
15898
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
15899
</dl>
 
15900
 
 
15901
</dd>
 
15902
<dt> <b>Variants:</b></dt>
 
15903
<dd><dl compact="compact">
 
15904
<dt> <img src="images/fl_bluegray.png" alt="images/fl_bluegray"><p> <b>fl_bluegray</b>
 
15905
</p></dt>
 
15906
<dt> <img src="images/fl_bluegray_framed.png" alt="images/fl_bluegray_framed"><p> <b>fl_bluegray_framed</b>
 
15907
</p></dt>
 
15908
</dl>
 
15909
</dd>
 
15910
</dl>
 
15911
 
 
15912
<hr size="6">
 
15913
<a name="fl_005fbluegreen"></a>
 
15914
<table cellpadding="1" cellspacing="1" border="0">
 
15915
<tr><td valign="middle" align="left">[<a href="#fl_005fbluegray" title="Previous section in reading order"> &lt; </a>]</td>
 
15916
<td valign="middle" align="left">[<a href="#fl_005fblueslab" title="Next section in reading order"> &gt; </a>]</td>
 
15917
<td valign="middle" align="left"> &nbsp; </td>
 
15918
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15919
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
15920
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15921
<td valign="middle" align="left"> &nbsp; </td>
 
15922
<td valign="middle" align="left"> &nbsp; </td>
 
15923
<td valign="middle" align="left"> &nbsp; </td>
 
15924
<td valign="middle" align="left"> &nbsp; </td>
 
15925
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15926
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15927
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15928
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15929
</tr></table>
 
15930
<a name="fl_005fbluegreen-1"></a>
 
15931
<h3 class="subsection">7.3.5 fl_bluegreen</h3>
 
15932
<a name="index-fl_005fbluegreen"></a>
 
15933
 
 
15934
<p>Dark blue green floor.
 
15935
</p>
 
15936
<dl compact="compact">
 
15937
<dt> <b>Attributes:</b></dt>
 
15938
<dd><dl compact="compact">
 
15939
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
15940
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 6.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
15941
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
15942
</dl>
 
15943
 
 
15944
</dd>
 
15945
<dt> <b>Variants:</b></dt>
 
15946
<dd><dl compact="compact">
 
15947
<dt> <img src="images/fl_bluegreen.png" alt="images/fl_bluegreen"><p> <b>fl_bluegreen</b>
 
15948
</p></dt>
 
15949
<dt> <img src="images/fl_bluegreen_framed.png" alt="images/fl_bluegreen_framed"><p> <b>fl_bluegreen_framed</b>
 
15950
</p></dt>
 
15951
</dl>
 
15952
</dd>
 
15953
</dl>
 
15954
 
 
15955
<hr size="6">
 
15956
<a name="fl_005fblueslab"></a>
 
15957
<table cellpadding="1" cellspacing="1" border="0">
 
15958
<tr><td valign="middle" align="left">[<a href="#fl_005fbluegreen" title="Previous section in reading order"> &lt; </a>]</td>
 
15959
<td valign="middle" align="left">[<a href="#fl_005fbrick" title="Next section in reading order"> &gt; </a>]</td>
 
15960
<td valign="middle" align="left"> &nbsp; </td>
 
15961
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
15962
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
15963
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
15964
<td valign="middle" align="left"> &nbsp; </td>
 
15965
<td valign="middle" align="left"> &nbsp; </td>
 
15966
<td valign="middle" align="left"> &nbsp; </td>
 
15967
<td valign="middle" align="left"> &nbsp; </td>
 
15968
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
15969
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
15970
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
15971
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
15972
</tr></table>
 
15973
<a name="fl_005fblueslab-1"></a>
 
15974
<h3 class="subsection">7.3.6 fl_blueslab</h3>
 
15975
<a name="index-fl_005fblueslab"></a>
 
15976
 
 
15977
<p>Dark blue slab like floor, that is marbled with black. A matching floor is
 
15978
<a href="#fl_005fredslab">fl_redslab</a>.
 
15979
</p>
 
15980
<dl compact="compact">
 
15981
<dt> <b>Attributes:</b></dt>
 
15982
<dd><dl compact="compact">
 
15983
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
15984
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 7.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
15985
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
15986
</dl>
 
15987
 
 
15988
</dd>
 
15989
<dt> <b>Variants:</b></dt>
 
15990
<dd><dl compact="compact">
 
15991
<dt> <img src="images/fl_blueslab.png" alt="images/fl_blueslab"><p> <b>fl_blueslab</b>
 
15992
</p></dt>
 
15993
<dt> <img src="images/fl_blueslab_framed.png" alt="images/fl_blueslab_framed"><p> <b>fl_blueslab_framed</b>
 
15994
</p></dt>
 
15995
</dl>
 
15996
</dd>
 
15997
</dl>
 
15998
 
 
15999
<hr size="6">
 
16000
<a name="fl_005fbrick"></a>
 
16001
<table cellpadding="1" cellspacing="1" border="0">
 
16002
<tr><td valign="middle" align="left">[<a href="#fl_005fblueslab" title="Previous section in reading order"> &lt; </a>]</td>
 
16003
<td valign="middle" align="left">[<a href="#fl_005fbright" title="Next section in reading order"> &gt; </a>]</td>
 
16004
<td valign="middle" align="left"> &nbsp; </td>
 
16005
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16006
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16007
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16008
<td valign="middle" align="left"> &nbsp; </td>
 
16009
<td valign="middle" align="left"> &nbsp; </td>
 
16010
<td valign="middle" align="left"> &nbsp; </td>
 
16011
<td valign="middle" align="left"> &nbsp; </td>
 
16012
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16013
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16014
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16015
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16016
</tr></table>
 
16017
<a name="fl_005fbrick-1"></a>
 
16018
<h3 class="subsection">7.3.7 fl_brick</h3>
 
16019
<a name="index-fl_005fbrick"></a>
 
16020
 
 
16021
<p>Floor composed of small red bricks.
 
16022
</p>
 
16023
<dl compact="compact">
 
16024
<dt> <b>Attributes:</b></dt>
 
16025
<dd><dl compact="compact">
 
16026
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16027
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 3.5 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16028
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16029
</dl>
 
16030
 
 
16031
</dd>
 
16032
<dt> <b>Variants:</b></dt>
 
16033
<dd><dl compact="compact">
 
16034
<dt> <img src="images/fl_brick.png" alt="images/fl_brick"><p> <b>fl_brick</b>
 
16035
</p></dt>
 
16036
<dt> <img src="images/fl_brick_framed.png" alt="images/fl_brick_framed"><p>  <b>fl_brick_framed</b>
 
16037
</p></dt>
 
16038
</dl>
 
16039
</dd>
 
16040
</dl>
 
16041
 
 
16042
<hr size="6">
 
16043
<a name="fl_005fbright"></a>
 
16044
<table cellpadding="1" cellspacing="1" border="0">
 
16045
<tr><td valign="middle" align="left">[<a href="#fl_005fbrick" title="Previous section in reading order"> &lt; </a>]</td>
 
16046
<td valign="middle" align="left">[<a href="#fl_005fconcrete" title="Next section in reading order"> &gt; </a>]</td>
 
16047
<td valign="middle" align="left"> &nbsp; </td>
 
16048
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16049
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16050
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16051
<td valign="middle" align="left"> &nbsp; </td>
 
16052
<td valign="middle" align="left"> &nbsp; </td>
 
16053
<td valign="middle" align="left"> &nbsp; </td>
 
16054
<td valign="middle" align="left"> &nbsp; </td>
 
16055
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16056
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16057
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16058
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16059
</tr></table>
 
16060
<a name="fl_005fbright-1"></a>
 
16061
<h3 class="subsection">7.3.8 fl_bright</h3>
 
16062
<a name="index-fl_005fbright"></a>
 
16063
 
 
16064
<p>Nearly white floor without any yinyang related features. A matching floor is
 
16065
<a href="#fl_005fdark">fl_dark</a>.
 
16066
</p>
 
16067
<dl compact="compact">
 
16068
<dt> <b>Attributes:</b></dt>
 
16069
<dd><dl compact="compact">
 
16070
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.5 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16071
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 3.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16072
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16073
</dl>
 
16074
 
 
16075
</dd>
 
16076
<dt> <b>Variants:</b></dt>
 
16077
<dd><dl compact="compact">
 
16078
<dt> <img src="images/fl_bright.png" alt="images/fl_bright"><p> <b>fl_bright</b>
 
16079
</p></dt>
 
16080
<dt> <img src="images/fl_bright_framed.png" alt="images/fl_bright_framed"><p> <b>fl_bright_framed</b>
 
16081
</p></dt>
 
16082
</dl>
 
16083
</dd>
 
16084
</dl>
 
16085
 
 
16086
<hr size="6">
 
16087
<a name="fl_005fconcrete"></a>
 
16088
<table cellpadding="1" cellspacing="1" border="0">
 
16089
<tr><td valign="middle" align="left">[<a href="#fl_005fbright" title="Previous section in reading order"> &lt; </a>]</td>
 
16090
<td valign="middle" align="left">[<a href="#fl_005fdark" title="Next section in reading order"> &gt; </a>]</td>
 
16091
<td valign="middle" align="left"> &nbsp; </td>
 
16092
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16093
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16094
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16095
<td valign="middle" align="left"> &nbsp; </td>
 
16096
<td valign="middle" align="left"> &nbsp; </td>
 
16097
<td valign="middle" align="left"> &nbsp; </td>
 
16098
<td valign="middle" align="left"> &nbsp; </td>
 
16099
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16100
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16101
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16102
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16103
</tr></table>
 
16104
<a name="fl_005fconcrete-1"></a>
 
16105
<h3 class="subsection">7.3.9 fl_concrete</h3>
 
16106
<a name="index-fl_005fconcrete"></a>
 
16107
 
 
16108
<p>Granular gray concrete.
 
16109
</p>
 
16110
<dl compact="compact">
 
16111
<dt> <b>Attributes:</b></dt>
 
16112
<dd><dl compact="compact">
 
16113
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.3 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16114
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 4.5 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16115
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16116
</dl>
 
16117
 
 
16118
</dd>
 
16119
<dt> <b>Variants:</b></dt>
 
16120
<dd><dl compact="compact">
 
16121
<dt> <img src="images/fl_concrete.png" alt="images/fl_concrete"><p> <b>fl_concrete</b>
 
16122
</p></dt>
 
16123
<dt> <img src="images/fl_concrete_framed.png" alt="images/fl_concrete_framed"><p> <b>fl_concrete_framed</b>
 
16124
</p></dt>
 
16125
</dl>
 
16126
</dd>
 
16127
</dl>
 
16128
 
 
16129
<hr size="6">
 
16130
<a name="fl_005fdark"></a>
 
16131
<table cellpadding="1" cellspacing="1" border="0">
 
16132
<tr><td valign="middle" align="left">[<a href="#fl_005fconcrete" title="Previous section in reading order"> &lt; </a>]</td>
 
16133
<td valign="middle" align="left">[<a href="#fl_005fdarkgray" title="Next section in reading order"> &gt; </a>]</td>
 
16134
<td valign="middle" align="left"> &nbsp; </td>
 
16135
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16136
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16137
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16138
<td valign="middle" align="left"> &nbsp; </td>
 
16139
<td valign="middle" align="left"> &nbsp; </td>
 
16140
<td valign="middle" align="left"> &nbsp; </td>
 
16141
<td valign="middle" align="left"> &nbsp; </td>
 
16142
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16143
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16144
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16145
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16146
</tr></table>
 
16147
<a name="fl_005fdark-1"></a>
 
16148
<h3 class="subsection">7.3.10 fl_dark</h3>
 
16149
<a name="index-fl_005fdark"></a>
 
16150
 
 
16151
<p>Nearly black floor without any yinyang related features. A matching floor is
 
16152
<a href="#fl_005fbright">fl_bright</a>.
 
16153
</p>
 
16154
<dl compact="compact">
 
16155
<dt> <b>Attributes:</b></dt>
 
16156
<dd><dl compact="compact">
 
16157
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.5 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16158
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 3.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16159
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16160
</dl>
 
16161
 
 
16162
</dd>
 
16163
<dt> <b>Variants:</b></dt>
 
16164
<dd><dl compact="compact">
 
16165
<dt> <img src="images/fl_dark.png" alt="images/fl_dark"><p> <b>fl_dark</b>
 
16166
</p></dt>
 
16167
<dt> <img src="images/fl_dark_framed.png" alt="images/fl_dark_framed"><p> <b>fl_dark_framed</b>
 
16168
</p></dt>
 
16169
</dl>
 
16170
</dd>
 
16171
</dl>
 
16172
 
 
16173
<hr size="6">
 
16174
<a name="fl_005fdarkgray"></a>
 
16175
<table cellpadding="1" cellspacing="1" border="0">
 
16176
<tr><td valign="middle" align="left">[<a href="#fl_005fdark" title="Previous section in reading order"> &lt; </a>]</td>
 
16177
<td valign="middle" align="left">[<a href="#fl_005fdunes" title="Next section in reading order"> &gt; </a>]</td>
 
16178
<td valign="middle" align="left"> &nbsp; </td>
 
16179
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16180
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16181
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16182
<td valign="middle" align="left"> &nbsp; </td>
 
16183
<td valign="middle" align="left"> &nbsp; </td>
 
16184
<td valign="middle" align="left"> &nbsp; </td>
 
16185
<td valign="middle" align="left"> &nbsp; </td>
 
16186
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16187
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16188
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16189
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16190
</tr></table>
 
16191
<a name="fl_005fdarkgray-1"></a>
 
16192
<h3 class="subsection">7.3.11 fl_darkgray</h3>
 
16193
<a name="index-fl_005fdarkgray"></a>
 
16194
 
 
16195
<p>A medium to dark gray floor.
 
16196
</p>
 
16197
<dl compact="compact">
 
16198
<dt> <b>Attributes:</b></dt>
 
16199
<dd><dl compact="compact">
 
16200
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.6 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16201
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 3.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16202
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16203
</dl>
 
16204
 
 
16205
</dd>
 
16206
<dt> <b>Variants:</b></dt>
 
16207
<dd><dl compact="compact">
 
16208
<dt> <img src="images/fl_darkgray.png" alt="images/fl_darkgray"><p> <b>fl_darkgray</b>
 
16209
</p></dt>
 
16210
<dt> <img src="images/fl_darkgray_framed.png" alt="images/fl_darkgray_framed"><p> <b>fl_darkgray_framed</b>
 
16211
</p></dt>
 
16212
</dl>
 
16213
</dd>
 
16214
</dl>
 
16215
 
 
16216
<hr size="6">
 
16217
<a name="fl_005fdunes"></a>
 
16218
<table cellpadding="1" cellspacing="1" border="0">
 
16219
<tr><td valign="middle" align="left">[<a href="#fl_005fdarkgray" title="Previous section in reading order"> &lt; </a>]</td>
 
16220
<td valign="middle" align="left">[<a href="#fl_005fgravel" title="Next section in reading order"> &gt; </a>]</td>
 
16221
<td valign="middle" align="left"> &nbsp; </td>
 
16222
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16223
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16224
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16225
<td valign="middle" align="left"> &nbsp; </td>
 
16226
<td valign="middle" align="left"> &nbsp; </td>
 
16227
<td valign="middle" align="left"> &nbsp; </td>
 
16228
<td valign="middle" align="left"> &nbsp; </td>
 
16229
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16230
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16231
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16232
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16233
</tr></table>
 
16234
<a name="fl_005fdunes-1"></a>
 
16235
<h3 class="subsection">7.3.12 fl_dunes</h3>
 
16236
<a name="index-fl_005fdunes"></a>
 
16237
 
 
16238
<p>Brown granular dunes.
 
16239
</p>
 
16240
<dl compact="compact">
 
16241
<dt> <b>Attributes:</b></dt>
 
16242
<dd><dl compact="compact">
 
16243
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16244
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.3 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16245
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16246
</dl>
 
16247
 
 
16248
</dd>
 
16249
<dt> <b>Variants:</b></dt>
 
16250
<dd><dl compact="compact">
 
16251
<dt> <img src="images/fl_dunes.png" alt="images/fl_dunes"><p> <b>fl_dunes</b>
 
16252
</p></dt>
 
16253
<dt> <img src="images/fl_dunes_framed.png" alt="images/fl_dunes_framed"><p> <b>fl_dunes_framed</b>
 
16254
</p></dt>
 
16255
</dl>
 
16256
</dd>
 
16257
</dl>
 
16258
 
 
16259
<hr size="6">
 
16260
<a name="fl_005fgravel"></a>
 
16261
<table cellpadding="1" cellspacing="1" border="0">
 
16262
<tr><td valign="middle" align="left">[<a href="#fl_005fdunes" title="Previous section in reading order"> &lt; </a>]</td>
 
16263
<td valign="middle" align="left">[<a href="#fl_005fgray" title="Next section in reading order"> &gt; </a>]</td>
 
16264
<td valign="middle" align="left"> &nbsp; </td>
 
16265
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16266
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16267
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16268
<td valign="middle" align="left"> &nbsp; </td>
 
16269
<td valign="middle" align="left"> &nbsp; </td>
 
16270
<td valign="middle" align="left"> &nbsp; </td>
 
16271
<td valign="middle" align="left"> &nbsp; </td>
 
16272
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16273
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16274
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16275
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16276
</tr></table>
 
16277
<a name="fl_005fgravel-1"></a>
 
16278
<h3 class="subsection">7.3.13 fl_gravel</h3>
 
16279
<a name="index-fl_005fgravel"></a>
 
16280
 
 
16281
<p>Dark gray, granular floor.
 
16282
</p>
 
16283
<dl compact="compact">
 
16284
<dt> <b>Attributes:</b></dt>
 
16285
<dd><dl compact="compact">
 
16286
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.5 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16287
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 3.2 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16288
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16289
</dl>
 
16290
 
 
16291
</dd>
 
16292
<dt> <b>Variants:</b></dt>
 
16293
<dd><dl compact="compact">
 
16294
<dt> <img src="images/fl_gravel.png" alt="images/fl_gravel"><p> <b>fl_gravel</b>
 
16295
</p></dt>
 
16296
<dt> <img src="images/fl_gravel_framed.png" alt="images/fl_gravel_framed"><p> <b>fl_gravel_framed</b>
 
16297
</p></dt>
 
16298
</dl>
 
16299
</dd>
 
16300
</dl>
 
16301
 
 
16302
<hr size="6">
 
16303
<a name="fl_005fgray"></a>
 
16304
<table cellpadding="1" cellspacing="1" border="0">
 
16305
<tr><td valign="middle" align="left">[<a href="#fl_005fgravel" title="Previous section in reading order"> &lt; </a>]</td>
 
16306
<td valign="middle" align="left">[<a href="#fl_005fhimalaya" title="Next section in reading order"> &gt; </a>]</td>
 
16307
<td valign="middle" align="left"> &nbsp; </td>
 
16308
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16309
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16310
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16311
<td valign="middle" align="left"> &nbsp; </td>
 
16312
<td valign="middle" align="left"> &nbsp; </td>
 
16313
<td valign="middle" align="left"> &nbsp; </td>
 
16314
<td valign="middle" align="left"> &nbsp; </td>
 
16315
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16316
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16317
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16318
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16319
</tr></table>
 
16320
<a name="fl_005fgray-1"></a>
 
16321
<h3 class="subsection">7.3.14 fl_gray</h3>
 
16322
<a name="index-fl_005fgray"></a>
 
16323
 
 
16324
<p>Gray with some brown spots.
 
16325
</p>
 
16326
<dl compact="compact">
 
16327
<dt> <b>Attributes:</b></dt>
 
16328
<dd><dl compact="compact">
 
16329
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 3.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16330
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 5.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16331
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16332
</dl>
 
16333
 
 
16334
</dd>
 
16335
<dt> <b>Variants:</b></dt>
 
16336
<dd><dl compact="compact">
 
16337
<dt> <img src="images/fl_gray.png" alt="images/fl_gray"><p> <b>fl_gray</b>
 
16338
</p></dt>
 
16339
<dt> <img src="images/fl_gray_framed.png" alt="images/fl_gray_framed"><p> <b>fl_gray_framed</b>
 
16340
</p></dt>
 
16341
</dl>
 
16342
</dd>
 
16343
</dl>
 
16344
 
 
16345
<hr size="6">
 
16346
<a name="fl_005fhimalaya"></a>
 
16347
<table cellpadding="1" cellspacing="1" border="0">
 
16348
<tr><td valign="middle" align="left">[<a href="#fl_005fgray" title="Previous section in reading order"> &lt; </a>]</td>
 
16349
<td valign="middle" align="left">[<a href="#fl_005fivory" title="Next section in reading order"> &gt; </a>]</td>
 
16350
<td valign="middle" align="left"> &nbsp; </td>
 
16351
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16352
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16353
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16354
<td valign="middle" align="left"> &nbsp; </td>
 
16355
<td valign="middle" align="left"> &nbsp; </td>
 
16356
<td valign="middle" align="left"> &nbsp; </td>
 
16357
<td valign="middle" align="left"> &nbsp; </td>
 
16358
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16359
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16360
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16361
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16362
</tr></table>
 
16363
<a name="fl_005fhimalaya-1"></a>
 
16364
<h3 class="subsection">7.3.15 fl_himalaya</h3>
 
16365
<a name="index-fl_005fhimalaya"></a>
 
16366
 
 
16367
<p>Blue purple marbled floor.
 
16368
</p>
 
16369
<dl compact="compact">
 
16370
<dt> <b>Attributes:</b></dt>
 
16371
<dd><dl compact="compact">
 
16372
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16373
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 5.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16374
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16375
</dl>
 
16376
 
 
16377
</dd>
 
16378
<dt> <b>Variants:</b></dt>
 
16379
<dd><dl compact="compact">
 
16380
<dt> <img src="images/fl_himalaya.png" alt="images/fl_himalaya"><p> <b>fl_himalaya</b>
 
16381
</p></dt>
 
16382
<dt> <img src="images/fl_himalaya_framed.png" alt="images/fl_himalaya_framed"><p> <b>fl_himalaya_framed</b>
 
16383
</p></dt>
 
16384
</dl>
 
16385
</dd>
 
16386
</dl>
 
16387
 
 
16388
<hr size="6">
 
16389
<a name="fl_005fivory"></a>
 
16390
<table cellpadding="1" cellspacing="1" border="0">
 
16391
<tr><td valign="middle" align="left">[<a href="#fl_005fhimalaya" title="Previous section in reading order"> &lt; </a>]</td>
 
16392
<td valign="middle" align="left">[<a href="#fl_005flawn" title="Next section in reading order"> &gt; </a>]</td>
 
16393
<td valign="middle" align="left"> &nbsp; </td>
 
16394
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16395
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16396
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16397
<td valign="middle" align="left"> &nbsp; </td>
 
16398
<td valign="middle" align="left"> &nbsp; </td>
 
16399
<td valign="middle" align="left"> &nbsp; </td>
 
16400
<td valign="middle" align="left"> &nbsp; </td>
 
16401
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16402
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16403
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16404
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16405
</tr></table>
 
16406
<a name="fl_005fivory-1"></a>
 
16407
<h3 class="subsection">7.3.16 fl_ivory</h3>
 
16408
<a name="index-fl_005fivory"></a>
 
16409
 
 
16410
<p>Warm ivory or pearl white floor.
 
16411
</p>
 
16412
<dl compact="compact">
 
16413
<dt> <b>Attributes:</b></dt>
 
16414
<dd><dl compact="compact">
 
16415
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.6 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16416
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.2 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16417
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16418
</dl>
 
16419
 
 
16420
</dd>
 
16421
<dt> <b>Variants:</b></dt>
 
16422
<dd><dl compact="compact">
 
16423
<dt> <img src="images/fl_ivory.png" alt="images/fl_ivory"><p> <b>fl_ivory</b>
 
16424
</p></dt>
 
16425
<dt> <img src="images/fl_ivory_framed.png" alt="images/fl_ivory_framed"><p> <b>fl_ivory_framed</b>
 
16426
</p></dt>
 
16427
</dl>
 
16428
</dd>
 
16429
</dl>
 
16430
 
 
16431
<hr size="6">
 
16432
<a name="fl_005flawn"></a>
 
16433
<table cellpadding="1" cellspacing="1" border="0">
 
16434
<tr><td valign="middle" align="left">[<a href="#fl_005fivory" title="Previous section in reading order"> &lt; </a>]</td>
 
16435
<td valign="middle" align="left">[<a href="#fl_005fmarble" title="Next section in reading order"> &gt; </a>]</td>
 
16436
<td valign="middle" align="left"> &nbsp; </td>
 
16437
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16438
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16439
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16440
<td valign="middle" align="left"> &nbsp; </td>
 
16441
<td valign="middle" align="left"> &nbsp; </td>
 
16442
<td valign="middle" align="left"> &nbsp; </td>
 
16443
<td valign="middle" align="left"> &nbsp; </td>
 
16444
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16445
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16446
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16447
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16448
</tr></table>
 
16449
<a name="fl_005flawn-1"></a>
 
16450
<h3 class="subsection">7.3.17 fl_lawn</h3>
 
16451
<a name="index-fl_005flawn"></a>
 
16452
 
 
16453
<p>Grass floor. Light and dark grass and different textures of both exist.
 
16454
</p>
 
16455
<p>When burnt, <code>fl_lawn</code> becomes <a href="#fl_005fdunes">fl_dunes</a>.
 
16456
</p>
 
16457
<dl compact="compact">
 
16458
<dt> <b>Attributes:</b></dt>
 
16459
<dd><dl compact="compact">
 
16460
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.5 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16461
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 4.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16462
<dt> <b>texture</b>, &nbsp;&nbsp;<i>values</i>: &quot;a&quot;,&quot;b&quot;,&quot;c1&quot;,&quot;c2&quot;,&quot;c3&quot;,&quot;c4&quot;,&quot;d1&quot;,&quot;d2&quot;,&quot;d3&quot;,&quot;d4&quot;,&quot;e1&quot;,&quot;e2&quot;,&quot;e3&quot;,&quot;e4&quot; ; &nbsp;&nbsp;<i>default</i>: &quot;a&quot;; &nbsp;&nbsp;<i>access</i>: <code>none</code>  &nbsp;&nbsp;See section <a href="#texture">texture</a></dt>
 
16463
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16464
</dl>
 
16465
 
 
16466
</dd>
 
16467
<dt> <b>Variants:</b></dt>
 
16468
<dd><table>
 
16469
<tr><td width="8%"><img src="images/fl_lawn.png" alt="images/fl_lawn"></td><td width="42%"><b>fl_lawn_a</b>: texture = &lsquo;<samp>&quot;a&quot;</samp>&rsquo;</td><td width="8%"><img src="images/fl_lawn_c.png" alt="images/fl_lawn_c"></td><td width="42%"><b>fl_lawn_b</b>: texture = &lsquo;<samp>&quot;b&quot;</samp>&rsquo;</td></tr>
 
16470
<tr><td width="8%"><img src="images/fl_lawn_e.png" alt="images/fl_lawn_e"></td><td width="42%"><b>fl_lawn_c1</b>: texture = &lsquo;<samp>&quot;c1&quot;</samp>&rsquo;</td><td width="8%"><img src="images/fl_lawn_f.png" alt="images/fl_lawn_f"></td><td width="42%"><b>fl_lawn_c3</b>: texture = &lsquo;<samp>&quot;c3&quot;</samp>&rsquo;</td></tr>
 
16471
<tr><td width="8%"><img src="images/fl_lawn_e2.png" alt="images/fl_lawn_e2"></td><td width="42%"><b>fl_lawn_c2</b>: texture = &lsquo;<samp>&quot;c2&quot;</samp>&rsquo;</td><td width="8%"><img src="images/fl_lawn_f2.png" alt="images/fl_lawn_f2"></td><td width="42%"><b>fl_lawn_c4</b>: texture = &lsquo;<samp>&quot;c4&quot;</samp>&rsquo;</td></tr>
 
16472
<tr><td width="8%"><img src="images/fl_lawn_g.png" alt="images/fl_lawn_g"></td><td width="42%"><b>fl_lawn_d1</b>: texture = &lsquo;<samp>&quot;d1&quot;</samp>&rsquo;</td><td width="8%"><img src="images/fl_lawn_h.png" alt="images/fl_lawn_h"></td><td width="42%"><b>fl_lawn_d3</b>: texture = &lsquo;<samp>&quot;d3&quot;</samp>&rsquo;</td></tr>
 
16473
<tr><td width="8%"><img src="images/fl_lawn_g2.png" alt="images/fl_lawn_g2"></td><td width="42%"><b>fl_lawn_d2</b>: texture = &lsquo;<samp>&quot;d2&quot;</samp>&rsquo;</td><td width="8%"><img src="images/fl_lawn_h2.png" alt="images/fl_lawn_h2"></td><td width="42%"><b>fl_lawn_d4</b>: texture = &lsquo;<samp>&quot;d4&quot;</samp>&rsquo;</td></tr>
 
16474
<tr><td width="8%"><img src="images/fl_lawn_i.png" alt="images/fl_lawn_i"></td><td width="42%"><b>fl_lawn_e1</b>: texture = &lsquo;<samp>&quot;e1&quot;</samp>&rsquo;</td><td width="8%"><img src="images/fl_lawn_j.png" alt="images/fl_lawn_j"></td><td width="42%"><b>fl_lawn_e3</b>: texture = &lsquo;<samp>&quot;e3&quot;</samp>&rsquo;</td></tr>
 
16475
<tr><td width="8%"><img src="images/fl_lawn_i2.png" alt="images/fl_lawn_i2"></td><td width="42%"><b>fl_lawn_e2</b>: texture = &lsquo;<samp>&quot;e2&quot;</samp>&rsquo;</td><td width="8%"><img src="images/fl_lawn_j2.png" alt="images/fl_lawn_j2"></td><td width="42%"><b>fl_lawn_e4</b>: texture = &lsquo;<samp>&quot;e4&quot;</samp>&rsquo;</td></tr>
 
16476
<tr><td width="8%"><img src="images/fl_lawn.png" alt="images/fl_lawn"></td><td width="42%"><b>fl_lawn</b>: texture = &lsquo;<samp>&quot;a&quot;</samp>&rsquo;</td></tr>
 
16477
</table>
 
16478
</dd>
 
16479
</dl>
 
16480
 
 
16481
<hr size="6">
 
16482
<a name="fl_005fmarble"></a>
 
16483
<table cellpadding="1" cellspacing="1" border="0">
 
16484
<tr><td valign="middle" align="left">[<a href="#fl_005flawn" title="Previous section in reading order"> &lt; </a>]</td>
 
16485
<td valign="middle" align="left">[<a href="#fl_005fmetal" title="Next section in reading order"> &gt; </a>]</td>
 
16486
<td valign="middle" align="left"> &nbsp; </td>
 
16487
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16488
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16489
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16490
<td valign="middle" align="left"> &nbsp; </td>
 
16491
<td valign="middle" align="left"> &nbsp; </td>
 
16492
<td valign="middle" align="left"> &nbsp; </td>
 
16493
<td valign="middle" align="left"> &nbsp; </td>
 
16494
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16495
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16496
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16497
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16498
</tr></table>
 
16499
<a name="fl_005fmarble-1"></a>
 
16500
<h3 class="subsection">7.3.18 fl_marble</h3>
 
16501
<a name="index-fl_005fmarble"></a>
 
16502
 
 
16503
<p>Light red brown marbled floor.
 
16504
</p>
 
16505
<dl compact="compact">
 
16506
<dt> <b>Attributes:</b></dt>
 
16507
<dd><dl compact="compact">
 
16508
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16509
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 6.4 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16510
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16511
</dl>
 
16512
 
 
16513
</dd>
 
16514
<dt> <b>Variants:</b></dt>
 
16515
<dd><dl compact="compact">
 
16516
<dt> <img src="images/fl_marble.png" alt="images/fl_marble"><p> <b>fl_marble</b>
 
16517
</p></dt>
 
16518
<dt> <img src="images/fl_marble_framed.png" alt="images/fl_marble_framed"><p> <b>fl_marble_framed</b>
 
16519
</p></dt>
 
16520
</dl>
 
16521
</dd>
 
16522
</dl>
 
16523
 
 
16524
<hr size="6">
 
16525
<a name="fl_005fmetal"></a>
 
16526
<table cellpadding="1" cellspacing="1" border="0">
 
16527
<tr><td valign="middle" align="left">[<a href="#fl_005fmarble" title="Previous section in reading order"> &lt; </a>]</td>
 
16528
<td valign="middle" align="left">[<a href="#fl_005fmortar" title="Next section in reading order"> &gt; </a>]</td>
 
16529
<td valign="middle" align="left"> &nbsp; </td>
 
16530
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16531
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16532
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16533
<td valign="middle" align="left"> &nbsp; </td>
 
16534
<td valign="middle" align="left"> &nbsp; </td>
 
16535
<td valign="middle" align="left"> &nbsp; </td>
 
16536
<td valign="middle" align="left"> &nbsp; </td>
 
16537
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16538
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16539
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16540
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16541
</tr></table>
 
16542
<a name="fl_005fmetal-1"></a>
 
16543
<h3 class="subsection">7.3.19 fl_metal</h3>
 
16544
<a name="index-fl_005fmetal"></a>
 
16545
 
 
16546
<p>Grey metal floor with rivets. Several different textures exists with horizontal
 
16547
or vertical aligned joists and various rivets.
 
16548
</p>
 
16549
<dl compact="compact">
 
16550
<dt> <b>Attributes:</b></dt>
 
16551
<dd><dl compact="compact">
 
16552
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16553
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 3.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16554
<dt> <b>texture</b>, &nbsp;&nbsp;<i>values</i>: integer number, 1 &lt;= n &lt;= 7  ; &nbsp;&nbsp;<i>default</i>: random; &nbsp;&nbsp;<i>access</i>: <code>none</code>  &nbsp;&nbsp;See section <a href="#texture">texture</a></dt>
 
16555
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16556
</dl>
 
16557
 
 
16558
</dd>
 
16559
<dt> <b>Variants:</b></dt>
 
16560
<dd><table>
 
16561
<tr><td width="8%"><img src="images/fl_metal.png" alt="images/fl_metal"></td><td width="42%"><b>fl_metal</b>: texture = &lsquo;<samp>random</samp>&rsquo;</td><td width="8%"><img src="images/fl_metal_framed.png" alt="images/fl_metal_framed"></td><td width="42%"><b>fl_metal_framed</b>: texture = &lsquo;<samp>random</samp>&rsquo;</td></tr>
 
16562
<tr><td width="8%"><img src="images/fl_metal.png" alt="images/fl_metal"></td><td width="42%"><b>fl_metal_1</b>: texture = <code>1</code></td><td width="8%"><img src="images/fl_metal_framed.png" alt="images/fl_metal_framed"></td><td width="42%"><b>fl_metal_1_framed</b>: texture = <code>1</code></td></tr>
 
16563
<tr><td width="8%"><img src="images/fl_metal_2.png" alt="images/fl_metal_2"></td><td width="42%"><b>fl_metal_2</b>: texture = <code>2</code></td><td width="8%"><img src="images/construction.png" alt="images/construction"></td><td width="42%"><b>fl_metal_2_framed</b>: texture = <code>2</code></td></tr>
 
16564
<tr><td width="8%"><img src="images/fl_metal_3.png" alt="images/fl_metal_3"></td><td width="42%"><b>fl_metal_3</b>: texture = <code>3</code></td><td width="8%"><img src="images/construction.png" alt="images/construction"></td><td width="42%"><b>fl_metal_3_framed</b>: texture = <code>3</code></td></tr>
 
16565
<tr><td width="8%"><img src="images/fl_metal_4.png" alt="images/fl_metal_4"></td><td width="42%"><b>fl_metal_4</b>: texture = <code>4</code></td><td width="8%"><img src="images/construction.png" alt="images/construction"></td><td width="42%"><b>fl_metal_4_framed</b>: texture = <code>4</code></td></tr>
 
16566
<tr><td width="8%"><img src="images/fl_metal_5.png" alt="images/fl_metal_5"></td><td width="42%"><b>fl_metal_5</b>: texture = <code>5</code></td><td width="8%"><img src="images/construction.png" alt="images/construction"></td><td width="42%"><b>fl_metal_5_framed</b>: texture = <code>5</code></td></tr>
 
16567
<tr><td width="8%"><img src="images/fl_metal_6.png" alt="images/fl_metal_6"></td><td width="42%"><b>fl_metal_6</b>: texture = <code>6</code></td><td width="8%"><img src="images/construction.png" alt="images/construction"></td><td width="42%"><b>fl_metal_6_framed</b>: texture = <code>6</code></td></tr>
 
16568
<tr><td width="8%"><img src="images/fl_metal_7.png" alt="images/fl_metal_7"></td><td width="42%"><b>fl_metal_7</b>: texture = <code>7</code></td><td width="8%"><img src="images/construction.png" alt="images/construction"></td><td width="42%"><b>fl_metal_7_framed</b>: texture = <code>7</code></td></tr>
 
16569
</table>
 
16570
</dd>
 
16571
</dl>
 
16572
 
 
16573
<hr size="6">
 
16574
<a name="fl_005fmortar"></a>
 
16575
<table cellpadding="1" cellspacing="1" border="0">
 
16576
<tr><td valign="middle" align="left">[<a href="#fl_005fmetal" title="Previous section in reading order"> &lt; </a>]</td>
 
16577
<td valign="middle" align="left">[<a href="#fl_005fpinkbumps" title="Next section in reading order"> &gt; </a>]</td>
 
16578
<td valign="middle" align="left"> &nbsp; </td>
 
16579
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16580
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16581
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16582
<td valign="middle" align="left"> &nbsp; </td>
 
16583
<td valign="middle" align="left"> &nbsp; </td>
 
16584
<td valign="middle" align="left"> &nbsp; </td>
 
16585
<td valign="middle" align="left"> &nbsp; </td>
 
16586
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16587
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16588
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16589
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16590
</tr></table>
 
16591
<a name="fl_005fmortar-1"></a>
 
16592
<h3 class="subsection">7.3.20 fl_mortar</h3>
 
16593
<a name="index-fl_005fmortar"></a>
 
16594
 
 
16595
<p>Very rough brilliant white floor.
 
16596
</p>
 
16597
<dl compact="compact">
 
16598
<dt> <b>Attributes:</b></dt>
 
16599
<dd><dl compact="compact">
 
16600
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.8 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16601
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 7.2 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16602
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16603
</dl>
 
16604
 
 
16605
</dd>
 
16606
<dt> <b>Variants:</b></dt>
 
16607
<dd><dl compact="compact">
 
16608
<dt> <img src="images/fl_mortar.png" alt="images/fl_mortar"><p> <b>fl_mortar</b>
 
16609
</p></dt>
 
16610
<dt> <img src="images/fl_mortar_framed.png" alt="images/fl_mortar_framed"><p> <b>fl_mortar_framed</b>
 
16611
</p></dt>
 
16612
</dl>
 
16613
</dd>
 
16614
</dl>
 
16615
 
 
16616
<hr size="6">
 
16617
<a name="fl_005fpinkbumps"></a>
 
16618
<table cellpadding="1" cellspacing="1" border="0">
 
16619
<tr><td valign="middle" align="left">[<a href="#fl_005fmortar" title="Previous section in reading order"> &lt; </a>]</td>
 
16620
<td valign="middle" align="left">[<a href="#fl_005fplank" title="Next section in reading order"> &gt; </a>]</td>
 
16621
<td valign="middle" align="left"> &nbsp; </td>
 
16622
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16623
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16624
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16625
<td valign="middle" align="left"> &nbsp; </td>
 
16626
<td valign="middle" align="left"> &nbsp; </td>
 
16627
<td valign="middle" align="left"> &nbsp; </td>
 
16628
<td valign="middle" align="left"> &nbsp; </td>
 
16629
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16630
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16631
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16632
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16633
</tr></table>
 
16634
<a name="fl_005fpinkbumps-1"></a>
 
16635
<h3 class="subsection">7.3.21 fl_pinkbumps</h3>
 
16636
<a name="index-fl_005fpinkbumps"></a>
 
16637
 
 
16638
<p>Pink floor with white bumps.
 
16639
</p>
 
16640
<dl compact="compact">
 
16641
<dt> <b>Attributes:</b></dt>
 
16642
<dd><dl compact="compact">
 
16643
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.2 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16644
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 5.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16645
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16646
</dl>
 
16647
 
 
16648
</dd>
 
16649
<dt> <b>Variants:</b></dt>
 
16650
<dd><dl compact="compact">
 
16651
<dt> <img src="images/fl_pinkbumps.png" alt="images/fl_pinkbumps"><p> <b>fl_pinkbumps</b>
 
16652
</p></dt>
 
16653
<dt> <img src="images/fl_pinkbumps_framed.png" alt="images/fl_pinkbumps_framed"><p> <b>fl_pinkbumps_framed</b>
 
16654
</p></dt>
 
16655
</dl>
 
16656
</dd>
 
16657
</dl>
 
16658
 
 
16659
<hr size="6">
 
16660
<a name="fl_005fplank"></a>
 
16661
<table cellpadding="1" cellspacing="1" border="0">
 
16662
<tr><td valign="middle" align="left">[<a href="#fl_005fpinkbumps" title="Previous section in reading order"> &lt; </a>]</td>
 
16663
<td valign="middle" align="left">[<a href="#fl_005fplatinum" title="Next section in reading order"> &gt; </a>]</td>
 
16664
<td valign="middle" align="left"> &nbsp; </td>
 
16665
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16666
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16667
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16668
<td valign="middle" align="left"> &nbsp; </td>
 
16669
<td valign="middle" align="left"> &nbsp; </td>
 
16670
<td valign="middle" align="left"> &nbsp; </td>
 
16671
<td valign="middle" align="left"> &nbsp; </td>
 
16672
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16673
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16674
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16675
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16676
</tr></table>
 
16677
<a name="fl_005fplank-1"></a>
 
16678
<h3 class="subsection">7.3.22 fl_plank</h3>
 
16679
<a name="index-fl_005fplank"></a>
 
16680
 
 
16681
<p>Floor build up by small diagonal orange brown planks.
 
16682
</p>
 
16683
<p>When burnt, <code>fl_plank</code> becomes <a href="#fl_005fabyss">fl_abyss</a>.
 
16684
</p>
 
16685
<dl compact="compact">
 
16686
<dt> <b>Attributes:</b></dt>
 
16687
<dd><dl compact="compact">
 
16688
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16689
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 5.5 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16690
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16691
</dl>
 
16692
 
 
16693
</dd>
 
16694
<dt> <b>Variants:</b></dt>
 
16695
<dd><dl compact="compact">
 
16696
<dt> <img src="images/fl_plank.png" alt="images/fl_plank"><p> <b>fl_plank</b>
 
16697
</p></dt>
 
16698
<dt> <img src="images/fl_plank_framed.png" alt="images/fl_plank_framed"><p> <b>fl_plank_framed</b>
 
16699
</p></dt>
 
16700
</dl>
 
16701
</dd>
 
16702
</dl>
 
16703
 
 
16704
<hr size="6">
 
16705
<a name="fl_005fplatinum"></a>
 
16706
<table cellpadding="1" cellspacing="1" border="0">
 
16707
<tr><td valign="middle" align="left">[<a href="#fl_005fplank" title="Previous section in reading order"> &lt; </a>]</td>
 
16708
<td valign="middle" align="left">[<a href="#fl_005fred" title="Next section in reading order"> &gt; </a>]</td>
 
16709
<td valign="middle" align="left"> &nbsp; </td>
 
16710
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16711
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16712
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16713
<td valign="middle" align="left"> &nbsp; </td>
 
16714
<td valign="middle" align="left"> &nbsp; </td>
 
16715
<td valign="middle" align="left"> &nbsp; </td>
 
16716
<td valign="middle" align="left"> &nbsp; </td>
 
16717
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16718
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16719
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16720
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16721
</tr></table>
 
16722
<a name="fl_005fplatinum-1"></a>
 
16723
<h3 class="subsection">7.3.23 fl_platinum</h3>
 
16724
<a name="index-fl_005fplatinum"></a>
 
16725
 
 
16726
<p>Warm light gray floor.
 
16727
</p>
 
16728
<dl compact="compact">
 
16729
<dt> <b>Attributes:</b></dt>
 
16730
<dd><dl compact="compact">
 
16731
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.6 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16732
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 3.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16733
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16734
</dl>
 
16735
 
 
16736
</dd>
 
16737
<dt> <b>Variants:</b></dt>
 
16738
<dd><dl compact="compact">
 
16739
<dt> <img src="images/fl_platinum.png" alt="images/fl_platinum"><p> <b>fl_platinum</b>
 
16740
</p></dt>
 
16741
<dt> <img src="images/fl_platinum_framed.png" alt="images/fl_platinum_framed"><p> <b>fl_platinum_framed</b>
 
16742
</p></dt>
 
16743
</dl>
 
16744
</dd>
 
16745
</dl>
 
16746
 
 
16747
<hr size="6">
 
16748
<a name="fl_005fred"></a>
 
16749
<table cellpadding="1" cellspacing="1" border="0">
 
16750
<tr><td valign="middle" align="left">[<a href="#fl_005fplatinum" title="Previous section in reading order"> &lt; </a>]</td>
 
16751
<td valign="middle" align="left">[<a href="#fl_005fredslab" title="Next section in reading order"> &gt; </a>]</td>
 
16752
<td valign="middle" align="left"> &nbsp; </td>
 
16753
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16754
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16755
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16756
<td valign="middle" align="left"> &nbsp; </td>
 
16757
<td valign="middle" align="left"> &nbsp; </td>
 
16758
<td valign="middle" align="left"> &nbsp; </td>
 
16759
<td valign="middle" align="left"> &nbsp; </td>
 
16760
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16761
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16762
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16763
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16764
</tr></table>
 
16765
<a name="fl_005fred-1"></a>
 
16766
<h3 class="subsection">7.3.24 fl_red</h3>
 
16767
<a name="index-fl_005fred"></a>
 
16768
 
 
16769
<p>Warm red, very slippy floor.
 
16770
</p>
 
16771
<dl compact="compact">
 
16772
<dt> <b>Attributes:</b></dt>
 
16773
<dd><dl compact="compact">
 
16774
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16775
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 0.9 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16776
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16777
</dl>
 
16778
 
 
16779
</dd>
 
16780
<dt> <b>Variants:</b></dt>
 
16781
<dd><dl compact="compact">
 
16782
<dt> <img src="images/fl_red.png" alt="images/fl_red"><p> <b>fl_red</b>
 
16783
</p></dt>
 
16784
<dt> <img src="images/fl_red_framed.png" alt="images/fl_red_framed"><p> <b>fl_red_framed</b>
 
16785
</p></dt>
 
16786
</dl>
 
16787
</dd>
 
16788
</dl>
 
16789
 
 
16790
<hr size="6">
 
16791
<a name="fl_005fredslab"></a>
 
16792
<table cellpadding="1" cellspacing="1" border="0">
 
16793
<tr><td valign="middle" align="left">[<a href="#fl_005fred" title="Previous section in reading order"> &lt; </a>]</td>
 
16794
<td valign="middle" align="left">[<a href="#fl_005frough" title="Next section in reading order"> &gt; </a>]</td>
 
16795
<td valign="middle" align="left"> &nbsp; </td>
 
16796
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16797
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16798
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16799
<td valign="middle" align="left"> &nbsp; </td>
 
16800
<td valign="middle" align="left"> &nbsp; </td>
 
16801
<td valign="middle" align="left"> &nbsp; </td>
 
16802
<td valign="middle" align="left"> &nbsp; </td>
 
16803
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16804
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16805
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16806
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16807
</tr></table>
 
16808
<a name="fl_005fredslab-1"></a>
 
16809
<h3 class="subsection">7.3.25 fl_redslab</h3>
 
16810
<a name="index-fl_005fredslab"></a>
 
16811
 
 
16812
<p>Dark red slab floor, that is marbled with black. A matching floor is
 
16813
<a href="#fl_005fblueslab">fl_blueslab</a>.
 
16814
</p>
 
16815
<dl compact="compact">
 
16816
<dt> <b>Attributes:</b></dt>
 
16817
<dd><dl compact="compact">
 
16818
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16819
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 7.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16820
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16821
</dl>
 
16822
 
 
16823
</dd>
 
16824
<dt> <b>Variants:</b></dt>
 
16825
<dd><dl compact="compact">
 
16826
<dt> <img src="images/fl_redslab.png" alt="images/fl_redslab"><p> <b>fl_redslab</b>
 
16827
</p></dt>
 
16828
<dt> <img src="images/fl_redslab_framed.png" alt="images/fl_redslab_framed"><p> <b>fl_redslab_framed</b>
 
16829
</p></dt>
 
16830
</dl>
 
16831
</dd>
 
16832
</dl>
 
16833
 
 
16834
<hr size="6">
 
16835
<a name="fl_005frough"></a>
 
16836
<table cellpadding="1" cellspacing="1" border="0">
 
16837
<tr><td valign="middle" align="left">[<a href="#fl_005fredslab" title="Previous section in reading order"> &lt; </a>]</td>
 
16838
<td valign="middle" align="left">[<a href="#fl_005fsahara" title="Next section in reading order"> &gt; </a>]</td>
 
16839
<td valign="middle" align="left"> &nbsp; </td>
 
16840
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16841
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16842
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16843
<td valign="middle" align="left"> &nbsp; </td>
 
16844
<td valign="middle" align="left"> &nbsp; </td>
 
16845
<td valign="middle" align="left"> &nbsp; </td>
 
16846
<td valign="middle" align="left"> &nbsp; </td>
 
16847
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16848
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16849
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16850
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16851
</tr></table>
 
16852
<a name="fl_005frough-1"></a>
 
16853
<h3 class="subsection">7.3.26 fl_rough</h3>
 
16854
<a name="index-fl_005frough"></a>
 
16855
 
 
16856
<p>Rough warm white floor.
 
16857
</p>
 
16858
<dl compact="compact">
 
16859
<dt> <b>Attributes:</b></dt>
 
16860
<dd><dl compact="compact">
 
16861
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16862
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 7.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16863
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16864
</dl>
 
16865
 
 
16866
</dd>
 
16867
<dt> <b>Variants:</b></dt>
 
16868
<dd><dl compact="compact">
 
16869
<dt> <img src="images/fl_rough.png" alt="images/fl_rough"><p> <b>fl_rough</b>
 
16870
</p></dt>
 
16871
<dt> <img src="images/fl_rough_framed.png" alt="images/fl_rough_framed"><p> <b>fl_rough_framed</b>
 
16872
</p></dt>
 
16873
</dl>
 
16874
</dd>
 
16875
</dl>
 
16876
 
 
16877
<hr size="6">
 
16878
<a name="fl_005fsahara"></a>
 
16879
<table cellpadding="1" cellspacing="1" border="0">
 
16880
<tr><td valign="middle" align="left">[<a href="#fl_005frough" title="Previous section in reading order"> &lt; </a>]</td>
 
16881
<td valign="middle" align="left">[<a href="#fl_005fsamba" title="Next section in reading order"> &gt; </a>]</td>
 
16882
<td valign="middle" align="left"> &nbsp; </td>
 
16883
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16884
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16885
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16886
<td valign="middle" align="left"> &nbsp; </td>
 
16887
<td valign="middle" align="left"> &nbsp; </td>
 
16888
<td valign="middle" align="left"> &nbsp; </td>
 
16889
<td valign="middle" align="left"> &nbsp; </td>
 
16890
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16891
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16892
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16893
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16894
</tr></table>
 
16895
<a name="fl_005fsahara-1"></a>
 
16896
<h3 class="subsection">7.3.27 fl_sahara</h3>
 
16897
<a name="index-fl_005fsahara"></a>
 
16898
 
 
16899
<p>Bright yellow sandstone floor.
 
16900
</p>
 
16901
<dl compact="compact">
 
16902
<dt> <b>Attributes:</b></dt>
 
16903
<dd><dl compact="compact">
 
16904
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16905
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 6.4 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16906
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16907
</dl>
 
16908
 
 
16909
</dd>
 
16910
<dt> <b>Variants:</b></dt>
 
16911
<dd><dl compact="compact">
 
16912
<dt> <img src="images/fl_sahara.png" alt="images/fl_sahara"><p> <b>fl_sahara</b>
 
16913
</p></dt>
 
16914
<dt> <img src="images/fl_sahara_framed.png" alt="images/fl_sahara_framed"><p> <b>fl_sahara_framed</b>
 
16915
</p></dt>
 
16916
</dl>
 
16917
</dd>
 
16918
</dl>
 
16919
 
 
16920
<hr size="6">
 
16921
<a name="fl_005fsamba"></a>
 
16922
<table cellpadding="1" cellspacing="1" border="0">
 
16923
<tr><td valign="middle" align="left">[<a href="#fl_005fsahara" title="Previous section in reading order"> &lt; </a>]</td>
 
16924
<td valign="middle" align="left">[<a href="#fl_005fsand" title="Next section in reading order"> &gt; </a>]</td>
 
16925
<td valign="middle" align="left"> &nbsp; </td>
 
16926
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16927
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16928
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16929
<td valign="middle" align="left"> &nbsp; </td>
 
16930
<td valign="middle" align="left"> &nbsp; </td>
 
16931
<td valign="middle" align="left"> &nbsp; </td>
 
16932
<td valign="middle" align="left"> &nbsp; </td>
 
16933
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16934
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16935
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16936
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16937
</tr></table>
 
16938
<a name="fl_005fsamba-1"></a>
 
16939
<h3 class="subsection">7.3.28 fl_samba</h3>
 
16940
<a name="index-fl_005fsamba"></a>
 
16941
 
 
16942
<p>Gray bleached wooden floor. Textures with horizontal and vertical aligned plank
 
16943
exist.
 
16944
</p>
 
16945
<p>When burnt, <code>fl_samba</code> becomes <a href="#fl_005fabyss">fl_abyss</a>.
 
16946
</p>
 
16947
<dl compact="compact">
 
16948
<dt> <b>Attributes:</b></dt>
 
16949
<dd><dl compact="compact">
 
16950
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
16951
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 6.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
16952
<dt> <b>texture</b>, &nbsp;&nbsp;<i>values</i>: &quot;h&quot;, &quot;v&quot;  ; &nbsp;&nbsp;<i>default</i>: random; &nbsp;&nbsp;<i>access</i>: <code>none</code>  &nbsp;&nbsp;See section <a href="#texture">texture</a></dt>
 
16953
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
16954
</dl>
 
16955
 
 
16956
</dd>
 
16957
<dt> <b>Variants:</b></dt>
 
16958
<dd><dl compact="compact">
 
16959
<dt> <img src="images/fl_samba.png" alt="images/fl_samba"><p> <b>fl_samba</b>: texture = &lsquo;<samp>random</samp>&rsquo;
 
16960
</p></dt>
 
16961
<dt> <img src="images/fl_samba.png" alt="images/fl_samba"><p> <b>fl_samba_h</b>: texture = <code>&quot;h&quot;</code>
 
16962
</p></dt>
 
16963
<dt> <img src="images/fl_samba_2.png" alt="images/fl_samba_2"><p> <b>fl_samba_v</b>: texture = <code>&quot;v&quot;</code>
 
16964
</p></dt>
 
16965
<dt> <img src="images/fl_samba_framed.png" alt="images/fl_samba_framed"><p> <b>fl_samba_framed</b>: texture = &lsquo;<samp>random</samp>&rsquo;
 
16966
</p></dt>
 
16967
<dt> <img src="images/fl_samba_framed.png" alt="images/fl_samba_framed"><p> <b>fl_samba_h_framed</b>: texture = <code>&quot;h&quot;</code>
 
16968
</p></dt>
 
16969
<dt> <img src="images/construction.png" alt="images/construction"><p> <b>fl_samba_v_framed</b>: texture = <code>&quot;v&quot;</code>
 
16970
</p></dt>
 
16971
</dl>
 
16972
</dd>
 
16973
</dl>
 
16974
 
 
16975
<hr size="6">
 
16976
<a name="fl_005fsand"></a>
 
16977
<table cellpadding="1" cellspacing="1" border="0">
 
16978
<tr><td valign="middle" align="left">[<a href="#fl_005fsamba" title="Previous section in reading order"> &lt; </a>]</td>
 
16979
<td valign="middle" align="left">[<a href="#fl_005fspace" title="Next section in reading order"> &gt; </a>]</td>
 
16980
<td valign="middle" align="left"> &nbsp; </td>
 
16981
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
16982
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
16983
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
16984
<td valign="middle" align="left"> &nbsp; </td>
 
16985
<td valign="middle" align="left"> &nbsp; </td>
 
16986
<td valign="middle" align="left"> &nbsp; </td>
 
16987
<td valign="middle" align="left"> &nbsp; </td>
 
16988
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
16989
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
16990
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
16991
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
16992
</tr></table>
 
16993
<a name="fl_005fsand-1"></a>
 
16994
<h3 class="subsection">7.3.29 fl_sand</h3>
 
16995
<a name="index-fl_005fsand"></a>
 
16996
 
 
16997
<p>Granular orange gray sand floor.
 
16998
</p>
 
16999
<dl compact="compact">
 
17000
<dt> <b>Attributes:</b></dt>
 
17001
<dd><dl compact="compact">
 
17002
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17003
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 6.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17004
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17005
</dl>
 
17006
 
 
17007
</dd>
 
17008
<dt> <b>Variants:</b></dt>
 
17009
<dd><dl compact="compact">
 
17010
<dt> <img src="images/fl_sand.png" alt="images/fl_sand"><p> <b>fl_sand</b>
 
17011
</p></dt>
 
17012
<dt> <img src="images/fl_sand_framed.png" alt="images/fl_sand_framed"><p> <b>fl_sand_framed</b>
 
17013
</p></dt>
 
17014
</dl>
 
17015
</dd>
 
17016
</dl>
 
17017
 
 
17018
<hr size="6">
 
17019
<a name="fl_005fspace"></a>
 
17020
<table cellpadding="1" cellspacing="1" border="0">
 
17021
<tr><td valign="middle" align="left">[<a href="#fl_005fsand" title="Previous section in reading order"> &lt; </a>]</td>
 
17022
<td valign="middle" align="left">[<a href="#fl_005fstone" title="Next section in reading order"> &gt; </a>]</td>
 
17023
<td valign="middle" align="left"> &nbsp; </td>
 
17024
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17025
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
17026
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17027
<td valign="middle" align="left"> &nbsp; </td>
 
17028
<td valign="middle" align="left"> &nbsp; </td>
 
17029
<td valign="middle" align="left"> &nbsp; </td>
 
17030
<td valign="middle" align="left"> &nbsp; </td>
 
17031
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17032
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17033
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17034
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17035
</tr></table>
 
17036
<a name="fl_005fspace-1"></a>
 
17037
<h3 class="subsection">7.3.30 fl_space</h3>
 
17038
<a name="index-fl_005fspace"></a>
 
17039
 
 
17040
<p>Black space with a few sparkling stars. This floor has neither a friction nor
 
17041
does it provide an adhesion. All actors do drift for infinity on this floor
 
17042
until they reach another floor.
 
17043
</p>
 
17044
<dl compact="compact">
 
17045
<dt> <b>Attributes:</b></dt>
 
17046
<dd><dl compact="compact">
 
17047
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 0.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17048
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 0.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17049
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17050
</dl>
 
17051
 
 
17052
</dd>
 
17053
<dt> <b>Variants:</b></dt>
 
17054
<dd><dl compact="compact">
 
17055
<dt> <img src="images/fl_space.png" alt="images/fl_space"><p> <b>fl_space</b>
 
17056
</p></dt>
 
17057
</dl>
 
17058
</dd>
 
17059
</dl>
 
17060
 
 
17061
<hr size="6">
 
17062
<a name="fl_005fstone"></a>
 
17063
<table cellpadding="1" cellspacing="1" border="0">
 
17064
<tr><td valign="middle" align="left">[<a href="#fl_005fspace" title="Previous section in reading order"> &lt; </a>]</td>
 
17065
<td valign="middle" align="left">[<a href="#fl_005ftigris" title="Next section in reading order"> &gt; </a>]</td>
 
17066
<td valign="middle" align="left"> &nbsp; </td>
 
17067
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17068
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
17069
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17070
<td valign="middle" align="left"> &nbsp; </td>
 
17071
<td valign="middle" align="left"> &nbsp; </td>
 
17072
<td valign="middle" align="left"> &nbsp; </td>
 
17073
<td valign="middle" align="left"> &nbsp; </td>
 
17074
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17075
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17076
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17077
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17078
</tr></table>
 
17079
<a name="fl_005fstone-1"></a>
 
17080
<h3 class="subsection">7.3.31 fl_stone</h3>
 
17081
<a name="index-fl_005fstone"></a>
 
17082
 
 
17083
<p>Granular brown gray floor.
 
17084
</p>
 
17085
<dl compact="compact">
 
17086
<dt> <b>Attributes:</b></dt>
 
17087
<dd><dl compact="compact">
 
17088
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17089
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.4 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17090
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17091
</dl>
 
17092
 
 
17093
</dd>
 
17094
<dt> <b>Variants:</b></dt>
 
17095
<dd><dl compact="compact">
 
17096
<dt> <img src="images/fl_stone.png" alt="images/fl_stone"><p> <b>fl_stone</b>
 
17097
</p></dt>
 
17098
<dt> <img src="images/fl_stone_framed.png" alt="images/fl_stone_framed"><p> <b>fl_stone_framed</b>
 
17099
</p></dt>
 
17100
</dl>
 
17101
</dd>
 
17102
</dl>
 
17103
 
 
17104
<hr size="6">
 
17105
<a name="fl_005ftigris"></a>
 
17106
<table cellpadding="1" cellspacing="1" border="0">
 
17107
<tr><td valign="middle" align="left">[<a href="#fl_005fstone" title="Previous section in reading order"> &lt; </a>]</td>
 
17108
<td valign="middle" align="left">[<a href="#fl_005fwhite" title="Next section in reading order"> &gt; </a>]</td>
 
17109
<td valign="middle" align="left"> &nbsp; </td>
 
17110
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17111
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
17112
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17113
<td valign="middle" align="left"> &nbsp; </td>
 
17114
<td valign="middle" align="left"> &nbsp; </td>
 
17115
<td valign="middle" align="left"> &nbsp; </td>
 
17116
<td valign="middle" align="left"> &nbsp; </td>
 
17117
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17118
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17119
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17120
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17121
</tr></table>
 
17122
<a name="fl_005ftigris-1"></a>
 
17123
<h3 class="subsection">7.3.32 fl_tigris</h3>
 
17124
<a name="index-fl_005ftigris"></a>
 
17125
 
 
17126
<p>Red sandstone floor.
 
17127
</p>
 
17128
<dl compact="compact">
 
17129
<dt> <b>Attributes:</b></dt>
 
17130
<dd><dl compact="compact">
 
17131
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17132
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 6.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17133
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17134
</dl>
 
17135
 
 
17136
</dd>
 
17137
<dt> <b>Variants:</b></dt>
 
17138
<dd><dl compact="compact">
 
17139
<dt> <img src="images/fl_tigris.png" alt="images/fl_tigris"><p> <b>fl_tigris</b>
 
17140
</p></dt>
 
17141
<dt> <img src="images/fl_tigris_framed.png" alt="images/fl_tigris_framed"><p> <b>fl_tigris_framed</b>
 
17142
</p></dt>
 
17143
</dl>
 
17144
</dd>
 
17145
</dl>
 
17146
 
 
17147
<hr size="6">
 
17148
<a name="fl_005fwhite"></a>
 
17149
<table cellpadding="1" cellspacing="1" border="0">
 
17150
<tr><td valign="middle" align="left">[<a href="#fl_005ftigris" title="Previous section in reading order"> &lt; </a>]</td>
 
17151
<td valign="middle" align="left">[<a href="#fl_005fwoven" title="Next section in reading order"> &gt; </a>]</td>
 
17152
<td valign="middle" align="left"> &nbsp; </td>
 
17153
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17154
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
17155
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17156
<td valign="middle" align="left"> &nbsp; </td>
 
17157
<td valign="middle" align="left"> &nbsp; </td>
 
17158
<td valign="middle" align="left"> &nbsp; </td>
 
17159
<td valign="middle" align="left"> &nbsp; </td>
 
17160
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17161
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17162
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17163
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17164
</tr></table>
 
17165
<a name="fl_005fwhite-1"></a>
 
17166
<h3 class="subsection">7.3.33 fl_white</h3>
 
17167
<a name="index-fl_005fwhite"></a>
 
17168
 
 
17169
<p>Pure white floor without any yinyang related features.
 
17170
</p>
 
17171
<dl compact="compact">
 
17172
<dt> <b>Attributes:</b></dt>
 
17173
<dd><dl compact="compact">
 
17174
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17175
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 4.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17176
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17177
</dl>
 
17178
 
 
17179
</dd>
 
17180
<dt> <b>Variants:</b></dt>
 
17181
<dd><dl compact="compact">
 
17182
<dt> <img src="images/fl_white.png" alt="images/fl_white"><p> <b>fl_white</b>
 
17183
</p></dt>
 
17184
<dt> <img src="images/fl_white_framed.png" alt="images/fl_white_framed"><p> <b>fl_white_framed</b>
 
17185
</p></dt>
 
17186
</dl>
 
17187
</dd>
 
17188
</dl>
 
17189
 
 
17190
<hr size="6">
 
17191
<a name="fl_005fwoven"></a>
 
17192
<table cellpadding="1" cellspacing="1" border="0">
 
17193
<tr><td valign="middle" align="left">[<a href="#fl_005fwhite" title="Previous section in reading order"> &lt; </a>]</td>
 
17194
<td valign="middle" align="left">[<a href="#Special-Floors" title="Next section in reading order"> &gt; </a>]</td>
 
17195
<td valign="middle" align="left"> &nbsp; </td>
 
17196
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17197
<td valign="middle" align="left">[<a href="#Standard-Floors" title="Up section"> Up </a>]</td>
 
17198
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17199
<td valign="middle" align="left"> &nbsp; </td>
 
17200
<td valign="middle" align="left"> &nbsp; </td>
 
17201
<td valign="middle" align="left"> &nbsp; </td>
 
17202
<td valign="middle" align="left"> &nbsp; </td>
 
17203
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17204
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17205
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17206
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17207
</tr></table>
 
17208
<a name="fl_005fwoven-1"></a>
 
17209
<h3 class="subsection">7.3.34 fl_woven</h3>
 
17210
<a name="index-fl_005fwoven"></a>
 
17211
 
 
17212
<p>Diagonal woven white floor with black shadows.
 
17213
</p>
 
17214
<dl compact="compact">
 
17215
<dt> <b>Attributes:</b></dt>
 
17216
<dd><dl compact="compact">
 
17217
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 3.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17218
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 6.5 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17219
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17220
</dl>
 
17221
 
 
17222
</dd>
 
17223
<dt> <b>Variants:</b></dt>
 
17224
<dd><dl compact="compact">
 
17225
<dt> <img src="images/fl_woven.png" alt="images/fl_woven"><p> <b>fl_woven</b>
 
17226
</p></dt>
 
17227
<dt> <img src="images/fl_woven_framed.png" alt="images/fl_woven_framed"><p> <b>fl_woven_framed</b>
 
17228
</p></dt>
 
17229
</dl>
 
17230
</dd>
 
17231
</dl>
 
17232
 
 
17233
<hr size="6">
 
17234
<a name="Special-Floors"></a>
 
17235
<table cellpadding="1" cellspacing="1" border="0">
 
17236
<tr><td valign="middle" align="left">[<a href="#fl_005fwoven" title="Previous section in reading order"> &lt; </a>]</td>
 
17237
<td valign="middle" align="left">[<a href="#fl_005fabyss" title="Next section in reading order"> &gt; </a>]</td>
 
17238
<td valign="middle" align="left"> &nbsp; </td>
 
17239
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17240
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Up section"> Up </a>]</td>
 
17241
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17242
<td valign="middle" align="left"> &nbsp; </td>
 
17243
<td valign="middle" align="left"> &nbsp; </td>
 
17244
<td valign="middle" align="left"> &nbsp; </td>
 
17245
<td valign="middle" align="left"> &nbsp; </td>
 
17246
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17247
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17248
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17249
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17250
</tr></table>
 
17251
<a name="Special-Floors-1"></a>
 
17252
<h2 class="section">7.4 Special Floors</h2>
 
17253
 
 
17254
<table class="menu" border="0" cellspacing="0">
 
17255
<tr><td align="left" valign="top"><a href="#fl_005fabyss">7.4.1 fl_abyss</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Deep black Chasm
 
17256
</td></tr>
 
17257
<tr><td align="left" valign="top"><a href="#fl_005fbridge">7.4.2 fl_bridge</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Abyss Bridge
 
17258
</td></tr>
 
17259
<tr><td align="left" valign="top"><a href="#fl_005ffake">7.4.3 fl_fake</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Fake mimicking other Floors
 
17260
</td></tr>
 
17261
<tr><td align="left" valign="top"><a href="#fl_005fhay">7.4.4 fl_hay</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Floodable Hay
 
17262
</td></tr>
 
17263
<tr><td align="left" valign="top"><a href="#fl_005fice">7.4.5 fl_ice</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Slippery frozen water
 
17264
</td></tr>
 
17265
<tr><td align="left" valign="top"><a href="#fl_005finverse">7.4.6 fl_inverse</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Accelerate into the inverse direction
 
17266
</td></tr>
 
17267
<tr><td align="left" valign="top"><a href="#fl_005frock">7.4.7 fl_rock</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Floodable Rock Floor
 
17268
</td></tr>
 
17269
<tr><td align="left" valign="top"><a href="#fl_005fscales">7.4.8 fl_scales</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Weight dependent Trigger
 
17270
</td></tr>
 
17271
<tr><td align="left" valign="top"><a href="#fl_005fslope">7.4.9 fl_slope</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Slopes in various shapes
 
17272
</td></tr>
 
17273
<tr><td align="left" valign="top"><a href="#fl_005fswamp">7.4.10 fl_swamp</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Sticky sinkable Floor
 
17274
</td></tr>
 
17275
<tr><td align="left" valign="top"><a href="#fl_005fthief">7.4.11 fl_thief</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Hidden Thief
 
17276
</td></tr>
 
17277
<tr><td align="left" valign="top"><a href="#fl_005fwater">7.4.12 fl_water</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Sinkable Water
 
17278
</td></tr>
 
17279
<tr><td align="left" valign="top"><a href="#fl_005fwood">7.4.13 fl_wood</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Floodable Wood Floor
 
17280
</td></tr>
 
17281
<tr><td align="left" valign="top"><a href="#fl_005fyinyang">7.4.14 fl_yinyang</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Player dependent Adhesion
 
17282
</td></tr>
 
17283
</table>
 
17284
 
 
17285
<hr size="6">
 
17286
<a name="fl_005fabyss"></a>
 
17287
<table cellpadding="1" cellspacing="1" border="0">
 
17288
<tr><td valign="middle" align="left">[<a href="#Special-Floors" title="Previous section in reading order"> &lt; </a>]</td>
 
17289
<td valign="middle" align="left">[<a href="#fl_005fbridge" title="Next section in reading order"> &gt; </a>]</td>
 
17290
<td valign="middle" align="left"> &nbsp; </td>
 
17291
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17292
<td valign="middle" align="left">[<a href="#Special-Floors" title="Up section"> Up </a>]</td>
 
17293
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17294
<td valign="middle" align="left"> &nbsp; </td>
 
17295
<td valign="middle" align="left"> &nbsp; </td>
 
17296
<td valign="middle" align="left"> &nbsp; </td>
 
17297
<td valign="middle" align="left"> &nbsp; </td>
 
17298
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17299
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17300
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17301
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17302
</tr></table>
 
17303
<a name="fl_005fabyss-1"></a>
 
17304
<h3 class="subsection">7.4.1 fl_abyss</h3>
 
17305
<a name="index-fl_005fabyss"></a>
 
17306
 
 
17307
<p>Pure black abyss into which all rolling balls do fall and shatter. An abyss
 
17308
chasm can be crossed by jumping. <a href="#Actors">Actors</a> protected by an activated
 
17309
<a href="#it_005fumbrella">it_umbrella</a> can pass and even move on an abyss as it provides useful
 
17310
&lsquo;<samp>adhesion</samp>&rsquo; and &lsquo;<samp>friction</samp>&rsquo;. Another comparable floor barrier is
 
17311
<a href="#fl_005fwater">fl_water</a>.
 
17312
</p>
 
17313
<p>Many floors disintegrate on fire or on a dissolving <a href="#it_005fcrack">it_crack</a> into an
 
17314
abyss. The abyss itself is indestructible. It does neither burn nor crack.
 
17315
</p>
 
17316
<p>Some stones fall into abyss, too. <a href="#st_005fbox">st_box</a> will build floors on which all
 
17317
actors can move and pass the former abyss filled grid.
 
17318
</p>
 
17319
<p>By default, <code>fl_abyss</code> can&rsquo;t burn. However, when it burns (e.g. by
 
17320
<a href="#it_005fburnable">it_burnable</a>_oil), it does not create <a href="#it_005fburnable">it_burnable</a>_ash in the end by
 
17321
default (i.e., <a href="#noash">noash</a> is true by default). In particular, when
 
17322
<code>burnable</code> is set to <code>true</code>, an abyss may reignite arbitrarily often.
 
17323
</p>
 
17324
<dl compact="compact">
 
17325
<dt> <b>Attributes:</b></dt>
 
17326
<dd><dl compact="compact">
 
17327
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17328
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17329
<dt> <b>indestructible</b>, &nbsp;&nbsp;<i>values</i>: bool ; &nbsp;&nbsp;<i>default</i>: true; &nbsp;&nbsp;<i>access</i>: <code>none</code>  &nbsp;&nbsp;See section <a href="#indestructible">indestructible</a></dt>
 
17330
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17331
<dt> <b>noash</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#noash">noash</a></dt>
 
17332
</dl>
 
17333
 
 
17334
</dd>
 
17335
<dt> <b>Variants:</b></dt>
 
17336
<dd><dl compact="compact">
 
17337
<dt> <img src="images/fl_abyss.png" alt="images/fl_abyss"><p> <b>fl_abyss</b>
 
17338
</p></dt>
 
17339
</dl>
 
17340
</dd>
 
17341
</dl>
 
17342
 
 
17343
<hr size="6">
 
17344
<a name="fl_005fbridge"></a>
 
17345
<table cellpadding="1" cellspacing="1" border="0">
 
17346
<tr><td valign="middle" align="left">[<a href="#fl_005fabyss" title="Previous section in reading order"> &lt; </a>]</td>
 
17347
<td valign="middle" align="left">[<a href="#fl_005ffake" title="Next section in reading order"> &gt; </a>]</td>
 
17348
<td valign="middle" align="left"> &nbsp; </td>
 
17349
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17350
<td valign="middle" align="left">[<a href="#Special-Floors" title="Up section"> Up </a>]</td>
 
17351
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17352
<td valign="middle" align="left"> &nbsp; </td>
 
17353
<td valign="middle" align="left"> &nbsp; </td>
 
17354
<td valign="middle" align="left"> &nbsp; </td>
 
17355
<td valign="middle" align="left"> &nbsp; </td>
 
17356
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17357
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17358
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17359
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17360
</tr></table>
 
17361
<a name="fl_005fbridge-1"></a>
 
17362
<h3 class="subsection">7.4.2 fl_bridge</h3>
 
17363
<a name="index-fl_005fbridge"></a>
 
17364
 
 
17365
<p>A bridge is a variable floor that can be passed when being <code>CLOSED</code> but
 
17366
being impassable for marbles like <a href="#fl_005fabyss">fl_abyss</a> when being opened. Floor
 
17367
bridges come in several flavors. They can be grey or wooden brown, they can
 
17368
pop up in the center or emerge from one side. The flavor string is a combination
 
17369
of a color character and an emerging direction character. Note that not all
 
17370
combinations do exist.
 
17371
</p>
 
17372
<p>Bridges can be opened and closed via messages and state set operations like
 
17373
<a href="#st_005fdoor">st_door</a>.
 
17374
</p>
 
17375
<p>But a unique feature of bridges is to close on a solid stone being pushed onto
 
17376
them. Thus stones do not fall into the visible abyss of an opened bridge, but
 
17377
can be pushed over them. But as soon as the stone leaves the bridge it opens
 
17378
again. Thus a user will notice the closing and opening bridge on stone pushes.
 
17379
</p>
 
17380
<p>To be more precise after a stone leaving a bridge, it switches into the state
 
17381
that it would have had if the stone would never have been on top of it. That
 
17382
means that if a stone gets pushed onto an open bridge and the bridge receives
 
17383
a <code>&quot;close&quot;</code> or <code>&quot;toggle&quot;</code> message while the stone is being on top the
 
17384
bridge remains closed when the stone is pushed away.
 
17385
</p>
 
17386
<p>A bridge being set adjusts its state according to the <a href="#Snapshot-Principle">Snapshot Principle</a>.
 
17387
It checks for solid stones being on top of it and auto closes accordingly.
 
17388
</p>
 
17389
<p>Only the brown (wooden) bridges are burnable by default. Open bridges are never
 
17390
burnable, regardless of the <a href="#burnable">burnable</a>-attribute.
 
17391
</p>
 
17392
<dl compact="compact">
 
17393
<dt> <b>Attributes:</b></dt>
 
17394
<dd>
 
17395
<dl compact="compact">
 
17396
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>CLOSED</code>, <code>OPEN</code>; &nbsp;&nbsp;<i>default</i>: <code>OPEN</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
17397
<dd><p>The state as visible and responsible for the actor ability to pass.
 
17398
</p></dd>
 
17399
<dt> <b>flavor</b>, &nbsp;&nbsp;<i>values</i>: <code>&quot;gc&quot;</code>, <code>&quot;bw&quot;</code>, <code>&quot;bs&quot;</code>, <code>&quot;be&quot;</code>, <code>&quot;bn&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;gc&quot;</code></dt>
 
17400
<dd><p>The type of the bridge.
 
17401
</p></dd>
 
17402
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17403
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 5.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17404
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: depends on <code>flavor</code> &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17405
<dd><p>True if flavor is <code>&quot;b*&quot;</code>, false otherwise.
 
17406
</p></dd>
 
17407
</dl>
 
17408
 
 
17409
</dd>
 
17410
<dt> <b>Messages:</b></dt>
 
17411
<dd><dl compact="compact">
 
17412
<dt> <b>open</b> &nbsp;&nbsp;See section <a href="#open">open</a></dt>
 
17413
<dd><p>Opens a closed bridge that is not covered by a solid stone. Otherwise the
 
17414
explicit open request will be registered and executed as soon as the stone
 
17415
is pushed away.
 
17416
</p></dd>
 
17417
<dt> <b>close</b> &nbsp;&nbsp;See section <a href="#close">close</a></dt>
 
17418
<dd><p>Closes an open bridge. If the bridge is already closed by a covering solid
 
17419
stone, the request will be registered and the bridge will not open when the
 
17420
stone is pushed away.
 
17421
</p></dd>
 
17422
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
17423
<dd><p>A signal of value 1 sends an open message, a signal of value 0 sends a close
 
17424
message.
 
17425
</p></dd>
 
17426
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
17427
<dd><p>A toggle causes a change of the state if no stone is on top, or the registered
 
17428
explicit state if a solid stone currently covers the bridge.
 
17429
</p></dd>
 
17430
</dl>
 
17431
 
 
17432
 
 
17433
</dd>
 
17434
<dt> <b>Variants:</b></dt>
 
17435
<dd><dl compact="compact">
 
17436
<dt> <img src="images/fl_bridge_gc_closed.png" alt="images/fl_bridge_gc_closed"><p> <b>fl_bridge</b> flavor = <code>&quot;gc&quot;</code>
 
17437
</p></dt>
 
17438
<dt> <img src="images/fl_bridge_gc_closed.png" alt="images/fl_bridge_gc_closed"><p> <b>fl_bridge_gc</b> flavor = <code>&quot;gc&quot;</code>
 
17439
</p></dt>
 
17440
<dt> <img src="images/fl_bridge_bw_closed.png" alt="images/fl_bridge_bw_closed"><p> <b>fl_bridge_bw</b> flavor = <code>&quot;bw&quot;</code>
 
17441
</p></dt>
 
17442
<dt> <img src="images/fl_bridge_bw_closed.png" alt="images/fl_bridge_bw_closed"><p> <b>fl_bridge_bs</b> flavor = <code>&quot;bs&quot;</code>
 
17443
</p></dt>
 
17444
<dt> <img src="images/fl_bridge_bw_closed.png" alt="images/fl_bridge_bw_closed"><p> <b>fl_bridge_be</b> flavor = <code>&quot;be&quot;</code>
 
17445
</p></dt>
 
17446
<dt> <img src="images/fl_bridge_bw_closed.png" alt="images/fl_bridge_bw_closed"><p> <b>fl_bridge_bn</b> flavor = <code>&quot;bn&quot;</code>
 
17447
</p></dt>
 
17448
</dl>
 
17449
 
 
17450
</dd>
 
17451
</dl>
 
17452
 
 
17453
<hr size="6">
 
17454
<a name="fl_005ffake"></a>
 
17455
<table cellpadding="1" cellspacing="1" border="0">
 
17456
<tr><td valign="middle" align="left">[<a href="#fl_005fbridge" title="Previous section in reading order"> &lt; </a>]</td>
 
17457
<td valign="middle" align="left">[<a href="#fl_005fhay" title="Next section in reading order"> &gt; </a>]</td>
 
17458
<td valign="middle" align="left"> &nbsp; </td>
 
17459
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17460
<td valign="middle" align="left">[<a href="#Special-Floors" title="Up section"> Up </a>]</td>
 
17461
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17462
<td valign="middle" align="left"> &nbsp; </td>
 
17463
<td valign="middle" align="left"> &nbsp; </td>
 
17464
<td valign="middle" align="left"> &nbsp; </td>
 
17465
<td valign="middle" align="left"> &nbsp; </td>
 
17466
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17467
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17468
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17469
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17470
</tr></table>
 
17471
<a name="fl_005ffake-1"></a>
 
17472
<h3 class="subsection">7.4.3 fl_fake</h3>
 
17473
<a name="index-fl_005ffake"></a>
 
17474
 
 
17475
<p>A floor that mimics other floors, but does not act like them.
 
17476
</p>
 
17477
<p>In contrast to <a href="#fl_005fabyss">fl_abyss</a> the fake abyss is just a standard floor that lets
 
17478
pass any actor without any harm.
 
17479
</p>
 
17480
<p>A fake trigger looks similar to an <a href="#it_005ftrigger">it_trigger</a> but is just a standard floor
 
17481
without any special features.
 
17482
</p>
 
17483
<dl compact="compact">
 
17484
<dt> <b>Attributes:</b></dt>
 
17485
<dd><dl compact="compact">
 
17486
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17487
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 3.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17488
<dt> <b>flavor</b>, &nbsp;&nbsp;<i>values</i>: <code>&quot;abyss&quot;</code>, <code>&quot;trigger&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;abyss&quot;</code>; &nbsp;&nbsp;<i>access</i>: <code>none</code></dt>
 
17489
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: depends on <code>flavor</code> &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17490
<dd><p>True if flavor is <code>&quot;trigger&quot;</code>, false otherwise.
 
17491
</p></dd>
 
17492
</dl>
 
17493
 
 
17494
</dd>
 
17495
<dt> <b>Variants:</b></dt>
 
17496
<dd><dl compact="compact">
 
17497
<dt> <img src="images/fl_abyss.png" alt="images/fl_abyss"><p> <b>fl_fake_abyss</b>: flavor = <code>&quot;abyss&quot;</code>
 
17498
</p></dt>
 
17499
<dt> <img src="images/fl_fake_trigger.png" alt="images/fl_fake_trigger"><p> <b>fl_fake_trigger</b>: flavor = <code>&quot;trigger&quot;</code>
 
17500
</p></dt>
 
17501
</dl>
 
17502
</dd>
 
17503
</dl>
 
17504
 
 
17505
<hr size="6">
 
17506
<a name="fl_005fhay"></a>
 
17507
<table cellpadding="1" cellspacing="1" border="0">
 
17508
<tr><td valign="middle" align="left">[<a href="#fl_005ffake" title="Previous section in reading order"> &lt; </a>]</td>
 
17509
<td valign="middle" align="left">[<a href="#fl_005fice" title="Next section in reading order"> &gt; </a>]</td>
 
17510
<td valign="middle" align="left"> &nbsp; </td>
 
17511
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17512
<td valign="middle" align="left">[<a href="#Special-Floors" title="Up section"> Up </a>]</td>
 
17513
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17514
<td valign="middle" align="left"> &nbsp; </td>
 
17515
<td valign="middle" align="left"> &nbsp; </td>
 
17516
<td valign="middle" align="left"> &nbsp; </td>
 
17517
<td valign="middle" align="left"> &nbsp; </td>
 
17518
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17519
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17520
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17521
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17522
</tr></table>
 
17523
<a name="fl_005fhay-1"></a>
 
17524
<h3 class="subsection">7.4.4 fl_hay</h3>
 
17525
<a name="index-fl_005fhay"></a>
 
17526
 
 
17527
<p>A hay floor is in most aspects a standard floor, that exists in a framed
 
17528
variation, too.
 
17529
</p>
 
17530
<p>The framed variant is the successor of a fallen <a href="#st_005fbox">st_box</a>_hay. It may be
 
17531
flooded by a <a href="#fl_005fwater">fl_water</a> stream without the attribute &lsquo;<samp>floodable</samp>&rsquo; being
 
17532
set to &lsquo;<samp>true</samp>&rsquo; as the flood passes below this floor. The framed wood
 
17533
acts like a bridge over a flood stream and the water will continue to spread to
 
17534
neighboring grids, while the framed wood is still passable for actors. In fact
 
17535
a framed wood can even operate as a flood source, but we do not recommend this
 
17536
usage. see section <a href="#Flood-Spreading">Flood Spreading</a>.
 
17537
</p>
 
17538
<dl compact="compact">
 
17539
<dt> <b>Attributes:</b></dt>
 
17540
<dd><dl compact="compact">
 
17541
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>IDLE</code>, <code>FLOODING</code>; &nbsp;&nbsp;<i>default</i>: <code>IDLE</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
17542
<dt> <b>interval</b> &nbsp;&nbsp;<i>values</i>: positive number; &nbsp;&nbsp;<i>default</i>: <code>0.2</code></dt>
 
17543
<dd><p>Number of seconds .
 
17544
</p></dd>
 
17545
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.5 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17546
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 5.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17547
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17548
</dl>
 
17549
 
 
17550
</dd>
 
17551
<dt> <b>Variants:</b></dt>
 
17552
<dd><dl compact="compact">
 
17553
<dt> <img src="images/fl_hay.png" alt="images/fl_hay"><p> <b>fl_hay</b>
 
17554
</p></dt>
 
17555
<dt> <img src="images/fl_hay_framed.png" alt="images/fl_hay_framed"><p> <b>fl_hay_framed</b>: faces = <code>&quot;nesw&quot;</code>
 
17556
</p></dt>
 
17557
</dl>
 
17558
</dd>
 
17559
</dl>
 
17560
 
 
17561
<hr size="6">
 
17562
<a name="fl_005fice"></a>
 
17563
<table cellpadding="1" cellspacing="1" border="0">
 
17564
<tr><td valign="middle" align="left">[<a href="#fl_005fhay" title="Previous section in reading order"> &lt; </a>]</td>
 
17565
<td valign="middle" align="left">[<a href="#fl_005finverse" title="Next section in reading order"> &gt; </a>]</td>
 
17566
<td valign="middle" align="left"> &nbsp; </td>
 
17567
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17568
<td valign="middle" align="left">[<a href="#Special-Floors" title="Up section"> Up </a>]</td>
 
17569
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17570
<td valign="middle" align="left"> &nbsp; </td>
 
17571
<td valign="middle" align="left"> &nbsp; </td>
 
17572
<td valign="middle" align="left"> &nbsp; </td>
 
17573
<td valign="middle" align="left"> &nbsp; </td>
 
17574
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17575
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17576
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17577
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17578
</tr></table>
 
17579
<a name="fl_005fice-1"></a>
 
17580
<h3 class="subsection">7.4.5 fl_ice</h3>
 
17581
<a name="index-fl_005fice"></a>
 
17582
 
 
17583
<p>An ice floor is very slippery frozen water. The user can increase the effective
 
17584
friction by carrying an <a href="#it_005fpin">it_pin</a> in the players inventory.
 
17585
</p>
 
17586
<p>Ice is a standard floor in most aspects. But an <a href="#it_005fdynamite">it_dynamite</a> will leave
 
17587
an <a href="#it_005fcrack">it_crack</a>_water instead of a meditation hollow, and nearby fire heat
 
17588
will melt the ice to <a href="#fl_005fwater">fl_water</a> (see <a href="#Heat_002dTransformation">Heat-Transformation</a>).
 
17589
</p>
 
17590
<dl compact="compact">
 
17591
<dt> <b>Attributes:</b></dt>
 
17592
<dd><dl compact="compact">
 
17593
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 0.1 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17594
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 0.1 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17595
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17596
</dl>
 
17597
 
 
17598
</dd>
 
17599
<dt> <b>Variants:</b></dt>
 
17600
<dd><dl compact="compact">
 
17601
<dt> <img src="images/fl_ice.png" alt="images/fl_ice"><p> <b>fl_ice</b>
 
17602
</p></dt>
 
17603
</dl>
 
17604
</dd>
 
17605
</dl>
 
17606
 
 
17607
<hr size="6">
 
17608
<a name="fl_005finverse"></a>
 
17609
<table cellpadding="1" cellspacing="1" border="0">
 
17610
<tr><td valign="middle" align="left">[<a href="#fl_005fice" title="Previous section in reading order"> &lt; </a>]</td>
 
17611
<td valign="middle" align="left">[<a href="#fl_005frock" title="Next section in reading order"> &gt; </a>]</td>
 
17612
<td valign="middle" align="left"> &nbsp; </td>
 
17613
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17614
<td valign="middle" align="left">[<a href="#Special-Floors" title="Up section"> Up </a>]</td>
 
17615
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17616
<td valign="middle" align="left"> &nbsp; </td>
 
17617
<td valign="middle" align="left"> &nbsp; </td>
 
17618
<td valign="middle" align="left"> &nbsp; </td>
 
17619
<td valign="middle" align="left"> &nbsp; </td>
 
17620
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17621
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17622
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17623
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17624
</tr></table>
 
17625
<a name="fl_005finverse-1"></a>
 
17626
<h3 class="subsection">7.4.6 fl_inverse</h3>
 
17627
<a name="index-fl_005finverse"></a>
 
17628
 
 
17629
<p>Inverse floors accelerate all actors into the opposite direction of the applied
 
17630
mouse input force. In all other aspects they are just standard floors.
 
17631
</p>
 
17632
<dl compact="compact">
 
17633
<dt> <b>Attributes:</b></dt>
 
17634
<dd><dl compact="compact">
 
17635
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: -2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17636
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 3.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17637
<dt> <b>flavor</b>, &nbsp;&nbsp;<i>values</i>: <code>&quot;white&quot;</code>, <code>&quot;gray&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;white&quot;</code>; &nbsp;&nbsp;<i>access</i>: <code>none</code></dt>
 
17638
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17639
</dl>
 
17640
 
 
17641
</dd>
 
17642
<dt> <b>Variants:</b></dt>
 
17643
<dd><dl compact="compact">
 
17644
<dt> <img src="images/fl_inverse_white.png" alt="images/fl_inverse_white"><p> <b>fl_inverse</b>: flavor = <code>&quot;white&quot;</code>
 
17645
</p></dt>
 
17646
<dt> <img src="images/fl_inverse_white.png" alt="images/fl_inverse_white"><p> <b>fl_inverse_white</b>: flavor = <code>&quot;white&quot;</code>
 
17647
</p></dt>
 
17648
<dt> <img src="images/fl_inverse_gray.png" alt="images/fl_inverse_gray"><p> <b>fl_inverse_gray</b>: flavor = <code>&quot;gray&quot;</code>
 
17649
</p></dt>
 
17650
</dl>
 
17651
</dd>
 
17652
</dl>
 
17653
 
 
17654
<hr size="6">
 
17655
<a name="fl_005frock"></a>
 
17656
<table cellpadding="1" cellspacing="1" border="0">
 
17657
<tr><td valign="middle" align="left">[<a href="#fl_005finverse" title="Previous section in reading order"> &lt; </a>]</td>
 
17658
<td valign="middle" align="left">[<a href="#fl_005fscales" title="Next section in reading order"> &gt; </a>]</td>
 
17659
<td valign="middle" align="left"> &nbsp; </td>
 
17660
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17661
<td valign="middle" align="left">[<a href="#Special-Floors" title="Up section"> Up </a>]</td>
 
17662
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17663
<td valign="middle" align="left"> &nbsp; </td>
 
17664
<td valign="middle" align="left"> &nbsp; </td>
 
17665
<td valign="middle" align="left"> &nbsp; </td>
 
17666
<td valign="middle" align="left"> &nbsp; </td>
 
17667
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17668
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17669
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17670
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17671
</tr></table>
 
17672
<a name="fl_005frock-1"></a>
 
17673
<h3 class="subsection">7.4.7 fl_rock</h3>
 
17674
<a name="index-fl_005frock"></a>
 
17675
 
 
17676
<p>A rock floor is in most aspects a standard floor, that exists in a framed
 
17677
variation, too.
 
17678
</p>
 
17679
<p>The framed variant is the successor of a fallen <a href="#st_005fbox">st_box</a>_rock. It may be
 
17680
flooded by a <a href="#fl_005fwater">fl_water</a> stream without the attribute &lsquo;<samp>floodable</samp>&rsquo; being
 
17681
set to &lsquo;<samp>true</samp>&rsquo; as the flood passes below this floor. The framed wood
 
17682
acts like a bridge over a flood stream and the water will continue to spread to
 
17683
neighboring grids, while the framed wood is still passable for actors. In fact
 
17684
a framed wood can even operate as a flood source, but we do not recommend this
 
17685
usage. see section <a href="#Flood-Spreading">Flood Spreading</a>.
 
17686
</p>
 
17687
<dl compact="compact">
 
17688
<dt> <b>Attributes:</b></dt>
 
17689
<dd><dl compact="compact">
 
17690
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>IDLE</code>, <code>FLOODING</code>; &nbsp;&nbsp;<i>default</i>: <code>IDLE</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
17691
<dt> <b>interval</b> &nbsp;&nbsp;<i>values</i>: positive number; &nbsp;&nbsp;<i>default</i>: <code>0.2</code></dt>
 
17692
<dd><p>Number of seconds .
 
17693
</p></dd>
 
17694
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.2 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17695
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 6.5 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17696
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17697
</dl>
 
17698
 
 
17699
</dd>
 
17700
<dt> <b>Variants:</b></dt>
 
17701
<dd><dl compact="compact">
 
17702
<dt> <img src="images/fl_rock.png" alt="images/fl_rock"><p> <b>fl_rock</b>
 
17703
</p></dt>
 
17704
<dt> <img src="images/fl_rock_framed.png" alt="images/fl_rock_framed"><p> <b>fl_rock_framed</b>: faces = <code>&quot;nesw&quot;</code>
 
17705
</p></dt>
 
17706
</dl>
 
17707
</dd>
 
17708
</dl>
 
17709
 
 
17710
<hr size="6">
 
17711
<a name="fl_005fscales"></a>
 
17712
<table cellpadding="1" cellspacing="1" border="0">
 
17713
<tr><td valign="middle" align="left">[<a href="#fl_005frock" title="Previous section in reading order"> &lt; </a>]</td>
 
17714
<td valign="middle" align="left">[<a href="#fl_005fslope" title="Next section in reading order"> &gt; </a>]</td>
 
17715
<td valign="middle" align="left"> &nbsp; </td>
 
17716
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17717
<td valign="middle" align="left">[<a href="#Special-Floors" title="Up section"> Up </a>]</td>
 
17718
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17719
<td valign="middle" align="left"> &nbsp; </td>
 
17720
<td valign="middle" align="left"> &nbsp; </td>
 
17721
<td valign="middle" align="left"> &nbsp; </td>
 
17722
<td valign="middle" align="left"> &nbsp; </td>
 
17723
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17724
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17725
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17726
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17727
</tr></table>
 
17728
<a name="fl_005fscales-1"></a>
 
17729
<h3 class="subsection">7.4.8 fl_scales</h3>
 
17730
<a name="index-fl_005fscales"></a>
 
17731
 
 
17732
<p>The scales floor is a trigger that reacts on the mass load of actors and items
 
17733
atop or any stones that may press it. It performs actions when it is initially
 
17734
pressed and again when it releases. A pressed trigger is in state &lsquo;<samp>ON</samp>&rsquo; and
 
17735
will send an action value of &lsquo;<samp>true</samp>&rsquo;, a released trigger is in state
 
17736
&lsquo;<samp>OFF</samp>&rsquo; and will send an action value of &lsquo;<samp>false</samp>&rsquo;.
 
17737
</p>
 
17738
<p>Only actors moving on the floor can press scales. An actor jumping over a
 
17739
scale will not press it. An actor jumping on a scale will release and press
 
17740
it again. But anyway the mass of all actors and items atop will be measured and
 
17741
compared to the given <code>min</code> attribute. The default triggering mass is 1.8.
 
17742
This mass is given by two <a href="#ac_005fmarble">ac_marble</a> or three <a href="#ac_005fpearl">ac_pearl</a>. Any item
 
17743
like <a href="#it_005fweight">it_weight</a> or weights in an <a href="#it_005fbag">it_bag</a> that are either dropped on
 
17744
top of scales or carried by any actor in the players inventory is added to the
 
17745
actors basic mass.
 
17746
</p>
 
17747
<p>Just solid stones will press the scales when pushed onto it. Floating, hollow
 
17748
stones will generally not press the scales with the exception of the hollow,
 
17749
central puzzle stone (see section <a href="#st_005fpuzzle">st_puzzle</a>).
 
17750
</p>
 
17751
<p>There is no way to set the state of a trigger manually. But the state can
 
17752
nevertheless be read. At initialization a scales floor that is pressed by
 
17753
objects will start in state &lsquo;<samp>ON</samp>&rsquo; without sending actions due to the
 
17754
<a href="#Snapshot-Principle">Snapshot Principle</a>.
 
17755
</p>
 
17756
<p>Scales trigger with a click sound.
 
17757
</p>
 
17758
<p>Scales are given in several flavors. They are similar to the <a href="#it_005ftrigger">it_trigger</a>
 
17759
in respect to their features. Visually they look similar to frames, but are
 
17760
well distinguishable. It is deprecated to use invisible <a href="#it_005ftrigger">it_trigger</a> on
 
17761
a framed floor as a substitution for scales.
 
17762
</p>
 
17763
<p>Alternative items that react just on actors are <a href="#it_005fsensor">it_sensor</a> and
 
17764
<a href="#it_005fcross">it_cross</a>.
 
17765
</p>
 
17766
<dl compact="compact">
 
17767
<dt> <b>Attributes:</b></dt>
 
17768
<dd><dl compact="compact">
 
17769
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>OFF</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
17770
<dd><p>The current switch state - &lsquo;<samp>ON</samp>&rsquo; for pressed scales, &lsquo;<samp>OFF</samp>&rsquo; for a
 
17771
released scales.
 
17772
</p></dd>
 
17773
<dt> <b>flavor</b>, &nbsp;&nbsp;<i>values</i>: <code>&quot;brick&quot;</code>, <code>&quot;bridgewood&quot;</code>, <code>&quot;concrete&quot;</code>, <code>&quot;darkgray&quot;</code>, <code>&quot;gray&quot;</code>, <code>&quot;platinum&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;darkgray&quot;</code></dt>
 
17774
<dd><p>The base floor type of the scales.
 
17775
</p></dd>
 
17776
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17777
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 4.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17778
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: depends on <code>flavor</code> &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17779
<dd><p>True if flavor is <code>&quot;bridgewood&quot;</code>, false otherwise.
 
17780
</p></dd>
 
17781
<dt> <b>min</b> &nbsp;&nbsp;<i>values</i>: positive float number; &nbsp;&nbsp;<i>default</i>: <code>+1.8</code></dt>
 
17782
<dd><p>Mass unit is the mass of an <a href="#ac_005fmarble">ac_marble</a>
 
17783
</p></dd>
 
17784
</dl>
 
17785
 
 
17786
</dd>
 
17787
<dt> <b>Messages:</b> none</dt>
 
17788
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
17789
<dt> <b>Variants:</b></dt>
 
17790
<dd><dl compact="compact">
 
17791
<dt> <img src="images/fl_scales_brick.png" alt="images/fl_scales_brick"><p> <b>fl_scales_brick</b>: flavor = <code>&quot;brick&quot;</code>
 
17792
</p></dt>
 
17793
<dt> <img src="images/fl_scales_bridge_bw_closed.png" alt="images/fl_scales_bridge_bw_closed"><p> <b>fl_scales_bridgewood</b>: flavor = <code>&quot;bridgewood&quot;</code>
 
17794
</p></dt>
 
17795
<dt> <img src="images/fl_scales_concrete.png" alt="images/fl_scales_concrete"><p> <b>fl_scales_concrete</b>: flavor = <code>&quot;concrete&quot;</code>
 
17796
</p></dt>
 
17797
<dt> <img src="images/fl_scales_darkgray.png" alt="images/fl_scales_darkgray"><p> <b>fl_scales_darkgray</b>: flavor = <code>&quot;darkgray&quot;</code>
 
17798
</p></dt>
 
17799
<dt> <img src="images/fl_scales_gray.png" alt="images/fl_scales_gray"><p> <b>fl_scales_gray</b>: flavor = <code>&quot;gray&quot;</code>
 
17800
</p></dt>
 
17801
<dt> <img src="images/fl_scales_platinum.png" alt="images/fl_scales_platinum"><p> <b>fl_scales_platinum</b>: flavor = <code>&quot;platinum&quot;</code>
 
17802
</p></dt>
 
17803
</dl>
 
17804
 
 
17805
</dd>
 
17806
</dl>
 
17807
 
 
17808
<hr size="6">
 
17809
<a name="fl_005fslope"></a>
 
17810
<table cellpadding="1" cellspacing="1" border="0">
 
17811
<tr><td valign="middle" align="left">[<a href="#fl_005fscales" title="Previous section in reading order"> &lt; </a>]</td>
 
17812
<td valign="middle" align="left">[<a href="#fl_005fswamp" title="Next section in reading order"> &gt; </a>]</td>
 
17813
<td valign="middle" align="left"> &nbsp; </td>
 
17814
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17815
<td valign="middle" align="left">[<a href="#Special-Floors" title="Up section"> Up </a>]</td>
 
17816
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17817
<td valign="middle" align="left"> &nbsp; </td>
 
17818
<td valign="middle" align="left"> &nbsp; </td>
 
17819
<td valign="middle" align="left"> &nbsp; </td>
 
17820
<td valign="middle" align="left"> &nbsp; </td>
 
17821
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17822
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17823
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17824
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17825
</tr></table>
 
17826
<a name="fl_005fslope-1"></a>
 
17827
<h3 class="subsection">7.4.9 fl_slope</h3>
 
17828
<a name="index-fl_005fslope"></a>
 
17829
 
 
17830
<p>A floor suited to build larger hills, gradient areas, wall brims, staircases
 
17831
or tubes that channelize actors.
 
17832
</p>
 
17833
<p>Slope floors are basically described by their &lsquo;<samp>slope</samp>&rsquo; and their &lsquo;<samp>shape</samp>&rsquo;.
 
17834
The slope is the orientation of the force applied to actors on top. The eight
 
17835
main orientations and &lsquo;<samp>NODIR</samp>&rsquo;, that causes no force to be applied at all, are
 
17836
currently supported.
 
17837
</p>
 
17838
<p>The shape describes the intended usage, which causes a proper visual
 
17839
representation. There are planar slopes falling just into a horizontal or
 
17840
vertical direction (<code>&quot;pw&quot;</code>, <code>&quot;ps&quot;</code>, <code>&quot;pe&quot;</code>, <code>&quot;pn&quot;</code>),
 
17841
inner and outer edges falling into a diagonal direction (<code>&quot;inw&quot;</code>,
 
17842
<code>&quot;isw&quot;</code>, <code>&quot;ise&quot;</code>, <code>&quot;ine&quot;</code>, <code>&quot;onw&quot;</code>, <code>&quot;osw&quot;</code>,
 
17843
<code>&quot;ose&quot;</code>, <code>&quot;one&quot;</code>), tube center parts falling into a horizontal or
 
17844
vertical direction (<code>&quot;tw&quot;</code>, <code>&quot;ts&quot;</code>, <code>&quot;te&quot;</code>, <code>&quot;tn&quot;</code>) and
 
17845
tube left and right sides that accelerate actors into the main tube direction
 
17846
and back to the tube center at the same time (<code>&quot;twl&quot;</code>, <code>&quot;tsl&quot;</code>,
 
17847
<code>&quot;tel&quot;</code>, <code>&quot;tnl&quot;</code>, <code>&quot;twr&quot;</code>, <code>&quot;tsr&quot;</code>, <code>&quot;ter&quot;</code>,
 
17848
<code>&quot;tnr&quot;</code>).
 
17849
</p>
 
17850
<p>Note that several shapes do currently use an identical visual representation.
 
17851
But they differ in their usage and different slope force orientations are
 
17852
assigned by default when you use the variant suffices. It is strongly
 
17853
recommended to use always the shape of the intended usage as the images might
 
17854
be improved in the future and should fit to your level.
 
17855
</p>
 
17856
<p>The force applied to actors on the floor grid is given per default by the
 
17857
global attribute <a href="#SlopeStrength">SlopeStrength</a>. You may override this default by an
 
17858
explicit value for the slope floor attribute &lsquo;<samp>strength</samp>&rsquo;. In very special
 
17859
cases you may even define individual force components &lsquo;<samp>force_x</samp>&rsquo; and
 
17860
&lsquo;<samp>force_y</samp>&rsquo;, which will override all other slope force attributes.
 
17861
</p>
 
17862
<dl compact="compact">
 
17863
<dt> <b>Attributes:</b></dt>
 
17864
<dd>
 
17865
<dl compact="compact">
 
17866
<dt> <b>slope</b>, &nbsp;&nbsp;<i>values</i>: <code>NODIR</code>, <code>WEST</code>, <code>SOUTH</code>, <code>EAST</code>, <code>NORTH</code>, <code>NORTHWEST</code>, <code>SOUTHWEST</code>, <code>SOUTHEAST</code>, <code>NORTHEAST</code>; &nbsp;&nbsp;<i>default</i>: <code>NODIR</code></dt>
 
17867
<dd><p>The orientation of the force. Note that setting this attribute does not
 
17868
automatically assign a fitting &lsquo;<samp>shape</samp>&rsquo;. This attribute is neglected if
 
17869
&lsquo;<samp>force_x</samp>&rsquo; or &lsquo;<samp>force_y</samp>&rsquo; attributes are set.
 
17870
</p>
 
17871
</dd>
 
17872
<dt> <b>shape</b>, &nbsp;&nbsp;<i>values</i>: <code>&quot;&quot;</code>, <code>&quot;pw&quot;</code>, <code>&quot;ps&quot;</code>, <code>&quot;pe&quot;</code>, <code>&quot;pn&quot;</code>, <code>&quot;inw&quot;</code>, <code>&quot;isw&quot;</code>, <code>&quot;ise&quot;</code>, <code>&quot;ine&quot;</code>, <code>&quot;onw&quot;</code>, <code>&quot;osw&quot;</code>, <code>&quot;ose&quot;</code>, <code>&quot;one&quot;</code>, <code>&quot;tw&quot;</code>, <code>&quot;ts&quot;</code>, <code>&quot;te&quot;</code>, <code>&quot;tn&quot;</code>, <code>&quot;twl&quot;</code>, <code>&quot;tsl&quot;</code>, <code>&quot;tel&quot;</code>, <code>&quot;tnl&quot;</code>, <code>&quot;twr&quot;</code>, <code>&quot;tsr&quot;</code>, <code>&quot;ter&quot;</code>, <code>&quot;tnr&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;&quot;</code></dt>
 
17873
<dd><p>The intended usage as described above. Note that setting this attribute does
 
17874
not automatically assign the proper &lsquo;<samp>slope</samp>&rsquo;.
 
17875
</p>
 
17876
</dd>
 
17877
<dt> <b>strength</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>25.0</code> &nbsp;&nbsp;See section <a href="#SlopeStrength">SlopeStrength</a></dt>
 
17878
<dt> <b>force_x</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>0.0</code> &nbsp;&nbsp;See section <a href="#force_005fx">force_x</a></dt>
 
17879
<dt> <b>force_y</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>0.0</code> &nbsp;&nbsp;See section <a href="#force_005fy">force_y</a></dt>
 
17880
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17881
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 4.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17882
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17883
</dl>
 
17884
 
 
17885
</dd>
 
17886
<dt> <b>Messages:</b> None</dt>
 
17887
<dt> <b>Variants:</b></dt>
 
17888
<dd><table>
 
17889
<tr><td width="8%"><img src="images/fl_slope_f.png" alt="images/fl_slope_f"></td><td width="42%"><b>fl_slope</b> slope = &lsquo;<samp>NODIR</samp>&rsquo;, shape = <code>&quot;&quot;</code></td><td width="8%"></td><td width="42%"></td></tr>
 
17890
<tr><td width="8%"><img src="images/fl_slope_4.png" alt="images/fl_slope_4"></td><td width="42%"><b>fl_slope_pw</b> slope = &lsquo;<samp>WEST</samp>&rsquo;, shape = <code>&quot;pw&quot;</code></td><td width="8%"><img src="images/fl_slope.png" alt="images/fl_slope"></td><td width="42%"><b>fl_slope_ps</b> slope = &lsquo;<samp>SOUTH</samp>&rsquo;, shape = <code>&quot;ps&quot;</code></td></tr>
 
17891
<tr><td width="8%"><img src="images/fl_slope_3.png" alt="images/fl_slope_3"></td><td width="42%"><b>fl_slope_pe</b> slope = &lsquo;<samp>EAST</samp>&rsquo;, shape = <code>&quot;pe&quot;</code></td><td width="8%"><img src="images/fl_slope_2.png" alt="images/fl_slope_2"></td><td width="42%"><b>fl_slope_pn</b> slope = &lsquo;<samp>NORTH</samp>&rsquo;, shape = <code>&quot;pn&quot;</code></td></tr>
 
17892
<tr><td width="8%"><img src="images/fl_slope_c4.png" alt="images/fl_slope_c4"></td><td width="42%"><b>fl_slope_inw</b> slope = &lsquo;<samp>NORTHWEST</samp>&rsquo;, shape = <code>&quot;inw&quot;</code></td><td width="8%"><img src="images/fl_slope_c3.png" alt="images/fl_slope_c3"></td><td width="42%"><b>fl_slope_isw</b> slope = &lsquo;<samp>SOUTHWEST</samp>&rsquo;, shape = <code>&quot;isw&quot;</code></td></tr>
 
17893
<tr><td width="8%"><img src="images/fl_slope_c.png" alt="images/fl_slope_c"></td><td width="42%"><b>fl_slope_ise</b> slope = &lsquo;<samp>SOUTHEAST</samp>&rsquo;, shape = <code>&quot;ise&quot;</code></td><td width="8%"><img src="images/fl_slope_c2.png" alt="images/fl_slope_c2"></td><td width="42%"><b>fl_slope_ine</b> slope = &lsquo;<samp>NORTHEAST</samp>&rsquo;, shape = <code>&quot;ine&quot;</code></td></tr>
 
17894
<tr><td width="8%"><img src="images/fl_slope_b4.png" alt="images/fl_slope_b4"></td><td width="42%"><b>fl_slope_onw</b> slope = &lsquo;<samp>NORTHWEST</samp>&rsquo;, shape = <code>&quot;onw&quot;</code></td><td width="8%"><img src="images/fl_slope_b2.png" alt="images/fl_slope_b2"></td><td width="42%"><b>fl_slope_osw</b> slope = &lsquo;<samp>SOUTHWEST</samp>&rsquo;, shape = <code>&quot;osw&quot;</code></td></tr>
 
17895
<tr><td width="8%"><img src="images/fl_slope_b.png" alt="images/fl_slope_b"></td><td width="42%"><b>fl_slope_ose</b> slope = &lsquo;<samp>SOUTHEAST</samp>&rsquo;, shape = <code>&quot;ose&quot;</code></td><td width="8%"><img src="images/fl_slope_b3.png" alt="images/fl_slope_b3"></td><td width="42%"><b>fl_slope_one</b> slope = &lsquo;<samp>NORTHEAST</samp>&rsquo;, shape = <code>&quot;one&quot;</code></td></tr>
 
17896
<tr><td width="8%"><img src="images/fl_slope_f.png" alt="images/fl_slope_f"></td><td width="42%"><b>fl_slope_tw</b> slope = &lsquo;<samp>WEST</samp>&rsquo;, shape = <code>&quot;tw&quot;</code></td><td width="8%"><img src="images/fl_slope_f.png" alt="images/fl_slope_f"></td><td width="42%"><b>fl_slope_ts</b> slope = &lsquo;<samp>SOUTH</samp>&rsquo;, shape = <code>&quot;ts&quot;</code></td></tr>
 
17897
<tr><td width="8%"><img src="images/fl_slope_f.png" alt="images/fl_slope_f"></td><td width="42%"><b>fl_slope_te</b> slope = &lsquo;<samp>EAST</samp>&rsquo;, shape = <code>&quot;te&quot;</code></td><td width="8%"><img src="images/fl_slope_f.png" alt="images/fl_slope_f"></td><td width="42%"><b>fl_slope_tn</b> slope = &lsquo;<samp>NORTH</samp>&rsquo;, shape = <code>&quot;tn&quot;</code></td></tr>
 
17898
<tr><td width="8%"><img src="images/fl_slope_2.png" alt="images/fl_slope_2"></td><td width="42%"><b>fl_slope_twl</b> slope = &lsquo;<samp>NORTHWEST</samp>&rsquo;, shape = <code>&quot;twl&quot;</code></td><td width="8%"><img src="images/fl_slope_4.png" alt="images/fl_slope_4"></td><td width="42%"><b>fl_slope_tsl</b> slope = &lsquo;<samp>SOUTHWEST</samp>&rsquo;, shape = <code>&quot;tsl&quot;</code></td></tr>
 
17899
<tr><td width="8%"><img src="images/fl_slope.png" alt="images/fl_slope"></td><td width="42%"><b>fl_slope_tel</b> slope = &lsquo;<samp>SOUTHEAST</samp>&rsquo;, shape = <code>&quot;tel&quot;</code></td><td width="8%"><img src="images/fl_slope_3.png" alt="images/fl_slope_3"></td><td width="42%"><b>fl_slope_tnl</b> slope = &lsquo;<samp>NORTHEAST</samp>&rsquo;, shape = <code>&quot;tnl&quot;</code></td></tr>
 
17900
<tr><td width="8%"><img src="images/fl_slope.png" alt="images/fl_slope"></td><td width="42%"><b>fl_slope_twr</b> slope = &lsquo;<samp>SOUTHWEST</samp>&rsquo;, shape = <code>&quot;twr&quot;</code></td><td width="8%"><img src="images/fl_slope_3.png" alt="images/fl_slope_3"></td><td width="42%"><b>fl_slope_tsr</b> slope = &lsquo;<samp>SOUTHEAST</samp>&rsquo;, shape = <code>&quot;tsr&quot;</code></td></tr>
 
17901
<tr><td width="8%"><img src="images/fl_slope_2.png" alt="images/fl_slope_2"></td><td width="42%"><b>fl_slope_ter</b> slope = &lsquo;<samp>NORTHEAST</samp>&rsquo;, shape = <code>&quot;ter&quot;</code></td><td width="8%"><img src="images/fl_slope_4.png" alt="images/fl_slope_4"></td><td width="42%"><b>fl_slope_tnr</b> slope = &lsquo;<samp>NORTHWEST</samp>&rsquo;, shape = <code>&quot;tnr&quot;</code></td></tr>
 
17902
</table>
 
17903
</dd>
 
17904
</dl>
 
17905
 
 
17906
<hr size="6">
 
17907
<a name="fl_005fswamp"></a>
 
17908
<table cellpadding="1" cellspacing="1" border="0">
 
17909
<tr><td valign="middle" align="left">[<a href="#fl_005fslope" title="Previous section in reading order"> &lt; </a>]</td>
 
17910
<td valign="middle" align="left">[<a href="#fl_005fthief" title="Next section in reading order"> &gt; </a>]</td>
 
17911
<td valign="middle" align="left"> &nbsp; </td>
 
17912
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17913
<td valign="middle" align="left">[<a href="#Special-Floors" title="Up section"> Up </a>]</td>
 
17914
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17915
<td valign="middle" align="left"> &nbsp; </td>
 
17916
<td valign="middle" align="left"> &nbsp; </td>
 
17917
<td valign="middle" align="left"> &nbsp; </td>
 
17918
<td valign="middle" align="left"> &nbsp; </td>
 
17919
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17920
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17921
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17922
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17923
</tr></table>
 
17924
<a name="fl_005fswamp-1"></a>
 
17925
<h3 class="subsection">7.4.10 fl_swamp</h3>
 
17926
<a name="index-fl_005fswamp"></a>
 
17927
 
 
17928
<p>A swamp is very sticky floor caused by a high friction. Additionally ball like
 
17929
actors will sink in swamp. But the sink speed is limited and gives the user
 
17930
a certain time, defined by the global attribute <a href="#SwampSinkTime">SwampSinkTime</a>. When
 
17931
an actor moves faster than 6 grids per second, the actor start raising out of
 
17932
the swamp. Jumping in a swamp raises an actor, too.
 
17933
</p>
 
17934
<p>A swamp is indestructible to the aspect that <a href="#it_005fcrack">it_crack</a> will not spread
 
17935
onto it. But fire starting to burn nearby will dry out the swamp to
 
17936
<a href="#fl_005fdunes">fl_dunes</a> (see section <a href="#Heat_002dTransformation">Heat-Transformation</a>). A swamp itself may be a successor of
 
17937
a <a href="#fl_005fwater">fl_water</a> heated by a fire.
 
17938
</p>
 
17939
<dl compact="compact">
 
17940
<dt> <b>Attributes:</b></dt>
 
17941
<dd><dl compact="compact">
 
17942
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
17943
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 13.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
17944
<dt> <b>indestructible</b>, &nbsp;&nbsp;<i>values</i>: bool ; &nbsp;&nbsp;<i>default</i>: true; &nbsp;&nbsp;<i>access</i>: <code>none</code>  &nbsp;&nbsp;See section <a href="#indestructible">indestructible</a></dt>
 
17945
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
17946
</dl>
 
17947
 
 
17948
</dd>
 
17949
<dt> <b>Variants:</b></dt>
 
17950
<dd><dl compact="compact">
 
17951
<dt> <img src="images/fl_swamp.png" alt="images/fl_swamp"><p> <b>fl_swamp</b>
 
17952
</p></dt>
 
17953
</dl>
 
17954
</dd>
 
17955
</dl>
 
17956
 
 
17957
<hr size="6">
 
17958
<a name="fl_005fthief"></a>
 
17959
<table cellpadding="1" cellspacing="1" border="0">
 
17960
<tr><td valign="middle" align="left">[<a href="#fl_005fswamp" title="Previous section in reading order"> &lt; </a>]</td>
 
17961
<td valign="middle" align="left">[<a href="#fl_005fwater" title="Next section in reading order"> &gt; </a>]</td>
 
17962
<td valign="middle" align="left"> &nbsp; </td>
 
17963
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
17964
<td valign="middle" align="left">[<a href="#Special-Floors" title="Up section"> Up </a>]</td>
 
17965
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
17966
<td valign="middle" align="left"> &nbsp; </td>
 
17967
<td valign="middle" align="left"> &nbsp; </td>
 
17968
<td valign="middle" align="left"> &nbsp; </td>
 
17969
<td valign="middle" align="left"> &nbsp; </td>
 
17970
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
17971
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
17972
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
17973
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
17974
</tr></table>
 
17975
<a name="fl_005fthief-1"></a>
 
17976
<h3 class="subsection">7.4.11 fl_thief</h3>
 
17977
<a name="index-fl_005fthief"></a>
 
17978
 
 
17979
<p>A thief steals the item on its position plus an item from the player&rsquo;s inventory
 
17980
when it is entered by an owned actor. Unfortunately the thief floor is visually
 
17981
indistinguishable from an <a href="#fl_005fbluegray">fl_bluegray</a> and has even the same
 
17982
&lsquo;<samp>friction</samp>&rsquo; and &lsquo;<samp>adhesion</samp>&rsquo; values.
 
17983
</p>
 
17984
<p>The item is not directly stolen at the moment of entering the grid. The entering
 
17985
itself just causes the thief to emerge from his hiding-place. The thief steals
 
17986
from the actor that did conjure him at the moment of maximum visibility. He takes
 
17987
a random item from the owner&rsquo;s inventory. But he just will steal an item if
 
17988
the actor is not shielded due to an activated <a href="#it_005fumbrella">it_umbrella</a>.
 
17989
</p>
 
17990
<p>Thieves have an addiction to alcohol. Thus they get drunken and inactive if
 
17991
they happen to steal a bottle filled with stuff.
 
17992
</p>
 
17993
<p>Thieves have an enemy - the <a href="#st_005fchess">st_chess</a>. If a chess stone is pushed onto
 
17994
a thief it will capture the thief, sober or drunken. The thief vanishes leaving
 
17995
an inactive standard floor and the chess stone jumps onto its position. But the
 
17996
thief will leave behind on the grid all stolen items in his own <a href="#it_005fbag">it_bag</a>.
 
17997
If the thief has not stolen any items he leaves no empty bag.
 
17998
</p>
 
17999
<dl compact="compact">
 
18000
<dt> <b>Attributes:</b> none</dt>
 
18001
<dd><dl compact="compact">
 
18002
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.5 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
18003
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 4.5 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
18004
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
18005
</dl>
 
18006
 
 
18007
</dd>
 
18008
<dt> <b>Messages:</b> none</dt>
 
18009
<dt> <b>Action:</b>  none</dt>
 
18010
<dt> <b>Variants:</b></dt>
 
18011
<dd><dl compact="compact">
 
18012
<dt> <img src="images/fl_bluegray.png" alt="images/fl_bluegray"><p> <b>fl_thief</b>: hidden
 
18013
</p></dt>
 
18014
<dt> <img src="images/fl_thief.png" alt="images/fl_thief"><p> <b>fl_thief</b>: showing up at the moment when stealing items
 
18015
</p></dt>
 
18016
<dt> <img src="images/fl_thief_capture.png" alt="images/fl_thief_capture"><p> <b>fl_thief</b>: when being captured
 
18017
</p></dt>
 
18018
<dt> <img src="images/fl_thief_drunken.png" alt="images/fl_thief_drunken"><p> <b>fl_thief</b>: drunken thief
 
18019
</p></dt>
 
18020
</dl>
 
18021
</dd>
 
18022
</dl>
 
18023
 
 
18024
<hr size="6">
 
18025
<a name="fl_005fwater"></a>
 
18026
<table cellpadding="1" cellspacing="1" border="0">
 
18027
<tr><td valign="middle" align="left">[<a href="#fl_005fthief" title="Previous section in reading order"> &lt; </a>]</td>
 
18028
<td valign="middle" align="left">[<a href="#fl_005fwood" title="Next section in reading order"> &gt; </a>]</td>
 
18029
<td valign="middle" align="left"> &nbsp; </td>
 
18030
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18031
<td valign="middle" align="left">[<a href="#Special-Floors" title="Up section"> Up </a>]</td>
 
18032
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18033
<td valign="middle" align="left"> &nbsp; </td>
 
18034
<td valign="middle" align="left"> &nbsp; </td>
 
18035
<td valign="middle" align="left"> &nbsp; </td>
 
18036
<td valign="middle" align="left"> &nbsp; </td>
 
18037
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18038
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18039
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18040
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18041
</tr></table>
 
18042
<a name="fl_005fwater-1"></a>
 
18043
<h3 class="subsection">7.4.12 fl_water</h3>
 
18044
<a name="index-fl_005fwater"></a>
 
18045
 
 
18046
<p>Besides <a href="#fl_005fabyss">fl_abyss</a> water is the second natural floor barrier for ball like
 
18047
actors, as they can not easily pass it.
 
18048
</p>
 
18049
<p>Both, <a href="#ac_005fmarble">ac_marble</a> and <a href="#ac_005fpearl">ac_pearl</a>, will sink in water, usually at once,
 
18050
but the time amount can be configured by the global attribute <a href="#WaterSinkTime">WaterSinkTime</a>.
 
18051
Unlike <a href="#fl_005fswamp">fl_swamp</a> water does not raise fast moving actors. But jumping
 
18052
within water raises an actor. Jumping completely over a water chasm is of course
 
18053
a more standard way to cross it. Actors protected by an activated
 
18054
<a href="#it_005fumbrella">it_umbrella</a> can pass and even move on water without restrictions.
 
18055
</p>
 
18056
<p>Some stones fall into water, too. <a href="#st_005fbox">st_box</a> will build floors on which all
 
18057
actors can move and pass the former water filled grid.
 
18058
</p>
 
18059
<p>Water itself is indestructible to the aspect that <a href="#it_005fcrack">it_crack</a> will not spread
 
18060
onto it. But a fire starting to burn nearby will dry out the water to
 
18061
<a href="#fl_005fswamp">fl_swamp</a> (see <a href="#Heat_002dTransformation">Heat-Transformation</a>).
 
18062
</p>
 
18063
<p>The standard water is static, its &lsquo;<samp>state</samp>&rsquo; is &lsquo;<samp>IDLE</samp>&rsquo;. It will not
 
18064
spread to adjacent floors. But you can set up flood streams that will fill areas
 
18065
or flow through given paths. You just need to define the area by setting the
 
18066
attribute &lsquo;<samp>floodable</samp>&rsquo; to &lsquo;<samp>true</samp>&rsquo; on the affected floors. But static
 
18067
water lakes do not require an additional &lsquo;<samp>floodable</samp>&rsquo; attribute, as they
 
18068
are floodable by default.
 
18069
</p>
 
18070
<p>As soon as you add a &lsquo;<samp>fl_water_source</samp>&rsquo; or set the &lsquo;<samp>state</samp>&rsquo; to
 
18071
&lsquo;<samp>FLOODING</samp>&rsquo;, the water starts to spread to floodable neighboring grids with
 
18072
a speed defined by the attribute &lsquo;<samp>interval</samp>&rsquo;. The speed will be inherited to
 
18073
floors flooded by a stream.
 
18074
</p>
 
18075
<p>As a flood can be influenced by many obstacles and may sink some stones itself,
 
18076
you will find a complete discussion in the section <a href="#Flood-Spreading">Flood Spreading</a>.
 
18077
</p>
 
18078
<dl compact="compact">
 
18079
<dt> <b>Attributes:</b></dt>
 
18080
<dd><dl compact="compact">
 
18081
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>IDLE</code>, <code>FLOODING</code>; &nbsp;&nbsp;<i>default</i>: <code>IDLE</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
18082
<dt> <b>interval</b> &nbsp;&nbsp;<i>values</i>: positive number; &nbsp;&nbsp;<i>default</i>: <code>0.2</code></dt>
 
18083
<dd><p>Number of seconds .
 
18084
</p></dd>
 
18085
<dt> <b>indestructible</b>, &nbsp;&nbsp;<i>values</i>: bool ; &nbsp;&nbsp;<i>default</i>: true; &nbsp;&nbsp;<i>access</i>: <code>none</code>  &nbsp;&nbsp;See section <a href="#indestructible">indestructible</a></dt>
 
18086
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 1.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
18087
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 5.0 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
18088
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
18089
</dl>
 
18090
 
 
18091
</dd>
 
18092
<dt> <b>Variants:</b></dt>
 
18093
<dd><dl compact="compact">
 
18094
<dt> <img src="images/fl_water.png" alt="images/fl_water"><p> <b>fl_water</b>: state = <code>IDLE</code>
 
18095
</p></dt>
 
18096
<dt> <img src="images/fl_water.png" alt="images/fl_water"><p> <b>fl_water_source</b>: state = <code>FLOODING</code>
 
18097
</p></dt>
 
18098
</dl>
 
18099
</dd>
 
18100
</dl>
 
18101
 
 
18102
<hr size="6">
 
18103
<a name="fl_005fwood"></a>
 
18104
<table cellpadding="1" cellspacing="1" border="0">
 
18105
<tr><td valign="middle" align="left">[<a href="#fl_005fwater" title="Previous section in reading order"> &lt; </a>]</td>
 
18106
<td valign="middle" align="left">[<a href="#fl_005fyinyang" title="Next section in reading order"> &gt; </a>]</td>
 
18107
<td valign="middle" align="left"> &nbsp; </td>
 
18108
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18109
<td valign="middle" align="left">[<a href="#Special-Floors" title="Up section"> Up </a>]</td>
 
18110
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18111
<td valign="middle" align="left"> &nbsp; </td>
 
18112
<td valign="middle" align="left"> &nbsp; </td>
 
18113
<td valign="middle" align="left"> &nbsp; </td>
 
18114
<td valign="middle" align="left"> &nbsp; </td>
 
18115
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18116
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18117
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18118
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18119
</tr></table>
 
18120
<a name="fl_005fwood-1"></a>
 
18121
<h3 class="subsection">7.4.13 fl_wood</h3>
 
18122
<a name="index-fl_005fwood"></a>
 
18123
 
 
18124
<p>A wooden floor is in most aspects a standard floor, that exists in textures
 
18125
with horizontal or vertical panels, or random. All textures come in a framed
 
18126
variation, too.
 
18127
</p>
 
18128
<p>The framed variant is the successor of a fallen <a href="#st_005fbox">st_box</a>_wood. It may be
 
18129
flooded by a <a href="#fl_005fwater">fl_water</a> stream without the attribute &lsquo;<samp>floodable</samp>&rsquo; being
 
18130
set to &lsquo;<samp>true</samp>&rsquo; as the flood passes below this floor. The framed wood
 
18131
acts like a bridge over a flood stream and the water will continue to spread to
 
18132
neighboring grids, while the framed wood is still passable for actors. In fact
 
18133
a framed wood can even operate as a flood source, but we do not recommend this
 
18134
usage. see section <a href="#Flood-Spreading">Flood Spreading</a>.
 
18135
</p>
 
18136
<p>When burnt, <code>fl_wood</code> becomes <a href="#fl_005fabyss">fl_abyss</a>.
 
18137
</p>
 
18138
<dl compact="compact">
 
18139
<dt> <b>Attributes:</b></dt>
 
18140
<dd><dl compact="compact">
 
18141
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>IDLE</code>, <code>FLOODING</code>; &nbsp;&nbsp;<i>default</i>: <code>IDLE</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
18142
<dt> <b>interval</b> &nbsp;&nbsp;<i>values</i>: positive number; &nbsp;&nbsp;<i>default</i>: <code>0.2</code></dt>
 
18143
<dd><p>Number of seconds .
 
18144
</p></dd>
 
18145
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
18146
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 6.4 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
18147
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: true &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
18148
</dl>
 
18149
 
 
18150
</dd>
 
18151
<dt> <b>Variants:</b></dt>
 
18152
<dd><dl compact="compact">
 
18153
<dt> <img src="images/fl_wood.png" alt="images/fl_wood"><p> <b>fl_wood</b>: texture = random
 
18154
</p></dt>
 
18155
<dt> <img src="images/fl_wood_3.png" alt="images/fl_wood_3"><p> <b>fl_wood_h</b>: texture = <code>&quot;h&quot;</code>
 
18156
</p></dt>
 
18157
<dt> <img src="images/fl_wood.png" alt="images/fl_wood"><p> <b>fl_wood_v</b>: texture = <code>&quot;v&quot;</code>
 
18158
</p></dt>
 
18159
<dt> <img src="images/fl_wood_framed.png" alt="images/fl_wood_framed"><p> <b>fl_wood_framed</b>: texture = random, faces = <code>&quot;nesw&quot;</code>
 
18160
</p></dt>
 
18161
<dt> <img src="images/fl_wood_framed.png" alt="images/fl_wood_framed"><p> <b>fl_wood_framed_h</b>: texture = <code>&quot;h&quot;</code>, faces = <code>&quot;nesw&quot;</code>
 
18162
</p></dt>
 
18163
<dt> <img src="images/fl_wood_framed_2.png" alt="images/fl_wood_framed_2"><p> <b>fl_wood_framed_v</b>: texture = <code>&quot;v&quot;</code>, faces = <code>&quot;nesw&quot;</code>
 
18164
</p></dt>
 
18165
</dl>
 
18166
</dd>
 
18167
</dl>
 
18168
 
 
18169
<hr size="6">
 
18170
<a name="fl_005fyinyang"></a>
 
18171
<table cellpadding="1" cellspacing="1" border="0">
 
18172
<tr><td valign="middle" align="left">[<a href="#fl_005fwood" title="Previous section in reading order"> &lt; </a>]</td>
 
18173
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next section in reading order"> &gt; </a>]</td>
 
18174
<td valign="middle" align="left"> &nbsp; </td>
 
18175
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18176
<td valign="middle" align="left">[<a href="#Special-Floors" title="Up section"> Up </a>]</td>
 
18177
<td valign="middle" align="left">[<a href="#Item-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18178
<td valign="middle" align="left"> &nbsp; </td>
 
18179
<td valign="middle" align="left"> &nbsp; </td>
 
18180
<td valign="middle" align="left"> &nbsp; </td>
 
18181
<td valign="middle" align="left"> &nbsp; </td>
 
18182
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18183
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18184
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18185
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18186
</tr></table>
 
18187
<a name="fl_005fyinyang-1"></a>
 
18188
<h3 class="subsection">7.4.14 fl_yinyang</h3>
 
18189
<a name="index-fl_005fyinyang"></a>
 
18190
 
 
18191
<p>A floor that lets move just actors assigned to one player. A basic floor color
 
18192
of dark gray corresponds to &lsquo;<samp>YIN</samp>&rsquo; and lets accelerate just actors that
 
18193
are controlled by this first player. White colored yinyang floors correspond
 
18194
to &lsquo;<samp>YANG</samp>&rsquo; and let accelerate just actors controlled by this second player.
 
18195
</p>
 
18196
<p>The floor image with 4 rivets in the corners shows an additional yinyang symbol
 
18197
to visualize that not the color of the actor is essential but the controlling
 
18198
player. In large areas of this floor this symbol is disturbing and it can be
 
18199
switched off by the attribute &lsquo;<samp>invisible</samp>&rsquo;.
 
18200
</p>
 
18201
<dl compact="compact">
 
18202
<dt> <b>Attributes:</b></dt>
 
18203
<dd><dl compact="compact">
 
18204
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>YIN</code>, <code>YANG</code>; &nbsp;&nbsp;<i>default</i>: <code>YIN</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
18205
<dt> <b>invisible</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
18206
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 2.0 &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
18207
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: 5.2 &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
18208
<dt> <b>burnable</b>, &nbsp;&nbsp;<i>values</i>: boolean; &nbsp;&nbsp;<i>default</i>: false &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
18209
</dl>
 
18210
 
 
18211
</dd>
 
18212
<dt> <b>Variants:</b></dt>
 
18213
<dd><dl compact="compact">
 
18214
<dt> <img src="images/fl_yinyang_yin.png" alt="images/fl_yinyang_yin"><p> <b>fl_yinyang</b>: state = <code>YIN</code>
 
18215
</p></dt>
 
18216
<dt> <img src="images/fl_yinyang_yin.png" alt="images/fl_yinyang_yin"><p> <b>fl_yinyang_yin</b>: state = <code>YIN</code>
 
18217
</p></dt>
 
18218
<dt> <img src="images/fl_yinyang_yang.png" alt="images/fl_yinyang_yang"><p> <b>fl_yinyang_yang</b>: state = <code>YANG</code>
 
18219
</p></dt>
 
18220
</dl>
 
18221
</dd>
 
18222
</dl>
 
18223
 
 
18224
 
 
18225
<hr size="6">
 
18226
<a name="Item-Objects"></a>
 
18227
<table cellpadding="1" cellspacing="1" border="0">
 
18228
<tr><td valign="middle" align="left">[<a href="#fl_005fyinyang" title="Previous section in reading order"> &lt; </a>]</td>
 
18229
<td valign="middle" align="left">[<a href="#Item-Overview" title="Next section in reading order"> &gt; </a>]</td>
 
18230
<td valign="middle" align="left"> &nbsp; </td>
 
18231
<td valign="middle" align="left">[<a href="#Floor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18232
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
18233
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18234
<td valign="middle" align="left"> &nbsp; </td>
 
18235
<td valign="middle" align="left"> &nbsp; </td>
 
18236
<td valign="middle" align="left"> &nbsp; </td>
 
18237
<td valign="middle" align="left"> &nbsp; </td>
 
18238
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18239
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18240
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18241
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18242
</tr></table>
 
18243
<a name="Item-Objects-1"></a>
 
18244
<h1 class="chapter">8. Item Objects</h1>
 
18245
 
 
18246
<table class="menu" border="0" cellspacing="0">
 
18247
<tr><td align="left" valign="top"><a href="#Item-Overview">8.1 Item Overview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
18248
</td></tr>
 
18249
<tr><td align="left" valign="top"><a href="#Item-Attributes">8.2 Item Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
18250
</td></tr>
 
18251
<tr><td align="left" valign="top"><a href="#Liftable-Items">8.3 Liftable Items</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
18252
</td></tr>
 
18253
<tr><td align="left" valign="top"><a href="#Static-Items">8.4 Static Items</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
18254
</td></tr>
 
18255
</table>
 
18256
 
 
18257
<hr size="6">
 
18258
<a name="Item-Overview"></a>
 
18259
<table cellpadding="1" cellspacing="1" border="0">
 
18260
<tr><td valign="middle" align="left">[<a href="#Item-Objects" title="Previous section in reading order"> &lt; </a>]</td>
 
18261
<td valign="middle" align="left">[<a href="#Item-Attributes" title="Next section in reading order"> &gt; </a>]</td>
 
18262
<td valign="middle" align="left"> &nbsp; </td>
 
18263
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18264
<td valign="middle" align="left">[<a href="#Item-Objects" title="Up section"> Up </a>]</td>
 
18265
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18266
<td valign="middle" align="left"> &nbsp; </td>
 
18267
<td valign="middle" align="left"> &nbsp; </td>
 
18268
<td valign="middle" align="left"> &nbsp; </td>
 
18269
<td valign="middle" align="left"> &nbsp; </td>
 
18270
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18271
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18272
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18273
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18274
</tr></table>
 
18275
<a name="Item-Overview-1"></a>
 
18276
<h2 class="section">8.1 Item Overview</h2>
 
18277
 
 
18278
<table>
 
18279
<tr><td width="8%"><img src="images/it_bag.png" alt="images/it_bag"></td><td width="25%"><a href="#it_005fbag">it_bag</a></td><td width="8%"><img src="images/it_banana.png" alt="images/it_banana"></td><td width="25%"><a href="#it_005fbanana">it_banana</a></td><td width="9%"><img src="images/st_blocker_4.png" alt="images/st_blocker_4"></td><td width="25%"><a href="#it_005fblocker">it_blocker</a></td></tr>
 
18280
<tr><td width="8%"><img src="images/it_bomb.png" alt="images/it_bomb"></td><td width="25%"><a href="#it_005fbomb">it_bomb</a>_black</td><td width="8%"><img src="images/it_bomb_b.png" alt="images/it_bomb_b"></td><td width="25%"><a href="#it_005fbomb">it_bomb</a>_white</td><td width="9%"><img src="images/it_bottle_idle.png" alt="images/it_bottle_idle"></td><td width="25%"><a href="#it_005fbottle">it_bottle</a></td></tr>
 
18281
<tr><td width="8%"><img src="images/it_bottle_broken.png" alt="images/it_bottle_broken"></td><td width="25%"><a href="#it_005fbottle">it_bottle</a>_broken</td><td width="8%"><img src="images/st_brake.png" alt="images/st_brake"></td><td width="25%"><a href="#it_005fbrake">it_brake</a></td><td width="9%"><img src="images/it_brush.png" alt="images/it_brush"></td><td width="25%"><a href="#it_005fbrush">it_brush</a></td></tr>
 
18282
<tr><td width="8%"><img src="images/it_burnable_ash.png" alt="images/it_burnable_ash"></td><td width="25%"><a href="#it_005fburnable">it_burnable</a>_ash</td><td width="8%"><img src="images/it_burnable_burning.png" alt="images/it_burnable_burning"></td><td width="25%"><a href="#it_005fburnable">it_burnable</a>_burning</td><td width="9%"><img src="images/it_burnable_fireproof.png" alt="images/it_burnable_fireproof"></td><td width="25%"><a href="#it_005fburnable">it_burnable</a>_fireproof</td></tr>
 
18283
<tr><td width="8%"><img src="images/it_burnable_oil.png" alt="images/it_burnable_oil"></td><td width="25%"><a href="#it_005fburnable">it_burnable</a>_oil</td><td width="8%"><img src="images/it_cherry.png" alt="images/it_cherry"></td><td width="25%"><a href="#it_005fcherry">it_cherry</a></td><td width="9%"><img src="images/it_coffee.png" alt="images/it_coffee"></td><td width="25%"><a href="#it_005fcoffee">it_coffee</a></td></tr>
 
18284
<tr><td width="8%"><img src="images/it_coin_s.png" alt="images/it_coin_s"></td><td width="25%"><a href="#it_005fcoin">it_coin</a>_s</td><td width="8%"><img src="images/it_coin_m.png" alt="images/it_coin_m"></td><td width="25%"><a href="#it_005fcoin">it_coin</a>_m</td><td width="9%"><img src="images/it_coin_l.png" alt="images/it_coin_l"></td><td width="25%"><a href="#it_005fcoin">it_coin</a>_l</td></tr>
 
18285
<tr><td width="8%"><img src="images/it_crack_abyss.png" alt="images/it_crack_abyss"></td><td width="25%"><a href="#it_005fcrack">it_crack</a>_abyss</td><td width="8%"><img src="images/it_crack_water.png" alt="images/it_crack_water"></td><td width="25%"><a href="#it_005fcrack">it_crack</a>_water</td><td width="9%"><img src="images/it_cross.png" alt="images/it_cross"></td><td width="25%"><a href="#it_005fcross">it_cross</a></td></tr>
 
18286
<tr><td width="8%"><img src="images/it_death.png" alt="images/it_death"></td><td width="25%"><a href="#it_005fdeath">it_death</a></td><td width="8%"><img src="images/it_document.png" alt="images/it_document"></td><td width="25%"><a href="#it_005fdocument">it_document</a></td><td width="9%"><img src="images/it_drop.png" alt="images/it_drop"></td><td width="25%"><a href="#it_005fdrop">it_drop</a></td></tr>
 
18287
<tr><td width="8%"><img src="images/it_dynamite.png" alt="images/it_dynamite"></td><td width="25%"><a href="#it_005fdynamite">it_dynamite</a></td><td width="8%"><img src="images/it_explosion.png" alt="images/it_explosion"></td><td width="25%"><a href="#it_005fexplosion">it_explosion</a></td><td width="9%"><img src="images/it_extinguisher.png" alt="images/it_extinguisher"></td><td width="25%"><a href="#it_005fextinguisher">it_extinguisher</a></td></tr>
 
18288
<tr><td width="8%"><img src="images/it_extralife.png" alt="images/it_extralife"></td><td width="25%"><a href="#it_005fextralife">it_extralife</a></td><td width="8%"><img src="images/it_flag_black.png" alt="images/it_flag_black"></td><td width="25%"><a href="#it_005fflag">it_flag</a>_black</td><td width="9%"><img src="images/it_flag_white.png" alt="images/it_flag_white"></td><td width="25%"><a href="#it_005fflag">it_flag</a>_white</td></tr>
 
18289
<tr><td width="8%"><img src="images/it_floppy.png" alt="images/it_floppy"></td><td width="25%"><a href="#it_005ffloppy">it_floppy</a></td><td width="8%"><img src="images/it_glasses.png" alt="images/it_glasses"></td><td width="25%"><a href="#it_005fglasses">it_glasses</a></td><td width="9%"><img src="images/it_glasses_broken.png" alt="images/it_glasses_broken"></td><td width="25%"><a href="#it_005fglasses">it_glasses</a>_broken</td></tr>
 
18290
<tr><td width="8%"><img src="images/it_hammer.png" alt="images/it_hammer"></td><td width="25%"><a href="#it_005fhammer">it_hammer</a></td><td width="8%"><img src="images/it_key.png" alt="images/it_key"></td><td width="25%"><a href="#it_005fkey">it_key</a></td><td width="9%"><img src="images/it_landmine.png" alt="images/it_landmine"></td><td width="25%"><a href="#it_005flandmine">it_landmine</a></td></tr>
 
18291
<tr><td width="8%"><img src="images/it_laser.png" alt="images/it_laser"></td><td width="25%"><a href="#it_005flaserbeam">it_laserbeam</a></td><td width="8%"><img src="images/it_magicwand.png" alt="images/it_magicwand"></td><td width="25%"><a href="#it_005fmagicwand">it_magicwand</a></td><td width="9%"><img src="images/it_magnet_off.png" alt="images/it_magnet_off"></td><td width="25%"><a href="#it_005fmagnet">it_magnet</a></td></tr>
 
18292
<tr><td width="8%"><img src="images/it_meditation_bump.png" alt="images/it_meditation_bump"></td><td width="25%"><a href="#it_005fmeditation">it_meditation</a>_bump</td><td width="8%"><img src="images/it_meditation_caldera.png" alt="images/it_meditation_caldera"></td><td width="25%"><a href="#it_005fmeditation">it_meditation</a>_caldera</td><td width="9%"><img src="images/it_meditation_dent.png" alt="images/it_meditation_dent"></td><td width="25%"><a href="#it_005fmeditation">it_meditation</a>_dent</td></tr>
 
18293
<tr><td width="8%"><img src="images/it_meditation_hill.png" alt="images/it_meditation_hill"></td><td width="25%"><a href="#it_005fmeditation">it_meditation</a>_hill</td><td width="8%"><img src="images/it_meditation_hollow.png" alt="images/it_meditation_hollow"></td><td width="25%"><a href="#it_005fmeditation">it_meditation</a>_hollow</td><td width="9%"><img src="images/it_meditation_volcano.png" alt="images/it_meditation_volcano"></td><td width="25%"><a href="#it_005fmeditation">it_meditation</a>_volcano</td></tr>
 
18294
<tr><td width="8%"><img src="images/it_pencil.png" alt="images/it_pencil"></td><td width="25%"><a href="#it_005fpencil">it_pencil</a></td><td width="8%"><img src="images/it_pin.png" alt="images/it_pin"></td><td width="25%"><a href="#it_005fpin">it_pin</a></td><td width="9%"><img src="images/it_pipe_e.png" alt="images/it_pipe_e"></td><td width="25%"><a href="#it_005fpipe">it_pipe</a></td></tr>
 
18295
<tr><td width="8%"><img src="images/it_puller.png" alt="images/it_puller"></td><td width="25%"><a href="#it_005fpuller">it_puller</a></td><td width="8%"><img src="images/it_ring.png" alt="images/it_ring"></td><td width="25%"><a href="#it_005fring">it_ring</a></td><td width="9%"><img src="images/it_rubberband.png" alt="images/it_rubberband"></td><td width="25%"><a href="#it_005frubberband">it_rubberband</a></td></tr>
 
18296
<tr><td width="8%"><img src="images/it_seed.png" alt="images/it_seed"></td><td width="25%"><a href="#it_005fseed">it_seed</a></td><td width="8%"><img src="images/it_sensor.png" alt="images/it_sensor"></td><td width="25%"><a href="#it_005fsensor">it_sensor</a></td><td width="9%"><img src="images/it_sensor_exit.png" alt="images/it_sensor_exit"></td><td width="25%"><a href="#it_005fsensor">it_sensor</a>_exit</td></tr>
 
18297
<tr><td width="8%"><img src="images/it_shogun_m.png" alt="images/it_shogun_m"></td><td width="25%"><a href="#it_005fshogun">it_shogun</a></td><td width="8%"><img src="images/it_spade.png" alt="images/it_spade"></td><td width="25%"><a href="#it_005fspade">it_spade</a></td><td width="9%"><img src="images/it_spoon.png" alt="images/it_spoon"></td><td width="25%"><a href="#it_005fspoon">it_spoon</a></td></tr>
 
18298
<tr><td width="8%"><img src="images/it_springboard.png" alt="images/it_springboard"></td><td width="25%"><a href="#it_005fspringboard">it_springboard</a></td><td width="8%"><img src="images/it_spring_2.png" alt="images/it_spring_2"></td><td width="25%"><a href="#it_005fspring">it_spring</a>_drop</td><td width="9%"><img src="images/it_spring.png" alt="images/it_spring"></td><td width="25%"><a href="#it_005fspring">it_spring</a>_keep</td></tr>
 
18299
<tr><td width="8%"><img src="images/it_squashed.png" alt="images/it_squashed"></td><td width="25%"><a href="#it_005fsquashed">it_squashed</a></td><td width="8%"><img src="images/it_strip_b2.png" alt="images/it_strip_b2"></td><td width="25%"><a href="#it_005fstrip">it_strip</a>_ew</td><td width="9%"><img src="images/it_surprise.png" alt="images/it_surprise"></td><td width="25%"><a href="#it_005fsurprise">it_surprise</a></td></tr>
 
18300
<tr><td width="8%"><img src="images/it_sword.png" alt="images/it_sword"></td><td width="25%"><a href="#it_005fsword">it_sword</a></td><td width="8%"><img src="images/it_trap.png" alt="images/it_trap"></td><td width="25%"><a href="#it_005ftrap">it_trap</a></td><td width="9%"><img src="images/it_trigger.png" alt="images/it_trigger"></td><td width="25%"><a href="#it_005ftrigger">it_trigger</a></td></tr>
 
18301
<tr><td width="8%"><img src="images/it_umbrella.png" alt="images/it_umbrella"></td><td width="25%"><a href="#it_005fumbrella">it_umbrella</a></td><td width="8%"><img src="images/it_vortex.png" alt="images/it_vortex"></td><td width="25%"><a href="#it_005fvortex">it_vortex</a></td><td width="9%"><img src="images/it_weight.png" alt="images/it_weight"></td><td width="25%"><a href="#it_005fweight">it_weight</a></td></tr>
 
18302
<tr><td width="8%"><img src="images/it_wormhole.png" alt="images/it_wormhole"></td><td width="25%"><a href="#it_005fwormhole">it_wormhole</a></td><td width="8%"><img src="images/it_wrench.png" alt="images/it_wrench"></td><td width="25%"><a href="#it_005fwrench">it_wrench</a></td><td width="9%"><img src="images/it_yinyang.png" alt="images/it_yinyang"></td><td width="25%"><a href="#it_005fyinyang">it_yinyang</a></td></tr>
 
18303
</table>
 
18304
 
 
18305
<hr size="6">
 
18306
<a name="Item-Attributes"></a>
 
18307
<table cellpadding="1" cellspacing="1" border="0">
 
18308
<tr><td valign="middle" align="left">[<a href="#Item-Overview" title="Previous section in reading order"> &lt; </a>]</td>
 
18309
<td valign="middle" align="left">[<a href="#fireproof" title="Next section in reading order"> &gt; </a>]</td>
 
18310
<td valign="middle" align="left"> &nbsp; </td>
 
18311
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18312
<td valign="middle" align="left">[<a href="#Item-Objects" title="Up section"> Up </a>]</td>
 
18313
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18314
<td valign="middle" align="left"> &nbsp; </td>
 
18315
<td valign="middle" align="left"> &nbsp; </td>
 
18316
<td valign="middle" align="left"> &nbsp; </td>
 
18317
<td valign="middle" align="left"> &nbsp; </td>
 
18318
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18319
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18320
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18321
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18322
</tr></table>
 
18323
<a name="Item-Attributes-1"></a>
 
18324
<h2 class="section">8.2 Item Attributes</h2>
 
18325
 
 
18326
<table class="menu" border="0" cellspacing="0">
 
18327
<tr><td align="left" valign="top"><a href="#fireproof">8.2.1 fireproof</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         -
 
18328
</td></tr>
 
18329
<tr><td align="left" valign="top"><a href="#freezable">8.2.2 freezable</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Affinity to be frozen in ice
 
18330
</td></tr>
 
18331
<tr><td align="left" valign="top"><a href="#liftable">8.2.3 liftable</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Allowance for actors to pick up
 
18332
</td></tr>
 
18333
<tr><td align="left" valign="top"><a href="#portable">8.2.4 portable</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Ability to be added to the inventory
 
18334
</td></tr>
 
18335
</table>
 
18336
 
 
18337
 
 
18338
<hr size="6">
 
18339
<a name="fireproof"></a>
 
18340
<table cellpadding="1" cellspacing="1" border="0">
 
18341
<tr><td valign="middle" align="left">[<a href="#Item-Attributes" title="Previous section in reading order"> &lt; </a>]</td>
 
18342
<td valign="middle" align="left">[<a href="#freezable" title="Next section in reading order"> &gt; </a>]</td>
 
18343
<td valign="middle" align="left"> &nbsp; </td>
 
18344
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18345
<td valign="middle" align="left">[<a href="#Item-Attributes" title="Up section"> Up </a>]</td>
 
18346
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18347
<td valign="middle" align="left"> &nbsp; </td>
 
18348
<td valign="middle" align="left"> &nbsp; </td>
 
18349
<td valign="middle" align="left"> &nbsp; </td>
 
18350
<td valign="middle" align="left"> &nbsp; </td>
 
18351
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18352
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18353
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18354
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18355
</tr></table>
 
18356
<a name="fireproof-1"></a>
 
18357
<h3 class="subsection">8.2.1 fireproof</h3>
 
18358
 
 
18359
 
 
18360
<dl compact="compact">
 
18361
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
18362
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
18363
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
18364
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
18365
</dl>
 
18366
 
 
18367
 
 
18368
<hr size="6">
 
18369
<a name="freezable"></a>
 
18370
<table cellpadding="1" cellspacing="1" border="0">
 
18371
<tr><td valign="middle" align="left">[<a href="#fireproof" title="Previous section in reading order"> &lt; </a>]</td>
 
18372
<td valign="middle" align="left">[<a href="#liftable" title="Next section in reading order"> &gt; </a>]</td>
 
18373
<td valign="middle" align="left"> &nbsp; </td>
 
18374
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18375
<td valign="middle" align="left">[<a href="#Item-Attributes" title="Up section"> Up </a>]</td>
 
18376
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18377
<td valign="middle" align="left"> &nbsp; </td>
 
18378
<td valign="middle" align="left"> &nbsp; </td>
 
18379
<td valign="middle" align="left"> &nbsp; </td>
 
18380
<td valign="middle" align="left"> &nbsp; </td>
 
18381
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18382
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18383
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18384
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18385
</tr></table>
 
18386
<a name="freezable-1"></a>
 
18387
<h3 class="subsection">8.2.2 freezable</h3>
 
18388
 
 
18389
<p>Describes the affinity of an item to be frozen by an <a href="#st_005fice">st_ice</a>. All
 
18390
<a href="#portable">portable</a> items a freezable. But some otherwise static items may be
 
18391
freezable, too.
 
18392
</p>
 
18393
<dl compact="compact">
 
18394
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
18395
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
18396
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
18397
<dt> <b>Access:</b> &nbsp;&nbsp;read only</dt>
 
18398
</dl>
 
18399
 
 
18400
 
 
18401
<hr size="6">
 
18402
<a name="liftable"></a>
 
18403
<table cellpadding="1" cellspacing="1" border="0">
 
18404
<tr><td valign="middle" align="left">[<a href="#freezable" title="Previous section in reading order"> &lt; </a>]</td>
 
18405
<td valign="middle" align="left">[<a href="#portable" title="Next section in reading order"> &gt; </a>]</td>
 
18406
<td valign="middle" align="left"> &nbsp; </td>
 
18407
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18408
<td valign="middle" align="left">[<a href="#Item-Attributes" title="Up section"> Up </a>]</td>
 
18409
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18410
<td valign="middle" align="left"> &nbsp; </td>
 
18411
<td valign="middle" align="left"> &nbsp; </td>
 
18412
<td valign="middle" align="left"> &nbsp; </td>
 
18413
<td valign="middle" align="left"> &nbsp; </td>
 
18414
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18415
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18416
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18417
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18418
</tr></table>
 
18419
<a name="liftable-1"></a>
 
18420
<h3 class="subsection">8.2.3 liftable</h3>
 
18421
 
 
18422
<p>Describes the ability of <a href="#Actors">Actors</a> to pick up an item from a floor. Note
 
18423
that some items can be added to the player&rsquo;s inventory and can be dropped onto
 
18424
a floor but nevertheless can not be picked up later on.
 
18425
</p>
 
18426
<dl compact="compact">
 
18427
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
18428
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
18429
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
18430
<dt> <b>Access:</b> &nbsp;&nbsp;read only</dt>
 
18431
</dl>
 
18432
 
 
18433
 
 
18434
<hr size="6">
 
18435
<a name="portable"></a>
 
18436
<table cellpadding="1" cellspacing="1" border="0">
 
18437
<tr><td valign="middle" align="left">[<a href="#liftable" title="Previous section in reading order"> &lt; </a>]</td>
 
18438
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Next section in reading order"> &gt; </a>]</td>
 
18439
<td valign="middle" align="left"> &nbsp; </td>
 
18440
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18441
<td valign="middle" align="left">[<a href="#Item-Attributes" title="Up section"> Up </a>]</td>
 
18442
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18443
<td valign="middle" align="left"> &nbsp; </td>
 
18444
<td valign="middle" align="left"> &nbsp; </td>
 
18445
<td valign="middle" align="left"> &nbsp; </td>
 
18446
<td valign="middle" align="left"> &nbsp; </td>
 
18447
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18448
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18449
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18450
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18451
</tr></table>
 
18452
<a name="portable-1"></a>
 
18453
<h3 class="subsection">8.2.4 portable</h3>
 
18454
 
 
18455
<p>Determines whether an item can be added to the player&rsquo;s inventory. All
 
18456
<a href="#liftable">liftable</a> items are portable. Portable items that are not liftable can
 
18457
either be added to the inventory by means of the world <a href="#add">add</a> method or
 
18458
by an actor hitting a variant of <a href="#st_005fdispenser">st_dispenser</a>.
 
18459
</p>
 
18460
<dl compact="compact">
 
18461
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
18462
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
18463
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
18464
<dt> <b>Access:</b> &nbsp;&nbsp;read only</dt>
 
18465
</dl>
 
18466
 
 
18467
 
 
18468
<hr size="6">
 
18469
<a name="Liftable-Items"></a>
 
18470
<table cellpadding="1" cellspacing="1" border="0">
 
18471
<tr><td valign="middle" align="left">[<a href="#portable" title="Previous section in reading order"> &lt; </a>]</td>
 
18472
<td valign="middle" align="left">[<a href="#it_005fbag" title="Next section in reading order"> &gt; </a>]</td>
 
18473
<td valign="middle" align="left"> &nbsp; </td>
 
18474
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18475
<td valign="middle" align="left">[<a href="#Item-Objects" title="Up section"> Up </a>]</td>
 
18476
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18477
<td valign="middle" align="left"> &nbsp; </td>
 
18478
<td valign="middle" align="left"> &nbsp; </td>
 
18479
<td valign="middle" align="left"> &nbsp; </td>
 
18480
<td valign="middle" align="left"> &nbsp; </td>
 
18481
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18482
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18483
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18484
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18485
</tr></table>
 
18486
<a name="Liftable-Items-1"></a>
 
18487
<h2 class="section">8.3 Liftable Items</h2>
 
18488
 
 
18489
<table class="menu" border="0" cellspacing="0">
 
18490
<tr><td align="left" valign="top"><a href="#it_005fbag">8.3.1 it_bag</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Portable Item Container
 
18491
</td></tr>
 
18492
<tr><td align="left" valign="top"><a href="#it_005fbanana">8.3.2 it_banana</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Transformable Banana
 
18493
</td></tr>
 
18494
<tr><td align="left" valign="top"><a href="#it_005fbottle">8.3.3 it_bottle</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Bottle of Booze
 
18495
</td></tr>
 
18496
<tr><td align="left" valign="top"><a href="#it_005fbrake">8.3.4 it_brake</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Portable Stone Brake
 
18497
</td></tr>
 
18498
<tr><td align="left" valign="top"><a href="#it_005fbrush">8.3.5 it_brush</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Brush for Painting and Sweeping
 
18499
</td></tr>
 
18500
<tr><td align="left" valign="top"><a href="#it_005fcherry">8.3.6 it_cherry</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Source of Invisibility
 
18501
</td></tr>
 
18502
<tr><td align="left" valign="top"><a href="#it_005fcoffee">8.3.7 it_coffee</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Cup of Coffee
 
18503
</td></tr>
 
18504
<tr><td align="left" valign="top"><a href="#it_005fcoin">8.3.8 it_coin</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Enigma&rsquo;s currency
 
18505
</td></tr>
 
18506
<tr><td align="left" valign="top"><a href="#it_005fdocument">8.3.9 it_document</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Readable Text Document
 
18507
</td></tr>
 
18508
<tr><td align="left" valign="top"><a href="#it_005fdrop">8.3.10 it_drop</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Magic Transformation Elixir
 
18509
</td></tr>
 
18510
<tr><td align="left" valign="top"><a href="#it_005fdynamite">8.3.11 it_dynamite</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Exploder
 
18511
</td></tr>
 
18512
<tr><td align="left" valign="top"><a href="#it_005fextinguisher">8.3.12 it_extinguisher</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    Fire Extinguisher
 
18513
</td></tr>
 
18514
<tr><td align="left" valign="top"><a href="#it_005fextralife">8.3.13 it_extralife</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Another Life or Glasses
 
18515
</td></tr>
 
18516
<tr><td align="left" valign="top"><a href="#it_005fflag">8.3.14 it_flag</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Respawn Position Marker
 
18517
</td></tr>
 
18518
<tr><td align="left" valign="top"><a href="#it_005ffloppy">8.3.15 it_floppy</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Lock opening uncoded Floppy
 
18519
</td></tr>
 
18520
<tr><td align="left" valign="top"><a href="#it_005fglasses">8.3.16 it_glasses</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Glasses to spot certain objects
 
18521
</td></tr>
 
18522
<tr><td align="left" valign="top"><a href="#it_005fhammer">8.3.17 it_hammer</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Stone breaking Hammer
 
18523
</td></tr>
 
18524
<tr><td align="left" valign="top"><a href="#it_005fkey">8.3.18 it_key</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Lock opening coded Key
 
18525
</td></tr>
 
18526
<tr><td align="left" valign="top"><a href="#it_005fmagicwand">8.3.19 it_magicwand</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Wizards Tools
 
18527
</td></tr>
 
18528
<tr><td align="left" valign="top"><a href="#it_005fpencil">8.3.20 it_pencil</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Pencil to mark Objects
 
18529
</td></tr>
 
18530
<tr><td align="left" valign="top"><a href="#it_005fpin">8.3.21 it_pin</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Friction increasing crampon
 
18531
</td></tr>
 
18532
<tr><td align="left" valign="top"><a href="#it_005fpipe">8.3.22 it_pipe</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Pipe for Transmissions
 
18533
</td></tr>
 
18534
<tr><td align="left" valign="top"><a href="#it_005fpuller">8.3.23 it_puller</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Stone pulling item
 
18535
</td></tr>
 
18536
<tr><td align="left" valign="top"><a href="#it_005fring">8.3.24 it_ring</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Position Exchange Tool
 
18537
</td></tr>
 
18538
<tr><td align="left" valign="top"><a href="#it_005frubberband">8.3.25 it_rubberband</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Unconnected Rubberband
 
18539
</td></tr>
 
18540
<tr><td align="left" valign="top"><a href="#it_005fseed">8.3.26 it_seed</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Seeds for Wood, Volcano Stones
 
18541
</td></tr>
 
18542
<tr><td align="left" valign="top"><a href="#it_005fspade">8.3.27 it_spade</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Shuffle for Meditation flattening
 
18543
</td></tr>
 
18544
<tr><td align="left" valign="top"><a href="#it_005fspoon">8.3.28 it_spoon</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Controlled Suicide Tool
 
18545
</td></tr>
 
18546
<tr><td align="left" valign="top"><a href="#it_005fspring">8.3.29 it_spring</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Portable Spring
 
18547
</td></tr>
 
18548
<tr><td align="left" valign="top"><a href="#it_005fsurprise">8.3.30 it_surprise</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Random Transforming item
 
18549
</td></tr>
 
18550
<tr><td align="left" valign="top"><a href="#it_005fsword">8.3.31 it_sword</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Knight defeating Sword
 
18551
</td></tr>
 
18552
<tr><td align="left" valign="top"><a href="#it_005fumbrella">8.3.32 it_umbrella</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Death Protection Item
 
18553
</td></tr>
 
18554
<tr><td align="left" valign="top"><a href="#it_005fweight">8.3.33 it_weight</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Portable Mass
 
18555
</td></tr>
 
18556
<tr><td align="left" valign="top"><a href="#it_005fwrench">8.3.34 it_wrench</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Tool for mechanical Stones
 
18557
</td></tr>
 
18558
<tr><td align="left" valign="top"><a href="#it_005fyinyang">8.3.35 it_yinyang</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Player toggling Switch
 
18559
</td></tr>
 
18560
</table>
 
18561
 
 
18562
<hr size="6">
 
18563
<a name="it_005fbag"></a>
 
18564
<table cellpadding="1" cellspacing="1" border="0">
 
18565
<tr><td valign="middle" align="left">[<a href="#Liftable-Items" title="Previous section in reading order"> &lt; </a>]</td>
 
18566
<td valign="middle" align="left">[<a href="#it_005fbanana" title="Next section in reading order"> &gt; </a>]</td>
 
18567
<td valign="middle" align="left"> &nbsp; </td>
 
18568
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18569
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
18570
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18571
<td valign="middle" align="left"> &nbsp; </td>
 
18572
<td valign="middle" align="left"> &nbsp; </td>
 
18573
<td valign="middle" align="left"> &nbsp; </td>
 
18574
<td valign="middle" align="left"> &nbsp; </td>
 
18575
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18576
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18577
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18578
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18579
</tr></table>
 
18580
<a name="it_005fbag-1"></a>
 
18581
<h3 class="subsection">8.3.1 it_bag</h3>
 
18582
<a name="index-it_005fbag"></a>
 
18583
 
 
18584
<p>A bag is a portable container for other objects. The player can fill it with
 
18585
up to 13 other items, including other empty or filled bags.
 
18586
</p>
 
18587
<p>The bag allows a player to carry in total more than 13 items in his inventory.
 
18588
Nevertheless most items carried in a bag can not directly be applied. Just the
 
18589
<a href="#it_005fweight">it_weight</a> does apply its mass even when carried in a bag. On the other
 
18590
hand bags offer the user the possibility to pick up and drop items that can not
 
18591
be dropped otherwise as they would be activated. E.g. an <a href="#it_005fcherry">it_cherry</a> can
 
18592
not be dropped without application, but if it is contained in a bag the bag
 
18593
can be dropped and the cherry can be extracted later on. A bag is useful to
 
18594
transfer multiple items via <a href="#st_005fmail">st_mail</a>, too.
 
18595
</p>
 
18596
<p>As long as an <code>it_bag</code> is at the first place in the inventory, new items
 
18597
are put into the bag instead of the inventory, until the bag is full (13 items).
 
18598
The player can drop an <code>it_bag</code> anytime.  When picked up again, items from
 
18599
the bag are put back into the inventory (until it is full).
 
18600
</p>
 
18601
<p>The quite complex rules of pick up in detail:
 
18602
</p>
 
18603
<ol>
 
18604
<li>
 
18605
Inventory and bag are limited concerning pickups to 13 items.
 
18606
 
 
18607
</li><li>
 
18608
Both are generally LIFO (last item picked up is first item out), but the
 
18609
inventory content can be rotated.
 
18610
 
 
18611
</li><li>
 
18612
If you pick up any item besides a bag and your first inventory item is not a bag
 
18613
the item is added to the inventory.
 
18614
 
 
18615
</li><li>
 
18616
If you pick up any item besides a non-empty bag and your first inventory item is
 
18617
a bag the item is added to the first inventory bag (this includes non-empty bags
 
18618
being added into first inventory bags!)
 
18619
 
 
18620
</li><li>
 
18621
You empty a bag by dropping it and picking it up again with any item at the
 
18622
first inventory position but a bag. As many items as possible are taken from the
 
18623
bag and added to the inventory.
 
18624
 
 
18625
</li><li>
 
18626
Empty bags are never put into other bags (this would cause unresolvable
 
18627
recursion problems). They will only be added as items directly to the inventory.
 
18628
 
 
18629
</li><li>
 
18630
If the &quot;picked up&quot; bag can not empty its contents to the inventory or a bag at
 
18631
the first inventory position is full the bag is not picked up and keeps the
 
18632
remaining items.
 
18633
 
 
18634
</li></ol>
 
18635
 
 
18636
<p>You can add items directly to a bag by usage of the world <a href="#add">add</a> method.
 
18637
</p>
 
18638
<p>Bags are used by <a href="#st_005fthief">st_thief</a> and <a href="#fl_005fthief">fl_thief</a> to carry their stolen
 
18639
items. When the thieves are captured by <a href="#st_005fchess">st_chess</a> the bag remains on the
 
18640
grid position filled up with the stolen items.
 
18641
</p>
 
18642
<dl compact="compact">
 
18643
<dt> <b>Attributes:</b></dt>
 
18644
<dd><dl compact="compact">
 
18645
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
18646
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
18647
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
18648
<dt> <b>mass</b> &nbsp;&nbsp;<i>values</i>: positive float number; &nbsp;&nbsp;<i>default</i>: <code>0.0</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code></dt>
 
18649
<dd><p>Sum of masses of all contained items. Currently just the <a href="#it_005fweight">it_weight</a> has a
 
18650
mass.
 
18651
</p></dd>
 
18652
</dl>
 
18653
 
 
18654
</dd>
 
18655
<dt> <b>Messages:</b> none</dt>
 
18656
<dt> <b>Variants:</b></dt>
 
18657
<dd><dl compact="compact">
 
18658
<dt> <img src="images/it_bag.png" alt="images/it_bag"><p> <b>it_bag</b>
 
18659
</p></dt>
 
18660
</dl>
 
18661
</dd>
 
18662
</dl>
 
18663
 
 
18664
<hr size="6">
 
18665
<a name="it_005fbanana"></a>
 
18666
<table cellpadding="1" cellspacing="1" border="0">
 
18667
<tr><td valign="middle" align="left">[<a href="#it_005fbag" title="Previous section in reading order"> &lt; </a>]</td>
 
18668
<td valign="middle" align="left">[<a href="#it_005fbottle" title="Next section in reading order"> &gt; </a>]</td>
 
18669
<td valign="middle" align="left"> &nbsp; </td>
 
18670
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18671
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
18672
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18673
<td valign="middle" align="left"> &nbsp; </td>
 
18674
<td valign="middle" align="left"> &nbsp; </td>
 
18675
<td valign="middle" align="left"> &nbsp; </td>
 
18676
<td valign="middle" align="left"> &nbsp; </td>
 
18677
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18678
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18679
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18680
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18681
</tr></table>
 
18682
<a name="it_005fbanana-1"></a>
 
18683
<h3 class="subsection">8.3.2 it_banana</h3>
 
18684
<a name="index-it_005fbanana"></a>
 
18685
 
 
18686
<p>A portable item without direct usage. But it transforms into an <a href="#it_005fcherry">it_cherry</a>
 
18687
when hit by a laser beam.
 
18688
</p>
 
18689
<p>When a stone is pushed over it an <a href="#it_005fsquashed">it_squashed</a> remains as remnants.
 
18690
</p>
 
18691
<dl compact="compact">
 
18692
<dt> <b>Attributes:</b></dt>
 
18693
<dd><dl compact="compact">
 
18694
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
18695
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
18696
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
18697
</dl>
 
18698
</dd>
 
18699
<dt> <b>Messages:</b> none</dt>
 
18700
<dt> <b>Variants:</b></dt>
 
18701
<dd><dl compact="compact">
 
18702
<dt> <img src="images/it_banana.png" alt="images/it_banana"><p> <b>it_banana</b>
 
18703
</p></dt>
 
18704
</dl>
 
18705
</dd>
 
18706
</dl>
 
18707
 
 
18708
<hr size="6">
 
18709
<a name="it_005fbottle"></a>
 
18710
<table cellpadding="1" cellspacing="1" border="0">
 
18711
<tr><td valign="middle" align="left">[<a href="#it_005fbanana" title="Previous section in reading order"> &lt; </a>]</td>
 
18712
<td valign="middle" align="left">[<a href="#it_005fbrake" title="Next section in reading order"> &gt; </a>]</td>
 
18713
<td valign="middle" align="left"> &nbsp; </td>
 
18714
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18715
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
18716
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18717
<td valign="middle" align="left"> &nbsp; </td>
 
18718
<td valign="middle" align="left"> &nbsp; </td>
 
18719
<td valign="middle" align="left"> &nbsp; </td>
 
18720
<td valign="middle" align="left"> &nbsp; </td>
 
18721
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18722
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18723
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18724
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18725
</tr></table>
 
18726
<a name="it_005fbottle-1"></a>
 
18727
<h3 class="subsection">8.3.3 it_bottle</h3>
 
18728
<a name="index-it_005fbottle"></a>
 
18729
 
 
18730
<p>A bottle can be filled either with booze or with a message. When a bottle
 
18731
breaks the remnants are lethal sherds.
 
18732
</p>
 
18733
<p>A bottle filled with booze makes any ball like actor that activates it drunken.
 
18734
The control of actor gets difficult as it will likely no longer move straight
 
18735
into the intended direction. Fortunately the period of drunkenness lasts just
 
18736
5 seconds per default. But you can set this time by the attribute
 
18737
&lsquo;<samp>interval</samp>&rsquo; to other values. The bottle will be dropped on activation.
 
18738
Activation of several bottles in sequence will lead to longer periods of
 
18739
drunkenness as the intervals will sum up.
 
18740
</p>
 
18741
<p>Alternatively you can fill the bottle with a message by the attribute
 
18742
&lsquo;<samp>text</samp>&rsquo;. Like <a href="#it_005fdocument">it_document</a> the message gets displayed on activation.
 
18743
Of course the actor does not get drunken in this case.
 
18744
</p>
 
18745
<p>When a stone gets pushed over a bottle it will break to sherds. These
 
18746
remnants are lethal to <a href="#ac_005fmarble">ac_marble</a> and <a href="#ac_005fpearl">ac_pearl</a> when entering the
 
18747
affected grid. But of course they can jump over the broken bottle or pass it
 
18748
while being protected by an activated <a href="#it_005fumbrella">it_umbrella</a>. Unlike <a href="#it_005fdeath">it_death</a>
 
18749
the broken bottle can be removed by an actor by activation of an <a href="#it_005fbrush">it_brush</a>
 
18750
while jumping over it, or passing it with protection. But a broken bottle can
 
18751
not be picked up and is not portable.
 
18752
</p>
 
18753
<dl compact="compact">
 
18754
<dt> <b>Attributes:</b></dt>
 
18755
<dd><dl compact="compact">
 
18756
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>IDLE</code>, <code>BROKEN</code>; &nbsp;&nbsp;<i>default</i>: <code>BROKEN</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
18757
<dt> <b>interval</b> &nbsp;&nbsp;<i>values</i>: positive number; &nbsp;&nbsp;<i>default</i>: <code>5.0</code></dt>
 
18758
<dd><p>Number of seconds that the actor becomes drunken.
 
18759
</p></dd>
 
18760
<dt> <b>text</b>, &nbsp;&nbsp;<i>values</i>: string;</dt>
 
18761
<dd><p>Either the text to be displayed or just a key word for identification on
 
18762
<a href="#Internationalization-_0028i18n_0029">Internationalization (i18n)</a>.
 
18763
</p></dd>
 
18764
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
18765
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
18766
<dd><p>Just an &lsquo;<samp>IDLE</samp>&rsquo; bottle is liftable, a &lsquo;<samp>BROKEN</samp>&rsquo; one is not liftable.
 
18767
</p></dd>
 
18768
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
18769
<dd><p>Just an &lsquo;<samp>IDLE</samp>&rsquo; bottle is portable, a &lsquo;<samp>BROKEN</samp>&rsquo; one is not portable.
 
18770
</p></dd>
 
18771
</dl>
 
18772
 
 
18773
</dd>
 
18774
<dt> <b>Messages:</b> none</dt>
 
18775
<dt> <b>Variants:</b></dt>
 
18776
<dd><dl compact="compact">
 
18777
<dt> <img src="images/it_bottle_idle.png" alt="images/it_bottle_idle"><p> <b>it_bottle</b>: state = <code>IDLE</code>
 
18778
</p></dt>
 
18779
<dt> <img src="images/it_bottle_idle.png" alt="images/it_bottle_idle"><p> <b>it_bottle_idle</b>: state = <code>IDLE</code>
 
18780
</p></dt>
 
18781
<dt> <img src="images/it_bottle_broken.png" alt="images/it_bottle_broken"><p> <b>it_bottle_broken</b>: state = <code>BROKEN</code>
 
18782
</p></dt>
 
18783
</dl>
 
18784
 
 
18785
</dd>
 
18786
</dl>
 
18787
 
 
18788
<hr size="6">
 
18789
<a name="it_005fbrake"></a>
 
18790
<table cellpadding="1" cellspacing="1" border="0">
 
18791
<tr><td valign="middle" align="left">[<a href="#it_005fbottle" title="Previous section in reading order"> &lt; </a>]</td>
 
18792
<td valign="middle" align="left">[<a href="#it_005fbrush" title="Next section in reading order"> &gt; </a>]</td>
 
18793
<td valign="middle" align="left"> &nbsp; </td>
 
18794
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18795
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
18796
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18797
<td valign="middle" align="left"> &nbsp; </td>
 
18798
<td valign="middle" align="left"> &nbsp; </td>
 
18799
<td valign="middle" align="left"> &nbsp; </td>
 
18800
<td valign="middle" align="left"> &nbsp; </td>
 
18801
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18802
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18803
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18804
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18805
</tr></table>
 
18806
<a name="it_005fbrake-1"></a>
 
18807
<h3 class="subsection">8.3.4 it_brake</h3>
 
18808
<a name="index-it_005fbrake"></a>
 
18809
 
 
18810
<p>The brake is a stone that can be picked up as an item by actors. The
 
18811
<a href="#st_005fbrake">st_brake</a> can be used to stop a running <a href="#st_005fboulder">st_boulder</a> or a
 
18812
<a href="#st_005flightpassenger">st_lightpassenger</a>, what likely has given this object its name.
 
18813
</p>
 
18814
<p>When an actor passes below the brake stone it will pick up the object like
 
18815
other items. The brake will be added as a brake item to its inventory.
 
18816
Unlike other items the brake can be dropped even on grids that are already
 
18817
occupied by an item. But you can not drop the brake beneath another stone like
 
18818
a <a href="#it_005fseed">it_seed</a>.
 
18819
</p>
 
18820
<p>On dropping the brake item it transforms immediately to an <a href="#st_005fbrake">st_brake</a> without
 
18821
killing an item positioned on the grid. The brake stone will press an
 
18822
<a href="#it_005ftrigger">it_trigger</a> beneath, what makes the brake item a portable trigger key.
 
18823
</p>
 
18824
<p>The item itself will never exist on the world grid. It exists just as part of
 
18825
the player inventory or item containers like <a href="#it_005fbag">it_bag</a>.
 
18826
</p>
 
18827
<p>Due to the <a href="#Snapshot-Principle">Snapshot Principle</a> you should never instantiate this item. Do
 
18828
set an <a href="#st_005fbrake">st_brake</a> to the world grid positions instead. This item is listed
 
18829
for your understanding what happens to a picked up brake and for identifying
 
18830
an <a href="#Object-Kind">Object Kind</a> &lsquo;<samp>it_brake</samp>&rsquo; in an inventory or a container.
 
18831
</p>
 
18832
<dl compact="compact">
 
18833
<dt> <b>Attributes:</b></dt>
 
18834
<dd><dl compact="compact">
 
18835
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
18836
<dd><p>Even though being freezable a brake will never freeze as an item, as it is
 
18837
always converted to an <a href="#st_005fbrake">st_brake</a> on being dropped or placed onto a floor.
 
18838
</p></dd>
 
18839
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
18840
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
18841
</dl>
 
18842
</dd>
 
18843
<dt> <b>Messages:</b> none</dt>
 
18844
<dt> <b>Variants:</b></dt>
 
18845
<dd><dl compact="compact">
 
18846
<dt> <img src="images/st_brake.png" alt="images/st_brake"><p> <b>it_brake</b>
 
18847
</p></dt>
 
18848
</dl>
 
18849
 
 
18850
</dd>
 
18851
</dl>
 
18852
 
 
18853
<hr size="6">
 
18854
<a name="it_005fbrush"></a>
 
18855
<table cellpadding="1" cellspacing="1" border="0">
 
18856
<tr><td valign="middle" align="left">[<a href="#it_005fbrake" title="Previous section in reading order"> &lt; </a>]</td>
 
18857
<td valign="middle" align="left">[<a href="#it_005fcherry" title="Next section in reading order"> &gt; </a>]</td>
 
18858
<td valign="middle" align="left"> &nbsp; </td>
 
18859
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18860
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
18861
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18862
<td valign="middle" align="left"> &nbsp; </td>
 
18863
<td valign="middle" align="left"> &nbsp; </td>
 
18864
<td valign="middle" align="left"> &nbsp; </td>
 
18865
<td valign="middle" align="left"> &nbsp; </td>
 
18866
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18867
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18868
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18869
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18870
</tr></table>
 
18871
<a name="it_005fbrush-1"></a>
 
18872
<h3 class="subsection">8.3.5 it_brush</h3>
 
18873
<a name="index-it_005fbrush"></a>
 
18874
 
 
18875
<p>A brush that is useful to paint some stones and sweep away some otherwise
 
18876
static items.
 
18877
</p>
 
18878
<p>Stones must be hit with the brush revealed as the first item in the inventory.
 
18879
To sweep away nasty items the actor must activate the brush while being on the
 
18880
grid, or while jumping or flying over it:
 
18881
</p>
 
18882
<ul>
 
18883
<li> <a href="#st_005factorimpulse">st_actorimpulse</a>, invisible - makes invisible variant visible
 
18884
</li><li> <a href="#st_005fblur">st_blur</a>, magic -  transforms to <a href="#st_005fpassage">st_passage</a>
 
18885
</li><li> <a href="#st_005fflat">st_flat</a>, burnable - transforms to <a href="#st_005fflat">st_flat</a>
 
18886
</li><li> <a href="#st_005fflat">st_flat</a>, moveburnable - transforms to <a href="#st_005fflat">st_flat</a>_movable
 
18887
</li><li> <a href="#st_005fghost">st_ghost</a>, purplemarble - transforms to <a href="#st_005fpurplemarble">st_purplemarble</a>
 
18888
</li><li> <a href="#st_005fghost">st_ghost</a>, break - transforms to <a href="#st_005fbreak">st_break</a>_oxydc
 
18889
</li><li> <a href="#st_005flightpassenger">st_lightpassenger</a>, off - reactivates to state &lsquo;<samp>ON</samp>&rsquo;
 
18890
</li><li> <a href="#it_005fbottle">it_bottle</a>, broken - remove from floor
 
18891
</li><li> <a href="#it_005fburnable">it_burnable</a>, ash - remove from floor
 
18892
</li><li> <a href="#it_005fburnable">it_burnable</a>, fireproof - remove from floor
 
18893
</li><li> <a href="#it_005fcross">it_cross</a> - remove from floor
 
18894
</li><li> <a href="#it_005fsquashed">it_squashed</a> - remove from floor
 
18895
</li></ul>
 
18896
 
 
18897
<p>The brush is sensitive to laser light an dissolves with an <a href="#it_005fexplosion">it_explosion</a>_nil
 
18898
leaving no remnants when being hit by light.
 
18899
</p>
 
18900
<dl compact="compact">
 
18901
<dt> <b>Attributes:</b></dt>
 
18902
<dd><dl compact="compact">
 
18903
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
18904
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
18905
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
18906
</dl>
 
18907
</dd>
 
18908
<dt> <b>Messages:</b> none</dt>
 
18909
<dt> <b>Variants:</b></dt>
 
18910
<dd><dl compact="compact">
 
18911
<dt> <img src="images/it_brush.png" alt="images/it_brush"><p> <b>it_brush</b>
 
18912
</p></dt>
 
18913
</dl>
 
18914
 
 
18915
</dd>
 
18916
</dl>
 
18917
 
 
18918
<hr size="6">
 
18919
<a name="it_005fcherry"></a>
 
18920
<table cellpadding="1" cellspacing="1" border="0">
 
18921
<tr><td valign="middle" align="left">[<a href="#it_005fbrush" title="Previous section in reading order"> &lt; </a>]</td>
 
18922
<td valign="middle" align="left">[<a href="#it_005fcoffee" title="Next section in reading order"> &gt; </a>]</td>
 
18923
<td valign="middle" align="left"> &nbsp; </td>
 
18924
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18925
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
18926
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18927
<td valign="middle" align="left"> &nbsp; </td>
 
18928
<td valign="middle" align="left"> &nbsp; </td>
 
18929
<td valign="middle" align="left"> &nbsp; </td>
 
18930
<td valign="middle" align="left"> &nbsp; </td>
 
18931
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18932
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18933
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18934
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18935
</tr></table>
 
18936
<a name="it_005fcherry-1"></a>
 
18937
<h3 class="subsection">8.3.6 it_cherry</h3>
 
18938
<a name="index-it_005fcherry"></a>
 
18939
 
 
18940
<p>A magic item that makes the activating actor for 8 seconds invisible. But not
 
18941
all actors become invisible. Just the ball like actors <a href="#ac_005fmarble">ac_marble</a> and
 
18942
<a href="#ac_005fpearl">ac_pearl</a> do vanish.
 
18943
</p>
 
18944
<p>An invisible actor can walk through most kinds of glass
 
18945
(see section <a href="#Transparent-Stones">Transparent Stones</a>) and as being invisible they do no longer attract
 
18946
hostile <a href="#ac_005frotor">ac_rotor</a> and <a href="#ac_005ftop">ac_top</a>.
 
18947
</p>
 
18948
<p>When several cherries are activated in sequence each does prolong the actor&rsquo;s
 
18949
time of invisibility by additional 8 seconds.
 
18950
</p>
 
18951
<p>Other actors drop the cherry as an <a href="#it_005fsquashed">it_squashed</a> on activation. Sending a
 
18952
cherry via an <a href="#st_005fmail">st_mail</a> results in an  <a href="#it_005fsquashed">it_squashed</a>, too. This
 
18953
gives you the control that a cherry added to one player&rsquo;s inventory can not be
 
18954
easily transfered to other actors assigned to the other player. Just
 
18955
<a href="#st_005fthief">st_thief</a> and <a href="#fl_005fthief">fl_thief</a> are able to steal the cherry undamaged.
 
18956
</p>
 
18957
<p>When a stone is pushed over a cherry an <a href="#it_005fsquashed">it_squashed</a> remains as remnants.
 
18958
</p>
 
18959
<dl compact="compact">
 
18960
<dt> <b>Attributes:</b></dt>
 
18961
<dd><dl compact="compact">
 
18962
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
18963
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
18964
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
18965
</dl>
 
18966
</dd>
 
18967
<dt> <b>Messages:</b> none</dt>
 
18968
<dt> <b>Variants:</b></dt>
 
18969
<dd><dl compact="compact">
 
18970
<dt> <img src="images/it_cherry.png" alt="images/it_cherry"><p> <b>it_cherry</b>
 
18971
</p></dt>
 
18972
</dl>
 
18973
</dd>
 
18974
</dl>
 
18975
 
 
18976
<hr size="6">
 
18977
<a name="it_005fcoffee"></a>
 
18978
<table cellpadding="1" cellspacing="1" border="0">
 
18979
<tr><td valign="middle" align="left">[<a href="#it_005fcherry" title="Previous section in reading order"> &lt; </a>]</td>
 
18980
<td valign="middle" align="left">[<a href="#it_005fcoin" title="Next section in reading order"> &gt; </a>]</td>
 
18981
<td valign="middle" align="left"> &nbsp; </td>
 
18982
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
18983
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
18984
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
18985
<td valign="middle" align="left"> &nbsp; </td>
 
18986
<td valign="middle" align="left"> &nbsp; </td>
 
18987
<td valign="middle" align="left"> &nbsp; </td>
 
18988
<td valign="middle" align="left"> &nbsp; </td>
 
18989
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
18990
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
18991
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
18992
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
18993
</tr></table>
 
18994
<a name="it_005fcoffee-1"></a>
 
18995
<h3 class="subsection">8.3.7 it_coffee</h3>
 
18996
<a name="index-it_005fcoffee"></a>
 
18997
 
 
18998
<p>A totally passive cup of coffee. It can be picked up and be dropped many times.
 
18999
It blocks laser light, prohibits <a href="#it_005fcrack">it_crack</a> spreading but it burns on fire
 
19000
and is blown away on <a href="#it_005fbomb">it_bomb</a> explosions.
 
19001
</p>
 
19002
<dl compact="compact">
 
19003
<dt> <b>Attributes:</b></dt>
 
19004
<dd><dl compact="compact">
 
19005
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19006
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19007
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19008
</dl>
 
19009
</dd>
 
19010
<dt> <b>Messages:</b> none</dt>
 
19011
<dt> <b>Variants:</b></dt>
 
19012
<dd><dl compact="compact">
 
19013
<dt> <img src="images/it_coffee.png" alt="images/it_coffee"><p> <b>it_coffee</b>
 
19014
</p></dt>
 
19015
</dl>
 
19016
</dd>
 
19017
</dl>
 
19018
 
 
19019
<hr size="6">
 
19020
<a name="it_005fcoin"></a>
 
19021
<table cellpadding="1" cellspacing="1" border="0">
 
19022
<tr><td valign="middle" align="left">[<a href="#it_005fcoffee" title="Previous section in reading order"> &lt; </a>]</td>
 
19023
<td valign="middle" align="left">[<a href="#it_005fdocument" title="Next section in reading order"> &gt; </a>]</td>
 
19024
<td valign="middle" align="left"> &nbsp; </td>
 
19025
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19026
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19027
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19028
<td valign="middle" align="left"> &nbsp; </td>
 
19029
<td valign="middle" align="left"> &nbsp; </td>
 
19030
<td valign="middle" align="left"> &nbsp; </td>
 
19031
<td valign="middle" align="left"> &nbsp; </td>
 
19032
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19033
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19034
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19035
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19036
</tr></table>
 
19037
<a name="it_005fcoin-1"></a>
 
19038
<h3 class="subsection">8.3.8 it_coin</h3>
 
19039
<a name="index-it_005fcoin"></a>
 
19040
 
 
19041
<p>A coin activates an <a href="#st_005fcoinslot">st_coinslot</a> when inserted by hitting the stone with
 
19042
the coin as first item in the players inventory. The time interval of activity
 
19043
of the coinslot depends on the coin type that is represented by its
 
19044
&lsquo;<samp>state</samp>&rsquo;. Small, medium and large coin variants do exist.
 
19045
</p>
 
19046
<p>When hit by a moving stone the coin type changes from small to medium and
 
19047
from medium to large.
 
19048
</p>
 
19049
<p>A laser beam transforms a small coin into an <a href="#it_005fumbrella">it_umbrella</a>, a medium coin
 
19050
into an <a href="#it_005fhammer">it_hammer</a> and a large coin into an <a href="#it_005fextralife">it_extralife</a>.
 
19051
</p>
 
19052
<p>A coin that comes into existence on an illuminated grid position will not
 
19053
transform due to already existing laser beams. But it will transform on the first
 
19054
additional beam and on laser beams that are switched off and on again.
 
19055
</p>
 
19056
<dl compact="compact">
 
19057
<dt> <b>Attributes:</b></dt>
 
19058
<dd>
 
19059
<dl compact="compact">
 
19060
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>SMALL</code>, <code>MEDIUM</code>, <code>LARGE</code>; &nbsp;&nbsp;<i>default</i>: <code>SMALL</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
19061
<dd><p>Represents the coin type with &lsquo;<samp>SMALL</samp>&rsquo; being a coin of 2 cents, &lsquo;<samp>MEDIUM</samp>&rsquo;
 
19062
being a coin of 5 cents and &lsquo;<samp>LARGE</samp>&rsquo; being a coin of 10 cents..
 
19063
</p></dd>
 
19064
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19065
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19066
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19067
</dl>
 
19068
 
 
19069
</dd>
 
19070
<dt> <b>Messages:</b> none</dt>
 
19071
<dt> <b>Variants:</b></dt>
 
19072
<dd><dl compact="compact">
 
19073
<dt> <img src="images/it_coin_s.png" alt="images/it_coin_s"><p> <b>it_coin</b>: state = <code>SMALL</code>
 
19074
</p></dt>
 
19075
<dt> <img src="images/it_coin_s.png" alt="images/it_coin_s"><p> <b>it_coin_s</b>: state = <code>SMALL</code>
 
19076
</p></dt>
 
19077
<dt> <img src="images/it_coin_m.png" alt="images/it_coin_m"><p> <b>it_coin_m</b>: state = <code>MEDIUM</code>
 
19078
</p></dt>
 
19079
<dt> <img src="images/it_coin_l.png" alt="images/it_coin_l"><p> <b>it_coin_l</b>: state = <code>LARGE</code>
 
19080
</p></dt>
 
19081
</dl>
 
19082
 
 
19083
</dd>
 
19084
</dl>
 
19085
 
 
19086
<hr size="6">
 
19087
<a name="it_005fdocument"></a>
 
19088
<table cellpadding="1" cellspacing="1" border="0">
 
19089
<tr><td valign="middle" align="left">[<a href="#it_005fcoin" title="Previous section in reading order"> &lt; </a>]</td>
 
19090
<td valign="middle" align="left">[<a href="#it_005fdrop" title="Next section in reading order"> &gt; </a>]</td>
 
19091
<td valign="middle" align="left"> &nbsp; </td>
 
19092
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19093
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19094
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19095
<td valign="middle" align="left"> &nbsp; </td>
 
19096
<td valign="middle" align="left"> &nbsp; </td>
 
19097
<td valign="middle" align="left"> &nbsp; </td>
 
19098
<td valign="middle" align="left"> &nbsp; </td>
 
19099
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19100
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19101
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19102
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19103
</tr></table>
 
19104
<a name="it_005fdocument-1"></a>
 
19105
<h3 class="subsection">8.3.9 it_document</h3>
 
19106
<a name="index-it_005fdocument"></a>
 
19107
 
 
19108
<p>This item looks like a piece of paper and contains a text message that can be
 
19109
displayed by activating the item. It is destroyed by explosions from
 
19110
<a href="#it_005fbomb">it_bomb</a>, <a href="#st_005fdispenser">st_dispenser</a>, <a href="#it_005fdynamite">it_dynamite</a> and by burning fire.
 
19111
The document is sensitive to laser light an dissolves with an
 
19112
<a href="#it_005fexplosion">it_explosion</a>_nil leaving no remnants when being hit by light.
 
19113
</p>
 
19114
<p>Another message carrying item is the <a href="#it_005fbottle">it_bottle</a>.
 
19115
</p>
 
19116
<dl compact="compact">
 
19117
<dt> <b>Attributes:</b></dt>
 
19118
<dd><dl compact="compact">
 
19119
<dt> <b>text</b>, &nbsp;&nbsp;<i>values</i>: string;</dt>
 
19120
<dd><p>Either the text to be displayed or just a key word for identification on
 
19121
<a href="#Internationalization-_0028i18n_0029">Internationalization (i18n)</a>.
 
19122
</p></dd>
 
19123
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19124
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19125
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19126
</dl>
 
19127
 
 
19128
</dd>
 
19129
<dt> <b>Messages:</b></dt>
 
19130
<dd><dl compact="compact">
 
19131
<dt> <b>ignite</b></dt>
 
19132
<dd><p>Burn and destroy the document.
 
19133
</p></dd>
 
19134
</dl>
 
19135
 
 
19136
</dd>
 
19137
<dt> <b>Variants:</b></dt>
 
19138
<dd><dl compact="compact">
 
19139
<dt> <img src="images/it_document.png" alt="images/it_document"><p> <b>it_document</b>
 
19140
</p></dt>
 
19141
</dl>
 
19142
</dd>
 
19143
</dl>
 
19144
 
 
19145
<hr size="6">
 
19146
<a name="it_005fdrop"></a>
 
19147
<table cellpadding="1" cellspacing="1" border="0">
 
19148
<tr><td valign="middle" align="left">[<a href="#it_005fdocument" title="Previous section in reading order"> &lt; </a>]</td>
 
19149
<td valign="middle" align="left">[<a href="#it_005fdynamite" title="Next section in reading order"> &gt; </a>]</td>
 
19150
<td valign="middle" align="left"> &nbsp; </td>
 
19151
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19152
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19153
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19154
<td valign="middle" align="left"> &nbsp; </td>
 
19155
<td valign="middle" align="left"> &nbsp; </td>
 
19156
<td valign="middle" align="left"> &nbsp; </td>
 
19157
<td valign="middle" align="left"> &nbsp; </td>
 
19158
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19159
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19160
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19161
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19162
</tr></table>
 
19163
<a name="it_005fdrop-1"></a>
 
19164
<h3 class="subsection">8.3.10 it_drop</h3>
 
19165
<a name="index-it_005fdrop"></a>
 
19166
 
 
19167
<p>The drop is a magic elixir for temporary actor transformations. On activation
 
19168
the actor transforms into another kind, lives for 5 seconds with all qualities
 
19169
of this kind and then transforms back to its old kind. The drop gets consumed
 
19170
by its activation. Generally it is not possible to prolong the transformation
 
19171
by activation of several drops.
 
19172
</p>
 
19173
<p>Note that this object is currently just defined for the following actors:
 
19174
</p>
 
19175
<ul>
 
19176
<li> <a href="#ac_005fmarble">ac_marble</a> transforms to <a href="#ac_005frotor">ac_rotor</a>.
 
19177
</li></ul>
 
19178
 
 
19179
<p>Providing a drop in a level with <a href="#ac_005fpearl">ac_pearl</a> will likely cause
 
19180
incompatibilities with future Enigma versions.
 
19181
</p>
 
19182
<dl compact="compact">
 
19183
<dt> <b>Attributes:</b></dt>
 
19184
<dd><dl compact="compact">
 
19185
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19186
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19187
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19188
</dl>
 
19189
</dd>
 
19190
<dt> <b>Messages:</b> none</dt>
 
19191
<dt> <b>Variants:</b></dt>
 
19192
<dd><dl compact="compact">
 
19193
<dt> <img src="images/it_drop.png" alt="images/it_drop"><p> <b>it_drop</b>
 
19194
</p></dt>
 
19195
</dl>
 
19196
 
 
19197
</dd>
 
19198
</dl>
 
19199
 
 
19200
<hr size="6">
 
19201
<a name="it_005fdynamite"></a>
 
19202
<table cellpadding="1" cellspacing="1" border="0">
 
19203
<tr><td valign="middle" align="left">[<a href="#it_005fdrop" title="Previous section in reading order"> &lt; </a>]</td>
 
19204
<td valign="middle" align="left">[<a href="#it_005fextinguisher" title="Next section in reading order"> &gt; </a>]</td>
 
19205
<td valign="middle" align="left"> &nbsp; </td>
 
19206
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19207
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19208
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19209
<td valign="middle" align="left"> &nbsp; </td>
 
19210
<td valign="middle" align="left"> &nbsp; </td>
 
19211
<td valign="middle" align="left"> &nbsp; </td>
 
19212
<td valign="middle" align="left"> &nbsp; </td>
 
19213
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19214
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19215
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19216
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19217
</tr></table>
 
19218
<a name="it_005fdynamite-1"></a>
 
19219
<h3 class="subsection">8.3.11 it_dynamite</h3>
 
19220
<a name="index-it_005fdynamite"></a>
 
19221
 
 
19222
<p>Dynamite is an explosive that can be picked up and that can be easily ignited
 
19223
at any free grid position. It ignites on drop, or if positioned on the floor in
 
19224
&lsquo;<samp>IDLE</samp>&rsquo; state it ignites on laser light, nearby fire and other nearby
 
19225
explosions as those caused by <a href="#it_005fbomb">it_bomb</a>, <a href="#st_005fdispenser">st_dispenser</a>, or other
 
19226
dynamite. A falling <a href="#ot_005fcannonball">ot_cannonball</a> lets it explode immediately without prior
 
19227
ignition.
 
19228
</p>
 
19229
<p>On ignition its fuse starts burning. During this &lsquo;<samp>ACTIVE</samp>&rsquo; state the
 
19230
dynamite can longer be picked up. After a short time the dynamite explodes
 
19231
causing on the 8 neighboring positions items to ignite and some stones like
 
19232
<a href="#st_005fbreak">st_break</a> to dissolve, too. The explosion leaves at its position an
 
19233
<a href="#it_005fmeditation">it_meditation</a>_hollow on all floor kinds besides <a href="#fl_005fice">fl_ice</a> where an
 
19234
<a href="#it_005fcrack">it_crack</a>_water remains.
 
19235
</p>
 
19236
<p>Generally there is no direct way to stop a burning dynamite in order to prevent
 
19237
the explosion. It is even not allowed to reset the &lsquo;<samp>state</samp>&rsquo; attribute to
 
19238
&lsquo;<samp>IDLE</samp>&rsquo;. But when the user pushes an <a href="#st_005fice">st_ice</a> over a &lsquo;<samp>ACTIVE</samp>&rsquo;
 
19239
dynamite it will freeze and stop burning, returning to state &lsquo;<samp>IDLE</samp>&rsquo;.
 
19240
</p>
 
19241
<p>Dynamite items will be added to the inventory when an actor hits a
 
19242
<a href="#st_005fdispenser">st_dispenser</a>_dynamite.
 
19243
</p>
 
19244
<dl compact="compact">
 
19245
<dt> <b>Attributes:</b></dt>
 
19246
<dd><dl compact="compact">
 
19247
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>IDLE</code>, <code>ACTIVE</code>; &nbsp;&nbsp;<i>default</i>: <code>IDLE</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
19248
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19249
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19250
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19251
<dd><p>Just &lsquo;<samp>IDLE</samp>&rsquo; dynamite can be added to the inventory, burning &lsquo;<samp>ACTIVE</samp>&rsquo;
 
19252
ones are not portable.
 
19253
</p></dd>
 
19254
</dl>
 
19255
 
 
19256
</dd>
 
19257
<dt> <b>Messages:</b></dt>
 
19258
<dd><dl compact="compact">
 
19259
<dt> <b>explode</b></dt>
 
19260
<dd><p>Direct explosion without burning fuse.
 
19261
</p></dd>
 
19262
<dt> <b>ignite</b></dt>
 
19263
<dd><p>Ignite the fuse.
 
19264
</p></dd>
 
19265
<dt> <b>heat</b></dt>
 
19266
<dd><p>Ignite the fuse.
 
19267
</p></dd>
 
19268
</dl>
 
19269
 
 
19270
</dd>
 
19271
<dt> <b>Variants:</b></dt>
 
19272
<dd><dl compact="compact">
 
19273
<dt> <img src="images/it_dynamite.png" alt="images/it_dynamite"><p> <b>it_dynamite</b>: state = <code>IDLE</code>
 
19274
</p></dt>
 
19275
<dt> <img src="images/it_dynamite_burning.png" alt="images/it_dynamite_burning"><p> <b>it_dynamite_burning</b>: state = <code>ACTIVE</code>
 
19276
</p></dt>
 
19277
</dl>
 
19278
 
 
19279
</dd>
 
19280
</dl>
 
19281
 
 
19282
<hr size="6">
 
19283
<a name="it_005fextinguisher"></a>
 
19284
<table cellpadding="1" cellspacing="1" border="0">
 
19285
<tr><td valign="middle" align="left">[<a href="#it_005fdynamite" title="Previous section in reading order"> &lt; </a>]</td>
 
19286
<td valign="middle" align="left">[<a href="#it_005fextralife" title="Next section in reading order"> &gt; </a>]</td>
 
19287
<td valign="middle" align="left"> &nbsp; </td>
 
19288
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19289
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19290
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19291
<td valign="middle" align="left"> &nbsp; </td>
 
19292
<td valign="middle" align="left"> &nbsp; </td>
 
19293
<td valign="middle" align="left"> &nbsp; </td>
 
19294
<td valign="middle" align="left"> &nbsp; </td>
 
19295
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19296
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19297
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19298
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19299
</tr></table>
 
19300
<a name="it_005fextinguisher-1"></a>
 
19301
<h3 class="subsection">8.3.12 it_extinguisher</h3>
 
19302
<a name="index-it_005fextinguisher"></a>
 
19303
 
 
19304
<p>A fire extinguisher that allows to extinguish burning fire and to protect areas
 
19305
with extinguishing foam of upcoming fire. See section <a href="#Fire-Spreading">Fire Spreading</a>.
 
19306
</p>
 
19307
<p>A full loaded extinguisher allows two applications. The first one covers the
 
19308
nearest 13 grids, whereas the second one covers just 5 grids, the actor position
 
19309
itself and the 4 direct neighbor positions. The foam is an <a href="#it_005fburnable">it_burnable</a> of
 
19310
kind &lsquo;<samp>fireproof</samp>&rsquo; which can be cleaned with an <a href="#it_005fbrush">it_brush</a> or by a
 
19311
<a href="#Flood-Spreading">Flood Spreading</a>.
 
19312
</p>
 
19313
<p>The load is given by the attribute &lsquo;<samp>state</samp>&rsquo; of the extinguisher and is
 
19314
visible for the user by a color spot. Green is a &lsquo;<samp>FULL</samp>&rsquo; extinguisher,
 
19315
yellow a &lsquo;<samp>MEDIUM</samp>&rsquo; filled extinguisher and red an &lsquo;<samp>EMPTY</samp>&rsquo; extinguisher.
 
19316
</p>
 
19317
<p>Extinguishers themselves are fireprotected as long as they are not empty.
 
19318
</p>
 
19319
<p>The &lsquo;<samp>toggle</samp>&rsquo; messages refills an extinguisher by one load until it is
 
19320
&lsquo;<samp>FULL</samp>&rsquo; again.
 
19321
</p>
 
19322
<dl compact="compact">
 
19323
<dt> <b>Attributes:</b></dt>
 
19324
<dd><dl compact="compact">
 
19325
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>EMPTY</code>, <code>MEDIUM</code>, <code>FULL</code>; &nbsp;&nbsp;<i>default</i>: <code>FULL</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
19326
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19327
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19328
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19329
</dl>
 
19330
 
 
19331
</dd>
 
19332
<dt> <b>Messages:</b></dt>
 
19333
<dd><dl compact="compact">
 
19334
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
19335
<dd><p>A toggle causes a refill by one load.
 
19336
</p></dd>
 
19337
</dl>
 
19338
 
 
19339
</dd>
 
19340
<dt> <b>Variants:</b></dt>
 
19341
<dd><dl compact="compact">
 
19342
<dt> <img src="images/it_extinguisher.png" alt="images/it_extinguisher"><p> <b>it_extinguisher</b>: state = <code>FULL</code>
 
19343
</p></dt>
 
19344
<dt> <img src="images/it_extinguisher.png" alt="images/it_extinguisher"><p> <b>it_extinguisher_full</b>: state = <code>FULL</code>
 
19345
</p></dt>
 
19346
<dt> <img src="images/it_extinguisher_2.png" alt="images/it_extinguisher_2"><p> <b>it_extinguisher_medium</b>: state = <code>MEDIUM</code>
 
19347
</p></dt>
 
19348
<dt> <img src="images/it_extinguisher_3.png" alt="images/it_extinguisher_3"><p> <b>it_extinguisher_empty</b>: state = <code>EMPTY</code>
 
19349
</p></dt>
 
19350
</dl>
 
19351
 
 
19352
</dd>
 
19353
</dl>
 
19354
 
 
19355
<hr size="6">
 
19356
<a name="it_005fextralife"></a>
 
19357
<table cellpadding="1" cellspacing="1" border="0">
 
19358
<tr><td valign="middle" align="left">[<a href="#it_005fextinguisher" title="Previous section in reading order"> &lt; </a>]</td>
 
19359
<td valign="middle" align="left">[<a href="#it_005fflag" title="Next section in reading order"> &gt; </a>]</td>
 
19360
<td valign="middle" align="left"> &nbsp; </td>
 
19361
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19362
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19363
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19364
<td valign="middle" align="left"> &nbsp; </td>
 
19365
<td valign="middle" align="left"> &nbsp; </td>
 
19366
<td valign="middle" align="left"> &nbsp; </td>
 
19367
<td valign="middle" align="left"> &nbsp; </td>
 
19368
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19369
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19370
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19371
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19372
</tr></table>
 
19373
<a name="it_005fextralife-1"></a>
 
19374
<h3 class="subsection">8.3.13 it_extralife</h3>
 
19375
<a name="index-it_005fextralife"></a>
 
19376
 
 
19377
<p>An extralife transforms into <a href="#it_005fglasses">it_glasses</a> when hit by a laser beam and is
 
19378
itself a laser transformation result of an &lsquo;<samp>it_coin_l</samp>&rsquo; (see section <a href="#it_005fcoin">it_coin</a>).
 
19379
The global variable <a href="#ExtralifeGlasses">ExtralifeGlasses</a> describes what the new glasses are
 
19380
able to spot.
 
19381
</p>
 
19382
<p>An extralife that comes into existence on an illuminated grid position will not
 
19383
be destroyed due to already existing laser beams. But it will be destroyed on
 
19384
the first additional beam and on laser beams that are switched off and on again.
 
19385
</p>
 
19386
<p>If another item transforms into an extralife this new extralife will be immune to
 
19387
light destruction for a short latency period to avoid repeated item
 
19388
transformations.
 
19389
</p>
 
19390
<dl compact="compact">
 
19391
<dt> <b>Attributes:</b></dt>
 
19392
<dd><dl compact="compact">
 
19393
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19394
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19395
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19396
</dl>
 
19397
 
 
19398
</dd>
 
19399
<dt> <b>Variants:</b></dt>
 
19400
<dd><dl compact="compact">
 
19401
<dt> <img src="images/it_extralife.png" alt="images/it_extralife"><p> <b>it_extralife</b>
 
19402
</p></dt>
 
19403
<dt> <img src="images/it_extralife.png" alt="images/it_extralife"><p> <b>it_extralife_new</b>: An extralife that is immune to light destruction for a short latency period.
 
19404
</p></dt>
 
19405
</dl>
 
19406
 
 
19407
</dd>
 
19408
</dl>
 
19409
 
 
19410
<hr size="6">
 
19411
<a name="it_005fflag"></a>
 
19412
<table cellpadding="1" cellspacing="1" border="0">
 
19413
<tr><td valign="middle" align="left">[<a href="#it_005fextralife" title="Previous section in reading order"> &lt; </a>]</td>
 
19414
<td valign="middle" align="left">[<a href="#it_005ffloppy" title="Next section in reading order"> &gt; </a>]</td>
 
19415
<td valign="middle" align="left"> &nbsp; </td>
 
19416
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19417
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19418
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19419
<td valign="middle" align="left"> &nbsp; </td>
 
19420
<td valign="middle" align="left"> &nbsp; </td>
 
19421
<td valign="middle" align="left"> &nbsp; </td>
 
19422
<td valign="middle" align="left"> &nbsp; </td>
 
19423
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19424
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19425
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19426
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19427
</tr></table>
 
19428
<a name="it_005fflag-1"></a>
 
19429
<h3 class="subsection">8.3.14 it_flag</h3>
 
19430
<a name="index-it_005fflag"></a>
 
19431
 
 
19432
<p>Flags do mark the place where killed actors will be resurrected. Flags exist
 
19433
in two colors, &lsquo;<samp>BLACK</samp>&rsquo; and &lsquo;<samp>WHITE</samp>&rsquo;. Each can be used to define the
 
19434
respawn position of matching colored <a href="#ac_005fmarble">ac_marble</a>s and <a href="#ac_005fpearl">ac_pearl</a>s.
 
19435
</p>
 
19436
<p>As a level can contain many flags of the same &lsquo;<samp>color</samp>&rsquo; the respawn position
 
19437
can not be defined by the flag position itself. The respawn position is the
 
19438
position of the last dropped flag of a given color. Additionally the respawn
 
19439
position gets cleared when after the last drop any flag of the same color gets
 
19440
picked up again. When no flag defined respawn position exists the actors will be
 
19441
resurrected at their initial position or the last secure position, if the global
 
19442
attribute <a href="#AutoRespawn">AutoRespawn</a> is set to <code>true</code>.
 
19443
</p>
 
19444
<dl compact="compact">
 
19445
<dt> <b>Attributes:</b></dt>
 
19446
<dd><dl compact="compact">
 
19447
<dt> <b>color</b> &nbsp;&nbsp;<i>values</i>: <code>BLACK</code>, <code>WHITE</code>; &nbsp;&nbsp;<i>default</i>: <code>BLACK</code></dt>
 
19448
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19449
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19450
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19451
</dl>
 
19452
 
 
19453
</dd>
 
19454
<dt> <b>Variants:</b></dt>
 
19455
<dd><dl compact="compact">
 
19456
<dt> <img src="images/it_flag_black.png" alt="images/it_flag_black"><p> <b>it_flag</b>: color = <code>BLACK</code>
 
19457
</p></dt>
 
19458
<dt> <img src="images/it_flag_black.png" alt="images/it_flag_black"><p> <b>it_flag_black</b>: color = <code>BLACK</code>
 
19459
</p></dt>
 
19460
<dt> <img src="images/it_flag_white.png" alt="images/it_flag_white"><p> <b>it_flag_white</b>: color = <code>WHITE</code>
 
19461
</p></dt>
 
19462
</dl>
 
19463
</dd>
 
19464
</dl>
 
19465
 
 
19466
<hr size="6">
 
19467
<a name="it_005ffloppy"></a>
 
19468
<table cellpadding="1" cellspacing="1" border="0">
 
19469
<tr><td valign="middle" align="left">[<a href="#it_005fflag" title="Previous section in reading order"> &lt; </a>]</td>
 
19470
<td valign="middle" align="left">[<a href="#it_005fglasses" title="Next section in reading order"> &gt; </a>]</td>
 
19471
<td valign="middle" align="left"> &nbsp; </td>
 
19472
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19473
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19474
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19475
<td valign="middle" align="left"> &nbsp; </td>
 
19476
<td valign="middle" align="left"> &nbsp; </td>
 
19477
<td valign="middle" align="left"> &nbsp; </td>
 
19478
<td valign="middle" align="left"> &nbsp; </td>
 
19479
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19480
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19481
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19482
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19483
</tr></table>
 
19484
<a name="it_005ffloppy-1"></a>
 
19485
<h3 class="subsection">8.3.15 it_floppy</h3>
 
19486
<a name="index-it_005ffloppy"></a>
 
19487
 
 
19488
<p>A floppy activates an <a href="#st_005ffloppy">st_floppy</a> when inserted by hitting the stone with
 
19489
the floppy as first item in the players inventory.
 
19490
</p>
 
19491
<dl compact="compact">
 
19492
<dt> <b>Attributes:</b></dt>
 
19493
<dd><dl compact="compact">
 
19494
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19495
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19496
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19497
</dl>
 
19498
</dd>
 
19499
<dt> <b>Messages:</b> none</dt>
 
19500
<dt> <b>Variants:</b></dt>
 
19501
<dd><dl compact="compact">
 
19502
<dt> <img src="images/it_floppy.png" alt="images/it_floppy"><p> <b>it_floppy</b>
 
19503
</p></dt>
 
19504
</dl>
 
19505
 
 
19506
</dd>
 
19507
</dl>
 
19508
 
 
19509
<hr size="6">
 
19510
<a name="it_005fglasses"></a>
 
19511
<table cellpadding="1" cellspacing="1" border="0">
 
19512
<tr><td valign="middle" align="left">[<a href="#it_005ffloppy" title="Previous section in reading order"> &lt; </a>]</td>
 
19513
<td valign="middle" align="left">[<a href="#it_005fhammer" title="Next section in reading order"> &gt; </a>]</td>
 
19514
<td valign="middle" align="left"> &nbsp; </td>
 
19515
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19516
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19517
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19518
<td valign="middle" align="left"> &nbsp; </td>
 
19519
<td valign="middle" align="left"> &nbsp; </td>
 
19520
<td valign="middle" align="left"> &nbsp; </td>
 
19521
<td valign="middle" align="left"> &nbsp; </td>
 
19522
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19523
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19524
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19525
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19526
</tr></table>
 
19527
<a name="it_005fglasses-1"></a>
 
19528
<h3 class="subsection">8.3.16 it_glasses</h3>
 
19529
<a name="index-it_005fglasses"></a>
 
19530
 
 
19531
<p>Glasses help a marble to spot certain other objects that are otherwise invisible
 
19532
or indistinguishable.
 
19533
</p>
 
19534
<p>To be effective glasses must be hold in the top level of a players inventory.
 
19535
That means that the glasses must be shown in the inventory and not be buried
 
19536
in an <a href="#it_005fbag">it_bag</a> that is part of the inventory. Of course glasses just help
 
19537
those actors that are attached to the player wearing the glasses.
 
19538
</p>
 
19539
<p>Glasses can make invisible <a href="#st_005fdeath">st_death</a> visible, can uncover invisible
 
19540
passages by making hollow stones transparent, can make inactive
 
19541
<a href="#st_005flightpassenger">st_lightpassenger</a> be distinguishable from <a href="#st_005fdarkglass">st_darkglass</a>, can make
 
19542
invisible <a href="#it_005fsensor">it_sensor</a>, <a href="#it_005ftrap">it_trap</a> and <a href="#st_005factorimpulse">st_actorimpulse</a> be visible.
 
19543
</p>
 
19544
<p>All these features are configurable by the constants &lsquo;<samp>SPOT_DEATH</samp>&rsquo;,
 
19545
&lsquo;<samp>SPOT_HOLLOW</samp>&rsquo;, &lsquo;<samp>SPOT_LIGHTPASSENGER</samp>&rsquo;, &lsquo;<samp>SPOT_SENSOR</samp>&rsquo;,
 
19546
&lsquo;<samp>SPOT_TRAP</samp>&rsquo; and &lsquo;<samp>SPOT_ACTORIMPULSE</samp>&rsquo;. You can set the &lsquo;<samp>state</samp>&rsquo;
 
19547
attribute to a sum of these constants that should apply to given glasses. The
 
19548
default is for backward compatibility
 
19549
&lsquo;<samp>SPOT_DEATH + SPOT_HOLLOW + SPOT_LIGHTPASSENGER</samp>&rsquo;. When a player wears
 
19550
several glasses he spots everything that any of the glasses could spot.
 
19551
</p>
 
19552
<p>Glasses break when a stone is pushed over them. Broken glasses spot nothing.
 
19553
</p>
 
19554
<p>Glasses result from the laser light transformation of <a href="#it_005fextralife">it_extralife</a>. The
 
19555
features of such new glasses are determined by the global variable
 
19556
<a href="#ExtralifeGlasses">ExtralifeGlasses</a>.
 
19557
</p>
 
19558
<dl compact="compact">
 
19559
<dt> <b>Attributes:</b></dt>
 
19560
<dd><dl compact="compact">
 
19561
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: positive numbers; &nbsp;&nbsp;<i>default</i>: <code>SPOT_DEATH + SPOT_HOLLOW + SPOT_LIGHTPASSENGER</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
19562
<dd><p>A sum of the constants &lsquo;<samp>SPOT_DEATH</samp>&rsquo;, &lsquo;<samp>SPOT_HOLLOW</samp>&rsquo;,
 
19563
&lsquo;<samp>SPOT_LIGHTPASSENGER</samp>&rsquo;, &lsquo;<samp>SPOT_SENSOR</samp>&rsquo;, &lsquo;<samp>SPOT_ACTORIMPULSE</samp>&rsquo;,
 
19564
&lsquo;<samp>SPOT_TRAP</samp>&rsquo;. &lsquo;<samp>SPOT_NOTHING</samp>&rsquo; is the state of a broken glasses.
 
19565
</p></dd>
 
19566
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19567
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19568
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19569
</dl>
 
19570
 
 
19571
</dd>
 
19572
<dt> <b>Messages:</b> none</dt>
 
19573
<dt> <b>Variants:</b></dt>
 
19574
<dd><dl compact="compact">
 
19575
<dt> <img src="images/it_glasses.png" alt="images/it_glasses"><p> <b>it_glasses</b> Active glasses item.
 
19576
</p></dt>
 
19577
<dt> <img src="images/it_glasses_broken.png" alt="images/it_glasses_broken"><p> <b>it_glasses_broken</b> Broken glasses that spot nothing.
 
19578
</p></dt>
 
19579
</dl>
 
19580
 
 
19581
</dd>
 
19582
</dl>
 
19583
 
 
19584
<hr size="6">
 
19585
<a name="it_005fhammer"></a>
 
19586
<table cellpadding="1" cellspacing="1" border="0">
 
19587
<tr><td valign="middle" align="left">[<a href="#it_005fglasses" title="Previous section in reading order"> &lt; </a>]</td>
 
19588
<td valign="middle" align="left">[<a href="#it_005fkey" title="Next section in reading order"> &gt; </a>]</td>
 
19589
<td valign="middle" align="left"> &nbsp; </td>
 
19590
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19591
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19592
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19593
<td valign="middle" align="left"> &nbsp; </td>
 
19594
<td valign="middle" align="left"> &nbsp; </td>
 
19595
<td valign="middle" align="left"> &nbsp; </td>
 
19596
<td valign="middle" align="left"> &nbsp; </td>
 
19597
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19598
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19599
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19600
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19601
</tr></table>
 
19602
<a name="it_005fhammer-1"></a>
 
19603
<h3 class="subsection">8.3.17 it_hammer</h3>
 
19604
<a name="index-it_005fhammer"></a>
 
19605
 
 
19606
<p>The hammer is used to destroy some stones, see <a href="#Breakable-Stones">Breakable Stones</a> and
 
19607
<a href="#st_005flightpassenger">st_lightpassenger</a>.
 
19608
</p>
 
19609
<p>It transforms into <a href="#it_005fsword">it_sword</a> when hit by a laser beam and is itself a
 
19610
laser transformation result of an <a href="#it_005fsword">it_sword</a> and an &lsquo;<samp>it_coin_m</samp>&rsquo;
 
19611
(see section <a href="#it_005fcoin">it_coin</a>).
 
19612
</p>
 
19613
<p>An hammer that comes into existence on an illuminated grid position will not
 
19614
transform due to already existing laser beams. But it will transform on the first
 
19615
additional beam and on laser beams that are switched off and on again.
 
19616
</p>
 
19617
<p>If another item transforms into an hammer this new hammer will be immune to
 
19618
further light transformations for a short latency period to avoid unstable
 
19619
flickering of repeated item transformations.
 
19620
</p>
 
19621
<dl compact="compact">
 
19622
<dt> <b>Attributes:</b></dt>
 
19623
<dd><dl compact="compact">
 
19624
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19625
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19626
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19627
</dl>
 
19628
 
 
19629
</dd>
 
19630
<dt> <b>Variants:</b></dt>
 
19631
<dd><dl compact="compact">
 
19632
<dt> <img src="images/it_hammer.png" alt="images/it_hammer"><p> <b>it_hammer</b> A standard hammer item.
 
19633
</p></dt>
 
19634
<dt> <img src="images/it_hammer.png" alt="images/it_hammer"><p> <b>it_hammer_new</b> A hammer that is immune to light transformations for a short latency period.
 
19635
</p></dt>
 
19636
</dl>
 
19637
 
 
19638
</dd>
 
19639
</dl>
 
19640
 
 
19641
<hr size="6">
 
19642
<a name="it_005fkey"></a>
 
19643
<table cellpadding="1" cellspacing="1" border="0">
 
19644
<tr><td valign="middle" align="left">[<a href="#it_005fhammer" title="Previous section in reading order"> &lt; </a>]</td>
 
19645
<td valign="middle" align="left">[<a href="#it_005fmagicwand" title="Next section in reading order"> &gt; </a>]</td>
 
19646
<td valign="middle" align="left"> &nbsp; </td>
 
19647
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19648
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19649
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19650
<td valign="middle" align="left"> &nbsp; </td>
 
19651
<td valign="middle" align="left"> &nbsp; </td>
 
19652
<td valign="middle" align="left"> &nbsp; </td>
 
19653
<td valign="middle" align="left"> &nbsp; </td>
 
19654
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19655
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19656
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19657
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19658
</tr></table>
 
19659
<a name="it_005fkey-1"></a>
 
19660
<h3 class="subsection">8.3.18 it_key</h3>
 
19661
<a name="index-it_005fkey"></a>
 
19662
 
 
19663
<p>A key activates an <a href="#st_005fkey">st_key</a> when inserted by hitting the stone with
 
19664
the key as first item in the players inventory.
 
19665
</p>
 
19666
<p>Usually the &lsquo;<samp>code</samp>&rsquo; of the key is not visually unveiled. But if you
 
19667
set &lsquo;<samp>invisible</samp>&rsquo; to the value &lsquo;<samp>false</samp>&rsquo; the code becomes visible for
 
19668
number code values &lsquo;<samp>1</samp>&rsquo; to &lsquo;<samp>8</samp>&rsquo;. The code is just visible, when the
 
19669
key is part of the inventory. This helps the user to distinguish multiple keys
 
19670
in the inventory and to assign them to the matching <a href="#st_005fkey">st_key</a>s.
 
19671
</p>
 
19672
<p>An &lsquo;<samp>invisible</samp>&rsquo; key reveals its code when being inserted in a matching,
 
19673
unveiled <a href="#st_005fkey">st_key</a>. The code remains visible, when the user withdraws the
 
19674
key from the stone and adds it to his inventory.
 
19675
</p>
 
19676
<dl compact="compact">
 
19677
<dt> <b>Attributes:</b></dt>
 
19678
<dd><dl compact="compact">
 
19679
<dt> <b>code</b>, &nbsp;&nbsp;<i>values</i>: number or string; &nbsp;&nbsp;<i>default</i>: <code>1</code></dt>
 
19680
<dd><p>The code of a key must match that of an <a href="#st_005fkey">st_key</a> to unlock it.
 
19681
</p></dd>
 
19682
<dt> <b>invisible</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
19683
<dd><p>A visible key unveils its &lsquo;<samp>code</samp>&rsquo; by a color spot when being lifted.
 
19684
</p></dd>
 
19685
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19686
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19687
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19688
</dl>
 
19689
 
 
19690
</dd>
 
19691
<dt> <b>Messages:</b> none</dt>
 
19692
<dt> <b>Variants:</b></dt>
 
19693
<dd><dl compact="compact">
 
19694
<dt> <img src="images/it_key.png" alt="images/it_key"><p> <b>it_key</b>
 
19695
</p></dt>
 
19696
</dl>
 
19697
</dd>
 
19698
</dl>
 
19699
 
 
19700
<hr size="6">
 
19701
<a name="it_005fmagicwand"></a>
 
19702
<table cellpadding="1" cellspacing="1" border="0">
 
19703
<tr><td valign="middle" align="left">[<a href="#it_005fkey" title="Previous section in reading order"> &lt; </a>]</td>
 
19704
<td valign="middle" align="left">[<a href="#it_005fpencil" title="Next section in reading order"> &gt; </a>]</td>
 
19705
<td valign="middle" align="left"> &nbsp; </td>
 
19706
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19707
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19708
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19709
<td valign="middle" align="left"> &nbsp; </td>
 
19710
<td valign="middle" align="left"> &nbsp; </td>
 
19711
<td valign="middle" align="left"> &nbsp; </td>
 
19712
<td valign="middle" align="left"> &nbsp; </td>
 
19713
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19714
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19715
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19716
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19717
</tr></table>
 
19718
<a name="it_005fmagicwand-1"></a>
 
19719
<h3 class="subsection">8.3.19 it_magicwand</h3>
 
19720
<a name="index-it_005fmagicwand"></a>
 
19721
 
 
19722
<p>The wizard&rsquo;s tool, that allows to do all sort of magic things if it is the
 
19723
wielded item in the player&rsquo;s inventory:
 
19724
</p>
 
19725
<ul>
 
19726
<li> <a href="#st_005fblur">st_blur</a>, magic - transforms to <a href="#st_005fpassage">st_passage</a>,
 
19727
</li><li> <a href="#st_005fboulder">st_boulder</a> - changes orientation of a boulder,
 
19728
</li><li> <a href="#st_005fchess">st_chess</a> - changes the color of a chess stone,
 
19729
</li><li> <a href="#st_005fghost">st_ghost</a>, greenbrown - transforms to <a href="#st_005fgreenbrown">st_greenbrown</a>,
 
19730
</li><li> <a href="#st_005fmagic">st_magic</a>, brick - transforms to a <a href="#st_005frawglass">st_rawglass</a>,
 
19731
</li><li> <a href="#st_005foneway">st_oneway</a> - changes orientation of a oneway,
 
19732
</li><li> <a href="#st_005fpuzzle">st_puzzle</a> - scrambles blue puzzle stones instead of pushing, causes complete
 
19733
clusters to explode,
 
19734
</li><li> <a href="#st_005frubberband">st_rubberband</a> - makes rubberband stones movable,
 
19735
</li><li> <a href="#st_005fstoneimpulse">st_stoneimpulse</a>, movable - avoid pulsing on pushes.
 
19736
</li></ul>
 
19737
 
 
19738
<dl compact="compact">
 
19739
<dt> <b>Attributes:</b></dt>
 
19740
<dd><dl compact="compact">
 
19741
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19742
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19743
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19744
</dl>
 
19745
 
 
19746
</dd>
 
19747
<dt> <b>Messages:</b> none</dt>
 
19748
<dt> <b>Action:</b> none</dt>
 
19749
<dt> <b>Variants:</b></dt>
 
19750
<dd><dl compact="compact">
 
19751
<dt> <img src="images/it_magicwand.png" alt="images/it_magicwand"><p> <b>it_magicwand</b>
 
19752
</p></dt>
 
19753
</dl>
 
19754
 
 
19755
</dd>
 
19756
</dl>
 
19757
 
 
19758
<hr size="6">
 
19759
<a name="it_005fpencil"></a>
 
19760
<table cellpadding="1" cellspacing="1" border="0">
 
19761
<tr><td valign="middle" align="left">[<a href="#it_005fmagicwand" title="Previous section in reading order"> &lt; </a>]</td>
 
19762
<td valign="middle" align="left">[<a href="#it_005fpin" title="Next section in reading order"> &gt; </a>]</td>
 
19763
<td valign="middle" align="left"> &nbsp; </td>
 
19764
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19765
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19766
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19767
<td valign="middle" align="left"> &nbsp; </td>
 
19768
<td valign="middle" align="left"> &nbsp; </td>
 
19769
<td valign="middle" align="left"> &nbsp; </td>
 
19770
<td valign="middle" align="left"> &nbsp; </td>
 
19771
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19772
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19773
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19774
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19775
</tr></table>
 
19776
<a name="it_005fpencil-1"></a>
 
19777
<h3 class="subsection">8.3.20 it_pencil</h3>
 
19778
<a name="index-it_005fpencil"></a>
 
19779
 
 
19780
<p>An item to mark floors and stones.
 
19781
</p>
 
19782
<p>An activated pencil scratches an <a href="#it_005fcross">it_cross</a> on most floors. As the pencil
 
19783
gets consumed by this operation the cross takes the pencils identity on
 
19784
this <a href="#Object-Transformation">Object Transformation</a>. But on <a href="#fl_005fice">fl_ice</a> the pencil makes a small
 
19785
<a href="#it_005fcrack">it_crack</a> as it is so sharp. On indestructible floors like <a href="#fl_005fabyss">fl_abyss</a>,
 
19786
<a href="#fl_005fwater">fl_water</a> and <a href="#fl_005fswamp">fl_swamp</a> and on <a href="#fl_005fbridge">fl_bridge</a> the pencil can not
 
19787
be activated at all. Any existing item on the floor does prevent a pencil
 
19788
application, too. The actor can only mark a floor if it is on the floor and not
 
19789
flying. During a jump an actor will just drop the pencil as an item.
 
19790
</p>
 
19791
<p>On actor hits with a revealed pencil on a <a href="#st_005fflat">st_flat</a> the stones gets marked
 
19792
burnable. Again the pencil is consumed on this operation. Both the plain and
 
19793
the movable variants can be marked.
 
19794
</p>
 
19795
<dl compact="compact">
 
19796
<dt> <b>Attributes:</b></dt>
 
19797
<dd><dl compact="compact">
 
19798
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19799
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19800
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19801
</dl>
 
19802
</dd>
 
19803
<dt> <b>Messages:</b> none</dt>
 
19804
<dt> <b>Variants:</b></dt>
 
19805
<dd><dl compact="compact">
 
19806
<dt> <img src="images/it_pencil.png" alt="images/it_pencil"><p> <b>it_pencil</b>
 
19807
</p></dt>
 
19808
</dl>
 
19809
 
 
19810
</dd>
 
19811
</dl>
 
19812
 
 
19813
<hr size="6">
 
19814
<a name="it_005fpin"></a>
 
19815
<table cellpadding="1" cellspacing="1" border="0">
 
19816
<tr><td valign="middle" align="left">[<a href="#it_005fpencil" title="Previous section in reading order"> &lt; </a>]</td>
 
19817
<td valign="middle" align="left">[<a href="#it_005fpipe" title="Next section in reading order"> &gt; </a>]</td>
 
19818
<td valign="middle" align="left"> &nbsp; </td>
 
19819
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19820
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19821
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19822
<td valign="middle" align="left"> &nbsp; </td>
 
19823
<td valign="middle" align="left"> &nbsp; </td>
 
19824
<td valign="middle" align="left"> &nbsp; </td>
 
19825
<td valign="middle" align="left"> &nbsp; </td>
 
19826
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19827
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19828
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19829
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19830
</tr></table>
 
19831
<a name="it_005fpin-1"></a>
 
19832
<h3 class="subsection">8.3.21 it_pin</h3>
 
19833
<a name="index-it_005fpin"></a>
 
19834
 
 
19835
<p>A pin is a friction increasing item that can be used as a crampon on <a href="#fl_005fice">fl_ice</a>.
 
19836
When it is picked up and is added to the inventory it significantly increases
 
19837
the floor friction applied to all actors owned by the inventory&rsquo;s owner.
 
19838
</p>
 
19839
<p>Pins do just increase friction as long as they are directly part of the
 
19840
inventory. A pin contained within an <a href="#it_005fbag">it_bag</a>, being part of the inventory,
 
19841
has no influence on the friction. Two or more pins do not apply more friction
 
19842
than a single pin. As soon as the last pin is dropped the friction returns
 
19843
to its standard values.
 
19844
</p>
 
19845
<dl compact="compact">
 
19846
<dt> <b>Attributes:</b></dt>
 
19847
<dd><dl compact="compact">
 
19848
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19849
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19850
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19851
</dl>
 
19852
</dd>
 
19853
<dt> <b>Messages:</b> none</dt>
 
19854
<dt> <b>Variants:</b></dt>
 
19855
<dd><dl compact="compact">
 
19856
<dt> <img src="images/it_pin.png" alt="images/it_pin"><p> <b>it_pin</b>
 
19857
</p></dt>
 
19858
</dl>
 
19859
 
 
19860
</dd>
 
19861
</dl>
 
19862
 
 
19863
<hr size="6">
 
19864
<a name="it_005fpipe"></a>
 
19865
<table cellpadding="1" cellspacing="1" border="0">
 
19866
<tr><td valign="middle" align="left">[<a href="#it_005fpin" title="Previous section in reading order"> &lt; </a>]</td>
 
19867
<td valign="middle" align="left">[<a href="#it_005fpuller" title="Next section in reading order"> &gt; </a>]</td>
 
19868
<td valign="middle" align="left"> &nbsp; </td>
 
19869
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19870
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19871
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19872
<td valign="middle" align="left"> &nbsp; </td>
 
19873
<td valign="middle" align="left"> &nbsp; </td>
 
19874
<td valign="middle" align="left"> &nbsp; </td>
 
19875
<td valign="middle" align="left"> &nbsp; </td>
 
19876
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19877
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19878
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19879
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19880
</tr></table>
 
19881
<a name="it_005fpipe-1"></a>
 
19882
<h3 class="subsection">8.3.22 it_pipe</h3>
 
19883
<a name="index-it_005fpipe"></a>
 
19884
 
 
19885
<p>Pipe items are used to build item transporting pipes connected to an
 
19886
<a href="#st_005fmail">st_mail</a>.
 
19887
</p>
 
19888
<p>Pipe items are described by their &lsquo;<samp>connections</samp>&rsquo; to neighbor grids. A pipe
 
19889
is build up of items with fitting connections.
 
19890
</p>
 
19891
<p>Even though there exist pipe ending items with just one connection there is
 
19892
currently no known usage of them besides decoration.
 
19893
</p>
 
19894
<dl compact="compact">
 
19895
<dt> <b>Attributes:</b></dt>
 
19896
<dd><dl compact="compact">
 
19897
<dt> <b>connections</b>, &nbsp;&nbsp;<i>values</i>: string; &nbsp;&nbsp;<i>default</i>: <code>&quot;ew&quot;</code></dt>
 
19898
<dd><p>Describes the pipe connections to the neighbor grids. The string is a substring of
 
19899
<code>&quot;nesw&quot;</code> listing the existing connections. The sequence of the sides, north,
 
19900
east, south, west, is guaranteed on read access but arbitrary on write access.
 
19901
Currently only pipes with one or two connections do exist.
 
19902
</p></dd>
 
19903
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19904
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19905
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19906
</dl>
 
19907
 
 
19908
</dd>
 
19909
<dt> <b>Messages:</b> none</dt>
 
19910
<dt> <b>Action:</b> none</dt>
 
19911
<dt> <b>Variants:</b></dt>
 
19912
<dd><dl compact="compact">
 
19913
<dt> <img src="images/it_pipe_e.png" alt="images/it_pipe_e"><p> <b>it_pipe</b> connections = <code>&quot;ew&quot;</code> The horizontal pipe.
 
19914
</p></dt>
 
19915
<dt> <img src="images/it_pipe_f.png" alt="images/it_pipe_f"><p> <b>it_pipe_w</b> connections = <code>&quot;w&quot;</code>
 
19916
</p></dt>
 
19917
<dt> <img src="images/it_pipe_b.png" alt="images/it_pipe_b"><p> <b>it_pipe_s</b> connections = <code>&quot;s&quot;</code>
 
19918
</p></dt>
 
19919
<dt> <img src="images/it_pipe_d.png" alt="images/it_pipe_d"><p> <b>it_pipe_sw</b> connections = <code>&quot;sw&quot;</code>
 
19920
</p></dt>
 
19921
<dt> <img src="images/it_pipe.png" alt="images/it_pipe"><p> <b>it_pipe_e</b> connections = <code>&quot;e&quot;</code>
 
19922
</p></dt>
 
19923
<dt> <img src="images/it_pipe_e.png" alt="images/it_pipe_e"><p> <b>it_pipe_ew</b> connections = <code>&quot;ew&quot;</code> The horizontal pipe.
 
19924
</p></dt>
 
19925
<dt> <img src="images/it_pipe_c.png" alt="images/it_pipe_c"><p> <b>it_pipe_es</b> connections = <code>&quot;es&quot;</code>
 
19926
</p></dt>
 
19927
<dt> <img src="images/it_pipe_g.png" alt="images/it_pipe_g"><p> <b>it_pipe_n</b> connections = <code>&quot;n&quot;</code>
 
19928
</p></dt>
 
19929
<dt> <img src="images/it_pipe_i.png" alt="images/it_pipe_i"><p> <b>it_pipe_nw</b> connections = <code>&quot;nw&quot;</code>
 
19930
</p></dt>
 
19931
<dt> <img src="images/it_pipe_j.png" alt="images/it_pipe_j"><p> <b>it_pipe_ns</b> connections = <code>&quot;ns&quot;</code> The vertical pipe.
 
19932
</p></dt>
 
19933
<dt> <img src="images/it_pipe_h.png" alt="images/it_pipe_h"><p><b>it_pipe_ne</b> connections = <code>&quot;ne&quot;</code>
 
19934
</p></dt>
 
19935
</dl>
 
19936
</dd>
 
19937
</dl>
 
19938
 
 
19939
<hr size="6">
 
19940
<a name="it_005fpuller"></a>
 
19941
<table cellpadding="1" cellspacing="1" border="0">
 
19942
<tr><td valign="middle" align="left">[<a href="#it_005fpipe" title="Previous section in reading order"> &lt; </a>]</td>
 
19943
<td valign="middle" align="left">[<a href="#it_005fring" title="Next section in reading order"> &gt; </a>]</td>
 
19944
<td valign="middle" align="left"> &nbsp; </td>
 
19945
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
19946
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
19947
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
19948
<td valign="middle" align="left"> &nbsp; </td>
 
19949
<td valign="middle" align="left"> &nbsp; </td>
 
19950
<td valign="middle" align="left"> &nbsp; </td>
 
19951
<td valign="middle" align="left"> &nbsp; </td>
 
19952
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
19953
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
19954
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
19955
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
19956
</tr></table>
 
19957
<a name="it_005fpuller-1"></a>
 
19958
<h3 class="subsection">8.3.23 it_puller</h3>
 
19959
<a name="index-it_005fpuller"></a>
 
19960
 
 
19961
<p>A puller item looks like a white arrow. It can be picked up. But when being
 
19962
dropped it gets activated and whirls around. The actor should leave the grid
 
19963
immediately as the puller will finally dissolve in a lethal explosion.
 
19964
</p>
 
19965
<p>But the main purpose of the puller is its ability to pull stones. The arrow
 
19966
&lsquo;<samp>orientation</samp>&rsquo; indicates the direction into which a stone will be pulled
 
19967
when the item is dropped in front. The pull takes place immediately at the end
 
19968
of the short explosion. It is a full blown stone pull, that will pull others
 
19969
stones connected to the directly affected stone via <a href="#ot_005fwire">ot_wire</a>, too. With
 
19970
the explosion the puller item ceases to exist.
 
19971
</p>
 
19972
<dl compact="compact">
 
19973
<dt> <b>Attributes:</b></dt>
 
19974
<dd><dl compact="compact">
 
19975
<dd><a name="index-orientation"></a>
 
19976
</dd>
 
19977
<dt> <b>orientation</b>, &nbsp;&nbsp;<i>values</i>: <code>NORTH</code>, <code>EAST</code>, <code>SOUTH</code>, <code>WEST</code>; &nbsp;&nbsp;<i>default</i>: <code>WEST</code></dt>
 
19978
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
19979
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
19980
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
19981
</dl>
 
19982
 
 
19983
</dd>
 
19984
<dt> <b>Messages:</b> none</dt>
 
19985
<dt> <b>Action:</b> none</dt>
 
19986
<dt> <b>Variants:</b></dt>
 
19987
<dd><dl compact="compact">
 
19988
<dt> <img src="images/it_puller_4.png" alt="images/it_puller_4"><p> <b>it_puller</b> orientation = <code>WEST</code>
 
19989
</p></dt>
 
19990
<dt> <img src="images/it_puller_4.png" alt="images/it_puller_4"><p> <b>it_puller_w</b> orientation = <code>WEST</code>
 
19991
</p></dt>
 
19992
<dt> <img src="images/it_puller_3.png" alt="images/it_puller_3"><p> <b>it_puller_s</b> orientation = <code>SOUTH</code>
 
19993
</p></dt>
 
19994
<dt> <img src="images/it_puller_2.png" alt="images/it_puller_2"><p> <b>it_puller_e</b> orientation = <code>EAST</code>
 
19995
</p></dt>
 
19996
<dt> <img src="images/it_puller.png" alt="images/it_puller"><p> <b>it_puller_n</b> orientation = <code>NORTH</code>
 
19997
</p></dt>
 
19998
</dl>
 
19999
</dd>
 
20000
</dl>
 
20001
 
 
20002
<hr size="6">
 
20003
<a name="it_005fring"></a>
 
20004
<table cellpadding="1" cellspacing="1" border="0">
 
20005
<tr><td valign="middle" align="left">[<a href="#it_005fpuller" title="Previous section in reading order"> &lt; </a>]</td>
 
20006
<td valign="middle" align="left">[<a href="#it_005frubberband" title="Next section in reading order"> &gt; </a>]</td>
 
20007
<td valign="middle" align="left"> &nbsp; </td>
 
20008
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20009
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
20010
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20011
<td valign="middle" align="left"> &nbsp; </td>
 
20012
<td valign="middle" align="left"> &nbsp; </td>
 
20013
<td valign="middle" align="left"> &nbsp; </td>
 
20014
<td valign="middle" align="left"> &nbsp; </td>
 
20015
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20016
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20017
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20018
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20019
</tr></table>
 
20020
<a name="it_005fring-1"></a>
 
20021
<h3 class="subsection">8.3.24 it_ring</h3>
 
20022
<a name="index-it_005fring"></a>
 
20023
 
 
20024
<p>The ring is a magic position exchange item. On activation the ring gets dropped
 
20025
onto the grid and the actor gets warped either to the actors respawn position
 
20026
or to the position of another actor that is warped to the initiators position in
 
20027
exchange.
 
20028
</p>
 
20029
<p>Note that this object is currently just defined in the following cases:
 
20030
</p>
 
20031
<ul>
 
20032
<li> just one arbitrary actor owned by player &lsquo;<samp>YIN</samp>&rsquo; - the actor gets
 
20033
warped to its respawn position.
 
20034
</li><li> just an <a href="#ac_005fmarble">ac_marble</a>_black owned by player &lsquo;<samp>YIN</samp>&rsquo; and an
 
20035
<a href="#ac_005fmarble">ac_marble</a>_white owned by player &lsquo;<samp>YANG</samp>&rsquo; - both actors exchange their
 
20036
position.
 
20037
</li></ul>
 
20038
 
 
20039
<p>Providing a ring in any other case will likely cause incompatibilities with
 
20040
future Enigma versions.
 
20041
</p>
 
20042
<dl compact="compact">
 
20043
<dt> <b>Attributes:</b></dt>
 
20044
<dd><dl compact="compact">
 
20045
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
20046
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
20047
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
20048
</dl>
 
20049
</dd>
 
20050
<dt> <b>Messages:</b> none</dt>
 
20051
<dt> <b>Variants:</b></dt>
 
20052
<dd><dl compact="compact">
 
20053
<dt> <img src="images/it_ring.png" alt="images/it_ring"><p> <b>it_ring</b>
 
20054
</p></dt>
 
20055
</dl>
 
20056
 
 
20057
</dd>
 
20058
</dl>
 
20059
 
 
20060
<hr size="6">
 
20061
<a name="it_005frubberband"></a>
 
20062
<table cellpadding="1" cellspacing="1" border="0">
 
20063
<tr><td valign="middle" align="left">[<a href="#it_005fring" title="Previous section in reading order"> &lt; </a>]</td>
 
20064
<td valign="middle" align="left">[<a href="#it_005fseed" title="Next section in reading order"> &gt; </a>]</td>
 
20065
<td valign="middle" align="left"> &nbsp; </td>
 
20066
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20067
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
20068
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20069
<td valign="middle" align="left"> &nbsp; </td>
 
20070
<td valign="middle" align="left"> &nbsp; </td>
 
20071
<td valign="middle" align="left"> &nbsp; </td>
 
20072
<td valign="middle" align="left"> &nbsp; </td>
 
20073
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20074
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20075
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20076
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20077
</tr></table>
 
20078
<a name="it_005frubberband-1"></a>
 
20079
<h3 class="subsection">8.3.25 it_rubberband</h3>
 
20080
<a name="index-it_005frubberband"></a>
 
20081
 
 
20082
<p>A portable <a href="#ot_005frubberband">ot_rubberband</a> that gets connected to the bearer on activation.
 
20083
</p>
 
20084
<p>As the rubberband&rsquo;s &lsquo;<samp>anchor1</samp>&rsquo; is given by the activator itself, just the
 
20085
&lsquo;<samp>anchor2</samp>&rsquo; reference can be configured by this item. It can be any stone
 
20086
or actor reference.
 
20087
</p>
 
20088
<p>Of special interest may be the usage of dynamic nearest object references
 
20089
(see section <a href="#Object-Naming">Object Naming</a>). A marble will be able to connect to the nearest
 
20090
object out of a given group.
 
20091
</p>
 
20092
<p>If &lsquo;<samp>anchor2</samp>&rsquo; does not exist, the &lsquo;<samp>it_rubberband</samp>&rsquo; will be dropped.
 
20093
</p>
 
20094
<p>The other attributes describe the force and length parameters of the
 
20095
<a href="#ot_005frubberband">ot_rubberband</a>, that will be created on application of the item. In fact
 
20096
the item&rsquo;s identity will be transferred to its successor
 
20097
(see section <a href="#Object-Transformation">Object Transformation</a>). After creation of the life rubberband the
 
20098
action message will be send to the target. Note that it is actually the
 
20099
<a href="#ot_005frubberband">ot_rubberband</a> as the successor that sends the message.
 
20100
</p>
 
20101
<dl compact="compact">
 
20102
<dt> <b>Attributes:</b></dt>
 
20103
<dd>
 
20104
<dl compact="compact">
 
20105
<dt> <b>anchor2</b> &nbsp;&nbsp;<i>values</i>: actor or stone object; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
20106
<dd><p>Object reference or name of an actor or a stone that the rubber will be
 
20107
connected to. The reference will be evaluated on item activation.
 
20108
</p></dd>
 
20109
<dt> <b>strength</b> &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: <code>10.0</code></dt>
 
20110
<dd><p>The force strength.
 
20111
</p></dd>
 
20112
<dt> <b>length</b> &nbsp;&nbsp;<i>values</i>: positive number or <code>AUTOLENGTH</code>; &nbsp;&nbsp;<i>default</i>: <code>1.0</code></dt>
 
20113
<dd><p>The natural length above which forces are applied.
 
20114
</p></dd>
 
20115
<dt> <b>threshold</b> &nbsp;&nbsp;<i>values</i>: positive number or zero; &nbsp;&nbsp;<i>default</i>: <code>0.0</code></dt>
 
20116
<dd><p>The length smaller than the natural length below which inverted forces are applied.
 
20117
</p></dd>
 
20118
<dt> <b>min</b> &nbsp;&nbsp;<i>values</i>: positive number or zero; &nbsp;&nbsp;<i>default</i>: <code>0.0</code></dt>
 
20119
<dd><p>The minimum length at which actors bounce.
 
20120
</p></dd>
 
20121
<dt> <b>max</b> &nbsp;&nbsp;<i>values</i>: positive number or zero; &nbsp;&nbsp;<i>default</i>: <code>0.0</code></dt>
 
20122
<dd><p>The maximum length at which actors bounce.
 
20123
</p></dd>
 
20124
<dt> <b>scissor</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
20125
<dd><p>Rubberband cutting behaviour on connection. On a value of <code>true</code> the
 
20126
activation of this rubberband will cut all existing rubberbands which are
 
20127
currently connected to the activating actor.
 
20128
</p></dd>
 
20129
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
20130
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
20131
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
20132
</dl>
 
20133
 
 
20134
</dd>
 
20135
<dt> <b>Messages:</b> none</dt>
 
20136
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
20137
<dd><p>On successful activation of this item the action message is send with a value of
 
20138
&lsquo;<samp>true</samp>&rsquo;. Note that the parameter &lsquo;<samp>sender</samp>&rsquo; will report the new
 
20139
<a href="#ot_005frubberband">ot_rubberband</a>.
 
20140
</p>
 
20141
</dd>
 
20142
<dt> <b>Variants:</b></dt>
 
20143
<dd><dl compact="compact">
 
20144
<dt> <img src="images/it_rubberband.png" alt="images/it_rubberband"><p> <b>it_rubberband</b>
 
20145
</p></dt>
 
20146
</dl>
 
20147
</dd>
 
20148
</dl>
 
20149
 
 
20150
 
 
20151
<hr size="6">
 
20152
<a name="it_005fseed"></a>
 
20153
<table cellpadding="1" cellspacing="1" border="0">
 
20154
<tr><td valign="middle" align="left">[<a href="#it_005frubberband" title="Previous section in reading order"> &lt; </a>]</td>
 
20155
<td valign="middle" align="left">[<a href="#it_005fspade" title="Next section in reading order"> &gt; </a>]</td>
 
20156
<td valign="middle" align="left"> &nbsp; </td>
 
20157
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20158
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
20159
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20160
<td valign="middle" align="left"> &nbsp; </td>
 
20161
<td valign="middle" align="left"> &nbsp; </td>
 
20162
<td valign="middle" align="left"> &nbsp; </td>
 
20163
<td valign="middle" align="left"> &nbsp; </td>
 
20164
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20165
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20166
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20167
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20168
</tr></table>
 
20169
<a name="it_005fseed-1"></a>
 
20170
<h3 class="subsection">8.3.26 it_seed</h3>
 
20171
<a name="index-it_005fseed"></a>
 
20172
 
 
20173
<p>Stone seeds are items that start growing and finally transforming to stones
 
20174
on activation. There are different &lsquo;<samp>flavor</samp>&rsquo;s of seeds that all look the
 
20175
same, but do grow to different stones. While a <code>&quot;wood&quot;</code> seed grows to an
 
20176
<a href="#st_005fbox">st_box</a>_wood, a <code>&quot;hay&quot;</code> seed grows to an <a href="#st_005fbox">st_box</a>_hay, a
 
20177
<code>&quot;greenbrown&quot;</code> seed grows to an unmovable <a href="#st_005fgreenbrown">st_greenbrown</a> and a
 
20178
<code>&quot;volcano&quot;</code> seed grows to an active <a href="#st_005fvolcano">st_volcano</a>.
 
20179
</p>
 
20180
<p>Seeds can be dropped on any item free grid position, even beneath another stone
 
20181
that will get killed by the seed successor stone.
 
20182
</p>
 
20183
<p>Seeds get automatically activated when being dropped, when hit by a laser beam
 
20184
or a stone being pushed on them. You can activate them by &lsquo;<samp>grow</samp>&rsquo; and
 
20185
&lsquo;<samp>signal</samp>&rsquo; messages, too.
 
20186
</p>
 
20187
<p>The identity of the seed gets transferred to the emerging stone including the
 
20188
attribute &lsquo;<samp>secure</samp>&rsquo;.
 
20189
</p>
 
20190
<p>The only method of handling seeds without activation are containment within a
 
20191
<a href="#it_005fbag">it_bag</a> or sending them via <a href="#st_005fmail">st_mail</a> to a destination grid.
 
20192
</p>
 
20193
<dl compact="compact">
 
20194
<dt> <b>Attributes:</b></dt>
 
20195
<dd><dl compact="compact">
 
20196
<dt> <b>flavor</b>, &nbsp;&nbsp;<i>values</i>: <code>&quot;wood&quot;</code>, <code>&quot;hay&quot;</code>, <code>&quot;greenbrown&quot;</code>, <code>&quot;volcano&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;wood&quot;</code></dt>
 
20197
<dd><p>The type of the resulting stone.
 
20198
</p></dd>
 
20199
<dt> <b>secure</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
20200
<dd><p>This attribute is transferred to the resulting stone. The <a href="#st_005fvolcano">st_volcano</a> and
 
20201
<a href="#st_005fbox">st_box</a> make use of it.
 
20202
</p></dd>
 
20203
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
20204
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
20205
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
20206
</dl>
 
20207
 
 
20208
</dd>
 
20209
<dt> <b>Messages:</b></dt>
 
20210
<dd><dl compact="compact">
 
20211
<dt> <b>grow</b></dt>
 
20212
<dd><p>Start growing the seed.
 
20213
</p></dd>
 
20214
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
20215
<dd><p>Start growing the seed.
 
20216
</p></dd>
 
20217
</dl>
 
20218
 
 
20219
</dd>
 
20220
<dt> <b>Variants:</b></dt>
 
20221
<dd><dl compact="compact">
 
20222
<dt> <img src="images/it_seed.png" alt="images/it_seed"><p> <b>it_seed</b> flavor = <code>&quot;wood&quot;</code>
 
20223
</p></dt>
 
20224
<dt> <img src="images/it_seed.png" alt="images/it_seed"><p> <b>it_seed_wood</b> flavor = <code>&quot;wood&quot;</code>
 
20225
</p></dt>
 
20226
<dt> <img src="images/it_seed.png" alt="images/it_seed"><p> <b>it_seed_hay</b> flavor = <code>&quot;hay&quot;</code>
 
20227
</p></dt>
 
20228
<dt> <img src="images/it_seed.png" alt="images/it_seed"><p> <b>it_seed_greenbrown</b> flavor = <code>&quot;greenbrown&quot;</code>
 
20229
</p></dt>
 
20230
<dt> <img src="images/it_seed.png" alt="images/it_seed"><p> <b>it_seed_volcano</b> flavor = <code>&quot;volcano&quot;</code>
 
20231
</p></dt>
 
20232
</dl>
 
20233
 
 
20234
</dd>
 
20235
</dl>
 
20236
 
 
20237
<hr size="6">
 
20238
<a name="it_005fspade"></a>
 
20239
<table cellpadding="1" cellspacing="1" border="0">
 
20240
<tr><td valign="middle" align="left">[<a href="#it_005fseed" title="Previous section in reading order"> &lt; </a>]</td>
 
20241
<td valign="middle" align="left">[<a href="#it_005fspoon" title="Next section in reading order"> &gt; </a>]</td>
 
20242
<td valign="middle" align="left"> &nbsp; </td>
 
20243
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20244
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
20245
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20246
<td valign="middle" align="left"> &nbsp; </td>
 
20247
<td valign="middle" align="left"> &nbsp; </td>
 
20248
<td valign="middle" align="left"> &nbsp; </td>
 
20249
<td valign="middle" align="left"> &nbsp; </td>
 
20250
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20251
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20252
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20253
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20254
</tr></table>
 
20255
<a name="it_005fspade-1"></a>
 
20256
<h3 class="subsection">8.3.27 it_spade</h3>
 
20257
<a name="index-it_005fspade"></a>
 
20258
 
 
20259
<p>A spade activated while being on the grid position of an <a href="#it_005fmeditation">it_meditation</a>
 
20260
will flatten this by one degree and will finally eliminate it completely.
 
20261
</p>
 
20262
<dl compact="compact">
 
20263
<dt> <b>Attributes:</b></dt>
 
20264
<dd><dl compact="compact">
 
20265
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
20266
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
20267
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
20268
</dl>
 
20269
</dd>
 
20270
<dt> <b>Messages:</b> none</dt>
 
20271
<dt> <b>Variants:</b></dt>
 
20272
<dd><dl compact="compact">
 
20273
<dt> <img src="images/it_spade.png" alt="images/it_spade"><p> <b>it_spade</b>
 
20274
</p></dt>
 
20275
</dl>
 
20276
 
 
20277
</dd>
 
20278
</dl>
 
20279
 
 
20280
<hr size="6">
 
20281
<a name="it_005fspoon"></a>
 
20282
<table cellpadding="1" cellspacing="1" border="0">
 
20283
<tr><td valign="middle" align="left">[<a href="#it_005fspade" title="Previous section in reading order"> &lt; </a>]</td>
 
20284
<td valign="middle" align="left">[<a href="#it_005fspring" title="Next section in reading order"> &gt; </a>]</td>
 
20285
<td valign="middle" align="left"> &nbsp; </td>
 
20286
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20287
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
20288
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20289
<td valign="middle" align="left"> &nbsp; </td>
 
20290
<td valign="middle" align="left"> &nbsp; </td>
 
20291
<td valign="middle" align="left"> &nbsp; </td>
 
20292
<td valign="middle" align="left"> &nbsp; </td>
 
20293
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20294
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20295
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20296
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20297
</tr></table>
 
20298
<a name="it_005fspoon-1"></a>
 
20299
<h3 class="subsection">8.3.28 it_spoon</h3>
 
20300
<a name="index-it_005fspoon"></a>
 
20301
 
 
20302
<p>Dropping a spoon is a medieval synonym for dying. The poor people had nothing
 
20303
besides a wooden spoon. They never dropped it. They had to peg out to give away
 
20304
their spoon.
 
20305
</p>
 
20306
<p>Thus an Enigma spoon shatters the actor who drops it. When a player owns
 
20307
multiple actors just the active one gets killed. This is an essential difference
 
20308
to pressing F3, what shatters all actors of all players. When providing a spoon
 
20309
you may sometimes want to revoke the ability to commit a global suicide by
 
20310
pressing F3. You can do this by setting the global variable <a href="#AllowSuicide">AllowSuicide</a>
 
20311
to &lsquo;<samp>false</samp>&rsquo;.
 
20312
</p>
 
20313
<dl compact="compact">
 
20314
<dt> <b>Attributes:</b></dt>
 
20315
<dd><dl compact="compact">
 
20316
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
20317
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
20318
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
20319
</dl>
 
20320
</dd>
 
20321
<dt> <b>Messages:</b> none</dt>
 
20322
<dt> <b>Variants:</b></dt>
 
20323
<dd><dl compact="compact">
 
20324
<dt> <img src="images/it_spoon.png" alt="images/it_spoon"><p> <b>it_spoon</b>
 
20325
</p></dt>
 
20326
</dl>
 
20327
 
 
20328
</dd>
 
20329
</dl>
 
20330
 
 
20331
<hr size="6">
 
20332
<a name="it_005fspring"></a>
 
20333
<table cellpadding="1" cellspacing="1" border="0">
 
20334
<tr><td valign="middle" align="left">[<a href="#it_005fspoon" title="Previous section in reading order"> &lt; </a>]</td>
 
20335
<td valign="middle" align="left">[<a href="#it_005fsurprise" title="Next section in reading order"> &gt; </a>]</td>
 
20336
<td valign="middle" align="left"> &nbsp; </td>
 
20337
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20338
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
20339
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20340
<td valign="middle" align="left"> &nbsp; </td>
 
20341
<td valign="middle" align="left"> &nbsp; </td>
 
20342
<td valign="middle" align="left"> &nbsp; </td>
 
20343
<td valign="middle" align="left"> &nbsp; </td>
 
20344
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20345
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20346
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20347
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20348
</tr></table>
 
20349
<a name="it_005fspring-1"></a>
 
20350
<h3 class="subsection">8.3.29 it_spring</h3>
 
20351
<a name="index-it_005fspring"></a>
 
20352
 
 
20353
<p>Springs let <a href="#Flying-Actors">Flying Actors</a> jump on activation.
 
20354
</p>
 
20355
<p>There are two types of portable springs. A thin one that is kept in the
 
20356
inventory on activation and can thus be used multiple times in sequence. And
 
20357
a thick, condensed one that gets dropped on activation. A static jump
 
20358
facility that can not be picked up by an actor is the <a href="#it_005fspringboard">it_springboard</a>.
 
20359
</p>
 
20360
<dl compact="compact">
 
20361
<dt> <b>Attributes:</b></dt>
 
20362
<dd><dl compact="compact">
 
20363
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
20364
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
20365
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
20366
</dl>
 
20367
</dd>
 
20368
<dt> <b>Messages:</b> none</dt>
 
20369
<dt> <b>Variants:</b></dt>
 
20370
<dd><dl compact="compact">
 
20371
<dt> <img src="images/it_spring.png" alt="images/it_spring"><p> <b>it_spring</b>
 
20372
</p></dt>
 
20373
<dt> <img src="images/it_spring.png" alt="images/it_spring"><p> <b>it_spring_keep</b>
 
20374
</p></dt>
 
20375
<dt> <img src="images/it_spring_2.png" alt="images/it_spring_2"><p> <b>it_spring_drop</b>
 
20376
</p></dt>
 
20377
</dl>
 
20378
</dd>
 
20379
</dl>
 
20380
 
 
20381
<hr size="6">
 
20382
<a name="it_005fsurprise"></a>
 
20383
<table cellpadding="1" cellspacing="1" border="0">
 
20384
<tr><td valign="middle" align="left">[<a href="#it_005fspring" title="Previous section in reading order"> &lt; </a>]</td>
 
20385
<td valign="middle" align="left">[<a href="#it_005fsword" title="Next section in reading order"> &gt; </a>]</td>
 
20386
<td valign="middle" align="left"> &nbsp; </td>
 
20387
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20388
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
20389
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20390
<td valign="middle" align="left"> &nbsp; </td>
 
20391
<td valign="middle" align="left"> &nbsp; </td>
 
20392
<td valign="middle" align="left"> &nbsp; </td>
 
20393
<td valign="middle" align="left"> &nbsp; </td>
 
20394
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20395
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20396
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20397
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20398
</tr></table>
 
20399
<a name="it_005fsurprise-1"></a>
 
20400
<h3 class="subsection">8.3.30 it_surprise</h3>
 
20401
<a name="index-it_005fsurprise"></a>
 
20402
 
 
20403
<p>An item that transforms into a random item as soon as the player drops it.
 
20404
</p>
 
20405
<p>The replacement item is a random one out of a given selection. You can set
 
20406
the &lsquo;<samp>selection</samp>&rsquo; attribute with tokens of strings. Every string needs either
 
20407
to be an <a href="#Object-Kind">Object Kind</a> or a tile key prefixed by an equal sign &lsquo;<samp>=</samp>&rsquo;.
 
20408
</p>
 
20409
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;m&quot;] = {&quot;it_magicwand&quot;}
 
20410
ti[&quot;e&quot;] = {&quot;it_extralife&quot;}
 
20411
ti[&quot;s&quot;] = {&quot;it_surprise&quot;, selection={&quot;it_seed&quot;, &quot;=m&quot;, &quot;=e&quot;, &quot;=e&quot;}}
 
20412
</pre></td></tr></table>
 
20413
 
 
20414
<p>The replacement item is randomly chosen out of the given selection. By listing
 
20415
an item several times you can take influence on the likelihood.
 
20416
</p>
 
20417
<p>The tile declarations referenced by a key may even contain objects besides
 
20418
items. But you should make rare and proper usage of this feature.
 
20419
</p>
 
20420
<p>The surprise item will perform its action after being dropped but before
 
20421
being replaced. You can use this action to modify the selection or to
 
20422
set objects on your own.
 
20423
</p>
 
20424
<p>The surprise item is killed by any replacement item set to the grid position.
 
20425
If your selection does not resolve to an item you may need to add &lsquo;<samp>&quot;it_nil&quot;</samp>&rsquo;
 
20426
to the replacement tile declaration.
 
20427
</p>
 
20428
<dl compact="compact">
 
20429
<dt> <b>Attributes:</b></dt>
 
20430
<dd><dl compact="compact">
 
20431
<dt> <b>selection</b>, &nbsp;&nbsp;<i>values</i>: tokens of item kinds and tile keys; &nbsp;&nbsp;<i>default</i>: <code>{&quot;it_umbrella&quot;, &quot;it_spring_keep&quot;, &quot;it_dynamite&quot;, &quot;it_coffee&quot;, &quot;it_hammer&quot;}</code></dt>
 
20432
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
20433
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
20434
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
20435
</dl>
 
20436
 
 
20437
</dd>
 
20438
<dt> <b>Messages:</b></dt>
 
20439
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
20440
<dt> <b>Variants:</b></dt>
 
20441
<dd><dl compact="compact">
 
20442
<dt> <img src="images/it_surprise.png" alt="images/it_surprise"><p> <b>it_surprise</b>
 
20443
</p></dt>
 
20444
</dl>
 
20445
 
 
20446
</dd>
 
20447
</dl>
 
20448
 
 
20449
<hr size="6">
 
20450
<a name="it_005fsword"></a>
 
20451
<table cellpadding="1" cellspacing="1" border="0">
 
20452
<tr><td valign="middle" align="left">[<a href="#it_005fsurprise" title="Previous section in reading order"> &lt; </a>]</td>
 
20453
<td valign="middle" align="left">[<a href="#it_005fumbrella" title="Next section in reading order"> &gt; </a>]</td>
 
20454
<td valign="middle" align="left"> &nbsp; </td>
 
20455
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20456
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
20457
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20458
<td valign="middle" align="left"> &nbsp; </td>
 
20459
<td valign="middle" align="left"> &nbsp; </td>
 
20460
<td valign="middle" align="left"> &nbsp; </td>
 
20461
<td valign="middle" align="left"> &nbsp; </td>
 
20462
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20463
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20464
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20465
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20466
</tr></table>
 
20467
<a name="it_005fsword-1"></a>
 
20468
<h3 class="subsection">8.3.31 it_sword</h3>
 
20469
<a name="index-it_005fsword"></a>
 
20470
 
 
20471
<p>The sword is used to neutralize <a href="#st_005fknight">st_knight</a>.
 
20472
</p>
 
20473
<p>It transforms into <a href="#it_005fhammer">it_hammer</a> when hit by a laser beam and is itself a
 
20474
laser transformation result of an <a href="#it_005fhammer">it_hammer</a>.
 
20475
</p>
 
20476
<p>A sword that comes into existence on an illuminated grid position will not
 
20477
transform due to already existing laser beams. But it will transform on the first
 
20478
additional beam and on laser beams that are switched off and on again.
 
20479
</p>
 
20480
<p>If another item transforms into a sword this new sword will be immune to
 
20481
further light transformations for a short latency period to avoid unstable
 
20482
flickering of repeated item transformations.
 
20483
</p>
 
20484
<dl compact="compact">
 
20485
<dt> <b>Attributes:</b></dt>
 
20486
<dd><dl compact="compact">
 
20487
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
20488
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
20489
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
20490
</dl>
 
20491
 
 
20492
</dd>
 
20493
<dt> <b>Variants:</b></dt>
 
20494
<dd><dl compact="compact">
 
20495
<dt> <img src="images/it_sword.png" alt="images/it_sword"><p> <b>it_sword</b> A standard sword item.
 
20496
</p></dt>
 
20497
<dt> <img src="images/it_sword.png" alt="images/it_sword"><p> <b>it_sword_new</b> A sword that is immune to light transformations for a short latency period.
 
20498
</p></dt>
 
20499
</dl>
 
20500
 
 
20501
</dd>
 
20502
</dl>
 
20503
 
 
20504
<hr size="6">
 
20505
<a name="it_005fumbrella"></a>
 
20506
<table cellpadding="1" cellspacing="1" border="0">
 
20507
<tr><td valign="middle" align="left">[<a href="#it_005fsword" title="Previous section in reading order"> &lt; </a>]</td>
 
20508
<td valign="middle" align="left">[<a href="#it_005fweight" title="Next section in reading order"> &gt; </a>]</td>
 
20509
<td valign="middle" align="left"> &nbsp; </td>
 
20510
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20511
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
20512
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20513
<td valign="middle" align="left"> &nbsp; </td>
 
20514
<td valign="middle" align="left"> &nbsp; </td>
 
20515
<td valign="middle" align="left"> &nbsp; </td>
 
20516
<td valign="middle" align="left"> &nbsp; </td>
 
20517
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20518
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20519
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20520
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20521
</tr></table>
 
20522
<a name="it_005fumbrella-1"></a>
 
20523
<h3 class="subsection">8.3.32 it_umbrella</h3>
 
20524
<a name="index-it_005fumbrella"></a>
 
20525
 
 
20526
<p>An activated umbrella temporarily protects a marble from <a href="#st_005fdeath">st_death</a>,
 
20527
<a href="#st_005fknight">st_knight</a>, <a href="#st_005fthief">st_thief</a>, <a href="#fl_005fabyss">fl_abyss</a>, <a href="#fl_005fwater">fl_water</a>,
 
20528
<a href="#fl_005fswamp">fl_swamp</a>, <a href="#fl_005fthief">fl_thief</a>, <a href="#it_005fdeath">it_death</a>, <a href="#it_005ftrap">it_trap</a>,
 
20529
broken <a href="#it_005fbottle">it_bottle</a>, explosions, moving stones and all other internal
 
20530
&lsquo;<samp>shatter</samp>&rsquo; and &lsquo;<samp>fall</samp>&rsquo; events; in other words, from all lethal
 
20531
situations and thieves. The protection lasts for 10 seconds. Multiple umbrellas
 
20532
activated in sequence will prolong the protection period.
 
20533
</p>
 
20534
<p>An umbrella gets destroyed when hit by a laser beam and is itself a
 
20535
laser transformation result of an &lsquo;<samp>it_coin_s</samp>&rsquo;(see section <a href="#it_005fcoin">it_coin</a>).
 
20536
</p>
 
20537
<p>An umbrella that comes into existence on an illuminated grid position will not
 
20538
be destroyed due to already existing laser beams. But it will be destroyed on
 
20539
the first additional beam and on laser beams that are switched off and on again.
 
20540
</p>
 
20541
<p>If another item transforms into an umbrella this new umbrella will be immune to
 
20542
light destruction for a short latency period to avoid repeated item
 
20543
transformations.
 
20544
</p>
 
20545
<dl compact="compact">
 
20546
<dt> <b>Attributes:</b></dt>
 
20547
<dd><dl compact="compact">
 
20548
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
20549
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
20550
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
20551
</dl>
 
20552
 
 
20553
</dd>
 
20554
<dt> <b>Variants:</b></dt>
 
20555
<dd><dl compact="compact">
 
20556
<dt> <img src="images/it_umbrella.png" alt="images/it_umbrella"><p> <b>it_umbrella</b> A standard umbrella item.
 
20557
</p></dt>
 
20558
<dt> <img src="images/it_umbrella.png" alt="images/it_umbrella"><p> <b>it_umbrella_new</b> An umbrella that is immune to light destruction for a short latency period.
 
20559
</p></dt>
 
20560
</dl>
 
20561
 
 
20562
</dd>
 
20563
</dl>
 
20564
 
 
20565
<hr size="6">
 
20566
<a name="it_005fweight"></a>
 
20567
<table cellpadding="1" cellspacing="1" border="0">
 
20568
<tr><td valign="middle" align="left">[<a href="#it_005fumbrella" title="Previous section in reading order"> &lt; </a>]</td>
 
20569
<td valign="middle" align="left">[<a href="#it_005fwrench" title="Next section in reading order"> &gt; </a>]</td>
 
20570
<td valign="middle" align="left"> &nbsp; </td>
 
20571
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20572
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
20573
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20574
<td valign="middle" align="left"> &nbsp; </td>
 
20575
<td valign="middle" align="left"> &nbsp; </td>
 
20576
<td valign="middle" align="left"> &nbsp; </td>
 
20577
<td valign="middle" align="left"> &nbsp; </td>
 
20578
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20579
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20580
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20581
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20582
</tr></table>
 
20583
<a name="it_005fweight-1"></a>
 
20584
<h3 class="subsection">8.3.33 it_weight</h3>
 
20585
<a name="index-it_005fweight"></a>
 
20586
 
 
20587
<p>A weight is an item with a mass, that defaults to the mass of 10 <a href="#ac_005fmarble">ac_marble</a>s.
 
20588
When it is picked up it is added to the inventory and increases the mass of
 
20589
all actors owned by the inventory&rsquo;s owner.
 
20590
</p>
 
20591
<p>Weights can easily be picked up, but the player can not drop them. Just indirect
 
20592
methods like hitting <a href="#st_005fmail">st_mail</a>, <a href="#st_005fthief">st_thief</a> or crossing a <a href="#fl_005fthief">fl_thief</a>
 
20593
may remove this item from the inventory.
 
20594
</p>
 
20595
<p>The inventories mass is always updated to the mass of all weights kept in the
 
20596
inventory or contained in any <a href="#it_005fbag">it_bag</a> contained in the inventory.
 
20597
</p>
 
20598
<dl compact="compact">
 
20599
<dt> <b>Attributes:</b> none</dt>
 
20600
<dd><dl compact="compact">
 
20601
<dt> <b>mass</b> &nbsp;&nbsp;<i>values</i>: positive float number; &nbsp;&nbsp;<i>default</i>: <code>+10.0</code></dt>
 
20602
<dd><p>Mass unit is the mass of an <a href="#ac_005fmarble">ac_marble</a>
 
20603
</p></dd>
 
20604
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
20605
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
20606
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
20607
</dl>
 
20608
 
 
20609
</dd>
 
20610
<dt> <b>Messages:</b> none</dt>
 
20611
<dt> <b>Variants:</b></dt>
 
20612
<dd><dl compact="compact">
 
20613
<dt> <img src="images/it_weight.png" alt="images/it_weight"><p> <b>it_weight</b>
 
20614
</p></dt>
 
20615
</dl>
 
20616
 
 
20617
</dd>
 
20618
</dl>
 
20619
 
 
20620
<hr size="6">
 
20621
<a name="it_005fwrench"></a>
 
20622
<table cellpadding="1" cellspacing="1" border="0">
 
20623
<tr><td valign="middle" align="left">[<a href="#it_005fweight" title="Previous section in reading order"> &lt; </a>]</td>
 
20624
<td valign="middle" align="left">[<a href="#it_005fyinyang" title="Next section in reading order"> &gt; </a>]</td>
 
20625
<td valign="middle" align="left"> &nbsp; </td>
 
20626
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20627
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
20628
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20629
<td valign="middle" align="left"> &nbsp; </td>
 
20630
<td valign="middle" align="left"> &nbsp; </td>
 
20631
<td valign="middle" align="left"> &nbsp; </td>
 
20632
<td valign="middle" align="left"> &nbsp; </td>
 
20633
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20634
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20635
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20636
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20637
</tr></table>
 
20638
<a name="it_005fwrench-1"></a>
 
20639
<h3 class="subsection">8.3.34 it_wrench</h3>
 
20640
<a name="index-it_005fwrench"></a>
 
20641
 
 
20642
<p>A wrench wielded as first item in the players inventory causes some objects
 
20643
to react on actor hits. An <a href="#st_005frotator">st_rotator</a> changes its turning direction.
 
20644
A green <a href="#st_005fturnstile">st_turnstile</a> rotates backwards when hit. An <a href="#st_005fwindow">st_window</a>
 
20645
face pushed with an wrench will swap to the opposite side of the stone if
 
20646
possible.
 
20647
</p>
 
20648
<dl compact="compact">
 
20649
<dt> <b>Attributes:</b></dt>
 
20650
<dd><dl compact="compact">
 
20651
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
20652
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
20653
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
20654
</dl>
 
20655
</dd>
 
20656
<dt> <b>Messages:</b> none</dt>
 
20657
<dt> <b>Variants:</b></dt>
 
20658
<dd><dl compact="compact">
 
20659
<dt> <img src="images/it_wrench.png" alt="images/it_wrench"><p> <b>it_wrench</b>
 
20660
</p></dt>
 
20661
</dl>
 
20662
 
 
20663
</dd>
 
20664
</dl>
 
20665
 
 
20666
<hr size="6">
 
20667
<a name="it_005fyinyang"></a>
 
20668
<table cellpadding="1" cellspacing="1" border="0">
 
20669
<tr><td valign="middle" align="left">[<a href="#it_005fwrench" title="Previous section in reading order"> &lt; </a>]</td>
 
20670
<td valign="middle" align="left">[<a href="#Static-Items" title="Next section in reading order"> &gt; </a>]</td>
 
20671
<td valign="middle" align="left"> &nbsp; </td>
 
20672
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20673
<td valign="middle" align="left">[<a href="#Liftable-Items" title="Up section"> Up </a>]</td>
 
20674
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20675
<td valign="middle" align="left"> &nbsp; </td>
 
20676
<td valign="middle" align="left"> &nbsp; </td>
 
20677
<td valign="middle" align="left"> &nbsp; </td>
 
20678
<td valign="middle" align="left"> &nbsp; </td>
 
20679
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20680
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20681
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20682
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20683
</tr></table>
 
20684
<a name="it_005fyinyang-1"></a>
 
20685
<h3 class="subsection">8.3.35 it_yinyang</h3>
 
20686
<a name="index-it_005fyinyang"></a>
 
20687
 
 
20688
<p>A special switch that allows the user to toggle the <a href="#Player-and-Inventory">Player and Inventory</a>
 
20689
between <code>YIN</code> and <code>YANG</code>.
 
20690
</p>
 
20691
<p>On activation this item does not get dropped but remains unchanged in the
 
20692
inventory.
 
20693
</p>
 
20694
<p>If a level has been declared to be a full blown two player network level in
 
20695
<a href="#g_t_003cmodes_003e">&lt;modes&gt;</a>, but is currently played on a single computer both players
 
20696
get automatically an yinyang item added to their inventory to allow all actors
 
20697
to be controlled at every point of time.
 
20698
</p>
 
20699
<dl compact="compact">
 
20700
<dt> <b>Attributes:</b></dt>
 
20701
<dd><dl compact="compact">
 
20702
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
20703
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
20704
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
20705
</dl>
 
20706
</dd>
 
20707
<dt> <b>Messages:</b> none</dt>
 
20708
<dt> <b>Variants:</b></dt>
 
20709
<dd><dl compact="compact">
 
20710
<dt> <img src="images/it_yinyang.png" alt="images/it_yinyang"><p> <b>it_yinyang</b>
 
20711
</p></dt>
 
20712
</dl>
 
20713
 
 
20714
</dd>
 
20715
</dl>
 
20716
 
 
20717
<hr size="6">
 
20718
<a name="Static-Items"></a>
 
20719
<table cellpadding="1" cellspacing="1" border="0">
 
20720
<tr><td valign="middle" align="left">[<a href="#it_005fyinyang" title="Previous section in reading order"> &lt; </a>]</td>
 
20721
<td valign="middle" align="left">[<a href="#it_005fblocker" title="Next section in reading order"> &gt; </a>]</td>
 
20722
<td valign="middle" align="left"> &nbsp; </td>
 
20723
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20724
<td valign="middle" align="left">[<a href="#Item-Objects" title="Up section"> Up </a>]</td>
 
20725
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20726
<td valign="middle" align="left"> &nbsp; </td>
 
20727
<td valign="middle" align="left"> &nbsp; </td>
 
20728
<td valign="middle" align="left"> &nbsp; </td>
 
20729
<td valign="middle" align="left"> &nbsp; </td>
 
20730
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20731
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20732
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20733
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20734
</tr></table>
 
20735
<a name="Static-Items-1"></a>
 
20736
<h2 class="section">8.4 Static Items</h2>
 
20737
 
 
20738
<table class="menu" border="0" cellspacing="0">
 
20739
<tr><td align="left" valign="top"><a href="#it_005fblocker">8.4.1 it_blocker</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Shrinked Blocker Stone
 
20740
</td></tr>
 
20741
<tr><td align="left" valign="top"><a href="#it_005fbomb">8.4.2 it_bomb</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Big Explosive Charge
 
20742
</td></tr>
 
20743
<tr><td align="left" valign="top"><a href="#it_005fburnable">8.4.3 it_burnable</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Fire State
 
20744
</td></tr>
 
20745
<tr><td align="left" valign="top"><a href="#it_005fcrack">8.4.4 it_crack</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Crack in the Floor
 
20746
</td></tr>
 
20747
<tr><td align="left" valign="top"><a href="#it_005fcross">8.4.5 it_cross</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Floor Switch for patient Actors
 
20748
</td></tr>
 
20749
<tr><td align="left" valign="top"><a href="#it_005fdeath">8.4.6 it_death</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Impassable grid blocker
 
20750
</td></tr>
 
20751
<tr><td align="left" valign="top"><a href="#it_005fexplosion">8.4.7 it_explosion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Short Explosion Animation
 
20752
</td></tr>
 
20753
<tr><td align="left" valign="top"><a href="#it_005flandmine">8.4.8 it_landmine</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Buried Explosive
 
20754
</td></tr>
 
20755
<tr><td align="left" valign="top"><a href="#it_005flaserbeam">8.4.9 it_laserbeam</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Laser Beam
 
20756
</td></tr>
 
20757
<tr><td align="left" valign="top"><a href="#it_005fmagnet">8.4.10 it_magnet</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Actor attracting Magnet
 
20758
</td></tr>
 
20759
<tr><td align="left" valign="top"><a href="#it_005fmeditation">8.4.11 it_meditation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Hills and Hollows
 
20760
</td></tr>
 
20761
<tr><td align="left" valign="top"><a href="#it_005fsensor">8.4.12 it_sensor</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Floor Switch for passing Actors
 
20762
</td></tr>
 
20763
<tr><td align="left" valign="top"><a href="#it_005fshogun">8.4.13 it_shogun</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Dot for Shogun Stones
 
20764
</td></tr>
 
20765
<tr><td align="left" valign="top"><a href="#it_005fspringboard">8.4.14 it_springboard</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Static Spring
 
20766
</td></tr>
 
20767
<tr><td align="left" valign="top"><a href="#it_005fsquashed">8.4.15 it_squashed</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Remnant of squashed Fruits
 
20768
</td></tr>
 
20769
<tr><td align="left" valign="top"><a href="#it_005fstrip">8.4.16 it_strip</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Narrow Bridge
 
20770
</td></tr>
 
20771
<tr><td align="left" valign="top"><a href="#it_005ftrap">8.4.17 it_trap</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Invisible, covered Abyss
 
20772
</td></tr>
 
20773
<tr><td align="left" valign="top"><a href="#it_005ftrigger">8.4.18 it_trigger</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Floor Switch for Actors and Stones
 
20774
</td></tr>
 
20775
<tr><td align="left" valign="top"><a href="#it_005fvortex">8.4.19 it_vortex</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Teleport of Marbles
 
20776
</td></tr>
 
20777
<tr><td align="left" valign="top"><a href="#it_005fwormhole">8.4.20 it_wormhole</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Teleport of Actors
 
20778
</td></tr>
 
20779
</table>
 
20780
 
 
20781
 
 
20782
<hr size="6">
 
20783
<a name="it_005fblocker"></a>
 
20784
<table cellpadding="1" cellspacing="1" border="0">
 
20785
<tr><td valign="middle" align="left">[<a href="#Static-Items" title="Previous section in reading order"> &lt; </a>]</td>
 
20786
<td valign="middle" align="left">[<a href="#it_005fbomb" title="Next section in reading order"> &gt; </a>]</td>
 
20787
<td valign="middle" align="left"> &nbsp; </td>
 
20788
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20789
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
20790
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20791
<td valign="middle" align="left"> &nbsp; </td>
 
20792
<td valign="middle" align="left"> &nbsp; </td>
 
20793
<td valign="middle" align="left"> &nbsp; </td>
 
20794
<td valign="middle" align="left"> &nbsp; </td>
 
20795
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20796
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20797
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20798
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20799
</tr></table>
 
20800
<a name="it_005fblocker-1"></a>
 
20801
<h3 class="subsection">8.4.1 it_blocker</h3>
 
20802
<a name="index-it_005fblocker"></a>
 
20803
 
 
20804
<p>A door like object that grows to <a href="#st_005fblocker">st_blocker</a> when an <a href="#st_005fboulder">st_boulder</a>
 
20805
passes. When the boulder did shrink and pass the blocker again it stays in its
 
20806
item like open state until it is passed again by a boulder which causes it to
 
20807
grow again to a blocker stone.
 
20808
</p>
 
20809
<p>It fully supports the messages of any door like object and can be opened and
 
20810
closed by any switch like object. Note that due to the transformation between
 
20811
stone and item during opening and closing you should name the blocker
 
20812
(see section <a href="#name">name</a>) and address the blocker by this name. The complete identity
 
20813
with all attributes including any user attributes will be transferred between
 
20814
stone and item. E.g. <code>{it_switch, target=&quot;myblocker&quot;, action=&quot;toggle&quot;}</code>
 
20815
will open and close a given blocker multiple times.
 
20816
</p>
 
20817
<p>Note that the blocker is the only door object that allows a stone to be pushed
 
20818
through. Just boulders cause the growing. Any other stone keeps the open state.
 
20819
</p>
 
20820
<p>Another unique door feature is the closing of a blocker item caused by a
 
20821
passing actor if the autoclose attribute is set to true.
 
20822
</p>
 
20823
<p>Note that a dropped <a href="#it_005fbrake">it_brake</a> destroys this item.
 
20824
</p>
 
20825
<dl compact="compact">
 
20826
<dt> <b>Attributes:</b></dt>
 
20827
<dd>
 
20828
<dl compact="compact">
 
20829
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>0</code>, <code>1</code>; &nbsp;&nbsp;<i>default</i>: <code>1</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
20830
<dd><p>Use CLOSED and OPEN macros as values. The item represents the open state
 
20831
and will always return state 1. But you can set its state what is equivalent
 
20832
to sending an open message in case of value 1 and a close message in case of
 
20833
value 0.
 
20834
</p>
 
20835
<a name="index-autoclose"></a>
 
20836
</dd>
 
20837
<dt> <b>autoclose</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
20838
<dd><p>A true value causes any actor passing this item to close and grow the blocker.
 
20839
</p>
 
20840
</dd>
 
20841
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
20842
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
20843
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
20844
</dl>
 
20845
 
 
20846
</dd>
 
20847
<dt> <b>Messages:</b></dt>
 
20848
<dd>
 
20849
<dl compact="compact">
 
20850
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
20851
<dd><p>A signal of value 1 sends an open message, a signal of value 0 sends a close
 
20852
message.
 
20853
</p></dd>
 
20854
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
20855
<dd><p>A toggle causes a close message.
 
20856
</p></dd>
 
20857
<dt> <b>close</b> &nbsp;&nbsp;See section <a href="#close">close</a></dt>
 
20858
<dd><p>A close message take immediate effect if the item is not covered by a stone.
 
20859
The item transforms to a new growing <a href="#st_005fblocker">st_blocker</a>. If it is covered by a
 
20860
stone of whatever kind it will be marked as unlocked. The closing process starts
 
20861
when the stone moves away.
 
20862
</p></dd>
 
20863
<dt> <b>open</b> &nbsp;&nbsp;See section <a href="#open">open</a></dt>
 
20864
<dd><p>As the item is open this message takes only effect if it is currently covered
 
20865
by a stone and marked as unlocked. That means it should grow as soon as the
 
20866
stone moves away what happens when an <a href="#st_005fboulder">st_boulder</a> passes an idle blocker
 
20867
item. In this case an open message locks the blocker again to avoid a growing
 
20868
when the stone moves away.
 
20869
</p></dd>
 
20870
</dl>
 
20871
 
 
20872
</dd>
 
20873
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
20874
<dd><p>Sends an action at the moment the blocker reaches the open state. That means
 
20875
an <a href="#st_005fblocker">st_blocker</a> did open and did generate this blocker item as its
 
20876
successor. The value will be <code>true</code> to express the open state.
 
20877
</p>
 
20878
</dd>
 
20879
<dt> <b>Variants:</b></dt>
 
20880
<dd><dl compact="compact">
 
20881
<dt> <img src="images/st_blocker_4.png" alt="images/st_blocker_4"><p> <b>it_blocker</b>
 
20882
</p></dt>
 
20883
<dd><p>A standard blocker item.
 
20884
</p></dd>
 
20885
<dt> <img src="images/st_blocker_4.png" alt="images/st_blocker_4"><p> <b>it_blocker_new</b>
 
20886
</p></dt>
 
20887
<dd><p>A blocker that just finished shrinking. Mainly used internally as the direct
 
20888
successor of an <a href="#st_005fblocker">st_blocker</a>. But it may be useful to generate an initial
 
20889
snapshot of a moving boulder over a blocker line, too. See example levels.
 
20890
</p></dd>
 
20891
</dl>
 
20892
 
 
20893
</dd>
 
20894
</dl>
 
20895
 
 
20896
<hr size="6">
 
20897
<a name="it_005fbomb"></a>
 
20898
<table cellpadding="1" cellspacing="1" border="0">
 
20899
<tr><td valign="middle" align="left">[<a href="#it_005fblocker" title="Previous section in reading order"> &lt; </a>]</td>
 
20900
<td valign="middle" align="left">[<a href="#it_005fburnable" title="Next section in reading order"> &gt; </a>]</td>
 
20901
<td valign="middle" align="left"> &nbsp; </td>
 
20902
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20903
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
20904
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20905
<td valign="middle" align="left"> &nbsp; </td>
 
20906
<td valign="middle" align="left"> &nbsp; </td>
 
20907
<td valign="middle" align="left"> &nbsp; </td>
 
20908
<td valign="middle" align="left"> &nbsp; </td>
 
20909
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20910
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20911
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20912
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20913
</tr></table>
 
20914
<a name="it_005fbomb-1"></a>
 
20915
<h3 class="subsection">8.4.2 it_bomb</h3>
 
20916
<a name="index-it_005fbomb"></a>
 
20917
 
 
20918
<p>A bomb is an explosive that can not be picked up. It ignites on laser light,
 
20919
nearby fire and other nearby explosions as those caused by other <a href="#it_005fbomb">it_bomb</a>s,
 
20920
<a href="#it_005fdynamite">it_dynamite</a>, <a href="#st_005fdispenser">st_dispenser</a> exploding directly above a bomb, or simply
 
20921
by a solid stone being pushed over them (just a few stones like <a href="#st_005fshogun">st_shogun</a>,
 
20922
<a href="#st_005fbox">st_box</a>_hay do not cause bombs to ignite). A falling <a href="#ot_005fcannonball">ot_cannonball</a>
 
20923
lets it explode immediately without prior ignition.
 
20924
</p>
 
20925
<p>On ignition its fuse starts burning. After a short time the bomb explodes
 
20926
causing on the 8 neighboring positions items to ignite and some stones like
 
20927
<a href="#st_005fbreak">st_break</a> to dissolve, too.
 
20928
</p>
 
20929
<p>&lsquo;<samp>BLACK</samp>&rsquo; bombs will cause destructible items on the 4 neighboring positions
 
20930
to be blown away, and dissolves the floor beneath to a <a href="#fl_005fabyss">fl_abyss</a>.
 
20931
</p>
 
20932
<p>&lsquo;<samp>WHITE</samp>&rsquo; bombs will cause destructible items on the 8 neighboring positions
 
20933
to be blown away, and dissolves the floor beneath and the 8 neighboring
 
20934
positions to <a href="#fl_005fabyss">fl_abyss</a>.
 
20935
</p>
 
20936
<p>Bomb items will be added to the inventory when an actor hits a
 
20937
<a href="#st_005fdispenser">st_dispenser</a>_bombblack or <a href="#st_005fdispenser">st_dispenser</a>_bombwhite.
 
20938
</p>
 
20939
<dl compact="compact">
 
20940
<dt> <b>Attributes:</b></dt>
 
20941
<dd><dl compact="compact">
 
20942
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>IDLE</code>, <code>ACTIVE</code>; &nbsp;&nbsp;<i>default</i>: <code>IDLE</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
20943
<dt> <b>color</b> &nbsp;&nbsp;<i>values</i>: <code>BLACK</code>, <code>WHITE</code>; &nbsp;&nbsp;<i>default</i>: <code>BLACK</code></dt>
 
20944
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
20945
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
20946
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
20947
<dd><p>Just bombs in &lsquo;<samp>state</samp>&rsquo; &lsquo;<samp>IDLE</samp>&rsquo; are portable, burning &lsquo;<samp>ACTIVE</samp>&rsquo; ones
 
20948
can not be added to the inventory or an <a href="#it_005fbag">it_bag</a>.
 
20949
</p></dd>
 
20950
</dl>
 
20951
 
 
20952
</dd>
 
20953
<dt> <b>Messages:</b></dt>
 
20954
<dd><dl compact="compact">
 
20955
<dt> <b>explode</b></dt>
 
20956
<dd><p>Direct explosion without burning fuse.
 
20957
</p></dd>
 
20958
<dt> <b>ignite</b></dt>
 
20959
<dd><p>Ignite the fuse.
 
20960
</p></dd>
 
20961
<dt> <b>heat</b></dt>
 
20962
<dd><p>Ignite the fuse.
 
20963
</p></dd>
 
20964
</dl>
 
20965
 
 
20966
</dd>
 
20967
<dt> <b>Variants:</b></dt>
 
20968
<dd><dl compact="compact">
 
20969
<dt> <img src="images/it_bomb.png" alt="images/it_bomb"><p> <b>it_bomb</b>: color = <code>BLACK</code>
 
20970
</p></dt>
 
20971
<dt> <img src="images/it_bomb.png" alt="images/it_bomb"><p> <b>it_bomb_black</b>: color = <code>BLACK</code>
 
20972
</p></dt>
 
20973
<dt> <img src="images/it_bomb_b.png" alt="images/it_bomb_b"><p> <b>it_bomb_white</b>: color = <code>WHITE</code>
 
20974
</p></dt>
 
20975
</dl>
 
20976
 
 
20977
</dd>
 
20978
</dl>
 
20979
 
 
20980
<hr size="6">
 
20981
<a name="it_005fburnable"></a>
 
20982
<table cellpadding="1" cellspacing="1" border="0">
 
20983
<tr><td valign="middle" align="left">[<a href="#it_005fbomb" title="Previous section in reading order"> &lt; </a>]</td>
 
20984
<td valign="middle" align="left">[<a href="#it_005fcrack" title="Next section in reading order"> &gt; </a>]</td>
 
20985
<td valign="middle" align="left"> &nbsp; </td>
 
20986
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
20987
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
20988
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
20989
<td valign="middle" align="left"> &nbsp; </td>
 
20990
<td valign="middle" align="left"> &nbsp; </td>
 
20991
<td valign="middle" align="left"> &nbsp; </td>
 
20992
<td valign="middle" align="left"> &nbsp; </td>
 
20993
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
20994
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
20995
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
20996
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
20997
</tr></table>
 
20998
<a name="it_005fburnable-1"></a>
 
20999
<h3 class="subsection">8.4.3 it_burnable</h3>
 
21000
<a name="index-it_005fburnable"></a>
 
21001
 
 
21002
<p>A legacy item representing the fire state and handling the visible animation.
 
21003
This item is nowadays mainly an internal system item as the <a href="#Fire-Spreading">Fire Spreading</a>
 
21004
with its attributes and messages is mainly handled by the <a href="#Floor-Objects">Floor Objects</a>.
 
21005
But it may be essential for your understanding to be aware of this object in
 
21006
all its variants. You may also need to make use of all variants on level
 
21007
initialization due to the <a href="#Snapshot-Principle">Snapshot Principle</a>.
 
21008
</p>
 
21009
<p>The following variants do exist:
 
21010
</p><ul>
 
21011
<li> &lsquo;<samp>invisible</samp>&rsquo; - allow a floor tile to catch fire, and to ignite on
 
21012
explosions; set the attributes <a href="#burnable">burnable</a> and <a href="#ignitable">ignitable</a> on the floor
 
21013
instead.
 
21014
</li><li> &lsquo;<samp>oil</samp>&rsquo; - is the visible variant of the invisible burnable item.
 
21015
</li><li> &lsquo;<samp>ignited</samp>&rsquo; - carries the starting-animation of fire; send the
 
21016
&lsquo;<samp>setfire</samp>&rsquo; message to a floor or set the floor with attribute
 
21017
&lsquo;<samp>initfire</samp>&rsquo; instead.
 
21018
</li><li> &lsquo;<samp>burning</samp>&rsquo; - carries the animation of burning fire. Use setfire instead.
 
21019
</li><li> &lsquo;<samp>ash</samp>&rsquo; - the unburnable remnant of a fire.
 
21020
</li><li> &lsquo;<samp>fireproof</samp>&rsquo; - the extinguisher foam that protects from fire.
 
21021
</li></ul>
 
21022
 
 
21023
<p>Note that you are not allowed to set or change the &lsquo;<samp>state</samp>&rsquo; of a burnable
 
21024
item. But you can investigate the kind of a burnable.
 
21025
</p>
 
21026
<p>Besides by <a href="#Fire-Spreading">Fire Spreading</a> the user can interact with burnable items with
 
21027
the following other objects:
 
21028
</p><ul>
 
21029
<li> <a href="#it_005fextinguisher">it_extinguisher</a> sprays &lsquo;<samp>fireproof</samp>&rsquo; foam
 
21030
</li><li> <a href="#it_005fbrush">it_brush</a> removes &lsquo;<samp>ash</samp>&rsquo; and &lsquo;<samp>fireproof</samp>&rsquo;
 
21031
</li><li> <a href="#st_005fice">st_ice</a> removes all burnable besides &lsquo;<samp>oil</samp>&rsquo; when being pushed over them
 
21032
</li></ul>
 
21033
 
 
21034
<dl compact="compact">
 
21035
<dt> <b>Attributes:</b></dt>
 
21036
<dd><dl compact="compact">
 
21037
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: integer numbers between 0 and 5; &nbsp;&nbsp;<i>default</i>: <code>0</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code>  &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
21038
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
21039
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
21040
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
21041
</dl>
 
21042
 
 
21043
</dd>
 
21044
<dt> <b>Messages:</b></dt>
 
21045
<dd><dl compact="compact">
 
21046
<dt> <b>ignite</b> &nbsp;&nbsp;See section <a href="#ignite">ignite</a></dt>
 
21047
<dd><p>Ignites the floor beneath.
 
21048
</p></dd>
 
21049
<dt> <b>extinguish</b></dt>
 
21050
<dd><p>Changes burnable immediately to extinguisher foam.
 
21051
</p></dd>
 
21052
</dl>
 
21053
 
 
21054
</dd>
 
21055
<dt> <b>Variants:</b></dt>
 
21056
<dd><dl compact="compact">
 
21057
<dt> <img src="images/fl_white.png" alt="images/fl_white"><p> <b>it_burnable</b>: state = <code>0</code>
 
21058
</p></dt>
 
21059
<dt> <img src="images/fl_white.png" alt="images/fl_white"><p> <b>it_burnable_invisible</b>: state = <code>0</code>
 
21060
</p></dt>
 
21061
<dt> <img src="images/it_burnable_oil.png" alt="images/it_burnable_oil"><p> <b>it_burnable_oil</b>: state = <code>1</code>
 
21062
</p></dt>
 
21063
<dt> <img src="images/fl_white.png" alt="images/fl_white"><p> <b>it_burnable_ignited</b>: state = <code>2</code>
 
21064
</p></dt>
 
21065
<dt> <img src="images/it_burnable_burning.png" alt="images/it_burnable_burning"><p> <b>it_burnable_burning</b>: state = <code>3</code>
 
21066
</p></dt>
 
21067
<dt> <img src="images/it_burnable_ash.png" alt="images/it_burnable_ash"><p> <b>it_burnable_ash</b>: state = <code>4</code>
 
21068
</p></dt>
 
21069
<dt> <img src="images/it_burnable_fireproof.png" alt="images/it_burnable_fireproof"><p> <b>it_burnable_fireproof</b>: state = <code>5</code>
 
21070
</p></dt>
 
21071
</dl>
 
21072
 
 
21073
</dd>
 
21074
</dl>
 
21075
 
 
21076
<hr size="6">
 
21077
<a name="it_005fcrack"></a>
 
21078
<table cellpadding="1" cellspacing="1" border="0">
 
21079
<tr><td valign="middle" align="left">[<a href="#it_005fburnable" title="Previous section in reading order"> &lt; </a>]</td>
 
21080
<td valign="middle" align="left">[<a href="#it_005fcross" title="Next section in reading order"> &gt; </a>]</td>
 
21081
<td valign="middle" align="left"> &nbsp; </td>
 
21082
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
21083
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
21084
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
21085
<td valign="middle" align="left"> &nbsp; </td>
 
21086
<td valign="middle" align="left"> &nbsp; </td>
 
21087
<td valign="middle" align="left"> &nbsp; </td>
 
21088
<td valign="middle" align="left"> &nbsp; </td>
 
21089
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
21090
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
21091
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
21092
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
21093
</tr></table>
 
21094
<a name="it_005fcrack-1"></a>
 
21095
<h3 class="subsection">8.4.4 it_crack</h3>
 
21096
<a name="index-it_005fcrack"></a>
 
21097
 
 
21098
<p>A legacy item that features a crack in the floor. A crack increases every time
 
21099
an actor enters and finally dissolves the floor either into an <a href="#fl_005fabyss">fl_abyss</a>
 
21100
or an <a href="#fl_005fwater">fl_water</a>. The color of the fissures shows the upcoming new floor
 
21101
kind and corresponds to the attribute &lsquo;<samp>flavor</samp>&rsquo;.
 
21102
</p>
 
21103
<p>The progress of the floor destruction is described by the attribute &lsquo;<samp>state</samp>&rsquo;.
 
21104
On every crack event the state advances by one and a cracking &lsquo;<samp>LARGE</samp>&rsquo; crack
 
21105
finally dissolves giving an actor on top just enough time to leave the grid at
 
21106
once. Of course an actor jumping over a crack does not causes change on the
 
21107
crack itself.
 
21108
</p>
 
21109
<p>You can control the crack progress by the two attributes &lsquo;<samp>spreading</samp>&rsquo; and
 
21110
&lsquo;<samp>fragility</samp>&rsquo;. Where as the first attribute describes the likelihood that the
 
21111
crack spreads to a neighboring crack free grid, does the second attribute
 
21112
describe the likelihood that an existing crack advances its state.
 
21113
</p>
 
21114
<p>An actor entering a crack causes the crack itself to advance its state with the
 
21115
given likelihood. A default &lsquo;<samp>abyss</samp>&rsquo; crack causes existing cracks on any of
 
21116
the 4 neighboring grid positions to advance their states, too. But a
 
21117
&lsquo;<samp>water</samp>&rsquo; crack does not advance neighboring cracks. Both do cause a spread
 
21118
with the given likelihood of an invisible crack to any of the 4 neighboring grid
 
21119
positions in case no crack or any other items exists on it.
 
21120
</p>
 
21121
<p>Let us have another look on a spreading crack. An actor entering a crack causes
 
21122
an invisible crack on the next grid. If the actor continues to move to this grid
 
21123
the invisible crack advances to a small visible one, of cause just with the
 
21124
given likelihood. Note that this first and just this first crack progress takes
 
21125
place with the likelihood of spreading, too. That means even if the fragility is
 
21126
zero the invisible crack gets visible.
 
21127
</p>
 
21128
<p>Another special feature is the behaviour of a large crack. An actor entering
 
21129
causes it to dissolve. But this causes neither a spreading nor a crack advancing
 
21130
on neighboring grids. This feature is essential to allow an actor to walk over
 
21131
a path of large cracks, as the next grid may not dissolve on an actor entering
 
21132
the one before.
 
21133
</p>
 
21134
<p>Common attribute patterns besides the default ones are:
 
21135
</p><ul>
 
21136
<li> &lsquo;<samp>spreading=0, fragility=0</samp>&rsquo; - a fake crack that neither spreads nor dissolves
 
21137
</li><li> &lsquo;<samp>spreading=0, fragility=1</samp>&rsquo; - a crack that dissolves and causes neighbor cracks to dissolve, but does not spread to new floors
 
21138
</li></ul>
 
21139
 
 
21140
<p>Both attributes are inherited to new cracks during the process of spreading.
 
21141
If not set they take as default the value of the global attributes. For a maximum
 
21142
control you can set individual floors their own <a href="#fragility-_0028floor_0029">fragility (floor)</a>. These
 
21143
values supersede the global <a href="#Fragility">Fragility</a> default.
 
21144
</p>
 
21145
<p>Indestructible floors like <a href="#fl_005fabyss">fl_abyss</a>, <a href="#fl_005fwater">fl_water</a>, <a href="#fl_005fswamp">fl_swamp</a> will
 
21146
never crack. As any other item cracks do block laser light and prohibit other items to be
 
21147
dropped on the same grid. Nearby fire, explosions and hitting
 
21148
<a href="#ot_005fcannonball">ot_cannonball</a>s will dissolve a crack by another step.
 
21149
</p>
 
21150
<p>On the other hand <a href="#st_005fice">st_ice</a> will putty any existing crack when being pushed
 
21151
over it.
 
21152
</p>
 
21153
<dl compact="compact">
 
21154
<dt> <b>Attributes:</b></dt>
 
21155
<dd>
 
21156
<dl compact="compact">
 
21157
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>INVISIBLE</code>, <code>SMALL</code>, <code>MEDIUM</code>, <code>LARGE</code>; &nbsp;&nbsp;<i>default</i>: <code>SMALL</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
21158
<dt> <b>flavor</b>, &nbsp;&nbsp;<i>values</i>: <code>&quot;abyss&quot;</code>, <code>&quot;water&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;abyss&quot;</code></dt>
 
21159
<dt> <b>spreading</b> &nbsp;&nbsp;<i>values</i>: positive number between 0.0 and 1.0; &nbsp;&nbsp;<i>default</i>: <code>0.5</code>, &nbsp;&nbsp;See section <a href="#CrackSpreading">CrackSpreading</a></dt>
 
21160
<dt> <b>fragility</b> &nbsp;&nbsp;<i>values</i>: positive number between 0.0 and 1.0; &nbsp;&nbsp;<i>default</i>: <code>1.0</code>, &nbsp;&nbsp;See section <a href="#Fragility">Fragility</a></dt>
 
21161
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
21162
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
21163
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
21164
</dl>
 
21165
 
 
21166
</dd>
 
21167
<dt> <b>Messages:</b></dt>
 
21168
<dd>
 
21169
<dl compact="compact">
 
21170
<dt> <b>crack</b></dt>
 
21171
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
21172
<dt> <b>ignite</b> &nbsp;&nbsp;See section <a href="#ignite">ignite</a></dt>
 
21173
<dt> <b>heat</b> &nbsp;&nbsp;See section <a href="#heat">heat</a></dt>
 
21174
</dl>
 
21175
 
 
21176
</dd>
 
21177
<dt> <b>Variants:</b></dt>
 
21178
<dd><table>
 
21179
<tr><td width="8%"><img src="images/it_crack_abyss.png" alt="images/it_crack_abyss"></td><td width="42%"><b>it_crack</b>: state = <code>SMALL</code>, flavor = <code>&quot;abyss&quot;</code></td><td width="8%"><img src="images/it_crack_water.png" alt="images/it_crack_water"></td><td width="42%"><b>it_crack</b>: state = <code>SMALL</code>, flavor = <code>&quot;water&quot;</code></td></tr>
 
21180
<tr><td width="8%"><img src="images/fl_white.png" alt="images/fl_white"></td><td width="42%"><b>it_crack_i</b>: state = <code>INVISIBLE</code>, flavor = <code>&quot;abyss&quot;</code></td><td width="8%"><img src="images/fl_white.png" alt="images/fl_white"></td><td width="42%"><b>it_crack_i</b>: state = <code>INVISIBLE</code>, flavor = <code>&quot;water&quot;</code></td></tr>
 
21181
<tr><td width="8%"><img src="images/it_crack_abyss.png" alt="images/it_crack_abyss"></td><td width="42%"><b>it_crack_s</b>: state = <code>SMALL</code>, flavor = <code>&quot;abyss&quot;</code></td><td width="8%"><img src="images/it_crack_water.png" alt="images/it_crack_water"></td><td width="42%"><b>it_crack_s</b>: state = <code>SMALL</code>, flavor = <code>&quot;water&quot;</code></td></tr>
 
21182
<tr><td width="8%"><img src="images/it_crack_abyss_2.png" alt="images/it_crack_abyss_2"></td><td width="42%"><b>it_crack_m</b>: state = <code>MEDIUM</code>, flavor = <code>&quot;abyss&quot;</code></td><td width="8%"><img src="images/it_crack_water_2.png" alt="images/it_crack_water_2"></td><td width="42%"><b>it_crack_m</b>: state = <code>MEDIUM</code>, flavor = <code>&quot;water&quot;</code></td></tr>
 
21183
<tr><td width="8%"><img src="images/it_crack_abyss_3.png" alt="images/it_crack_abyss_3"></td><td width="42%"><b>it_crack_l</b>: state = <code>LARGE</code>, flavor = <code>&quot;abyss&quot;</code></td><td width="8%"><img src="images/it_crack_water_3.png" alt="images/it_crack_water_3"></td><td width="42%"><b>it_crack_l</b>: state = <code>LARGE</code>, flavor = <code>&quot;water&quot;</code></td></tr>
 
21184
</table>
 
21185
 
 
21186
</dd>
 
21187
</dl>
 
21188
 
 
21189
<hr size="6">
 
21190
<a name="it_005fcross"></a>
 
21191
<table cellpadding="1" cellspacing="1" border="0">
 
21192
<tr><td valign="middle" align="left">[<a href="#it_005fcrack" title="Previous section in reading order"> &lt; </a>]</td>
 
21193
<td valign="middle" align="left">[<a href="#it_005fdeath" title="Next section in reading order"> &gt; </a>]</td>
 
21194
<td valign="middle" align="left"> &nbsp; </td>
 
21195
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
21196
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
21197
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
21198
<td valign="middle" align="left"> &nbsp; </td>
 
21199
<td valign="middle" align="left"> &nbsp; </td>
 
21200
<td valign="middle" align="left"> &nbsp; </td>
 
21201
<td valign="middle" align="left"> &nbsp; </td>
 
21202
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
21203
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
21204
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
21205
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
21206
</tr></table>
 
21207
<a name="it_005fcross-1"></a>
 
21208
<h3 class="subsection">8.4.5 it_cross</h3>
 
21209
<a name="index-it_005fcross"></a>
 
21210
 
 
21211
<p>An eye-catching cross spot that can detect actors staying on it for a given
 
21212
time. When an actor remains on top of the cross for the given &lsquo;<samp>interval</samp>&rsquo;
 
21213
without any other actor leaving or passing the cross grid the cross will perform
 
21214
its action. Similar, but instant sensors for actors are <a href="#it_005fsensor">it_sensor</a> and
 
21215
<a href="#it_005ftrigger">it_trigger</a>
 
21216
</p>
 
21217
<p>A cross can be drawn with an <a href="#it_005fpencil">it_pencil</a> and it can be removed with an
 
21218
<a href="#it_005fbrush">it_brush</a>.
 
21219
</p>
 
21220
<p>An <a href="#st_005flightpassenger">st_lightpassenger</a> moving onto a cross item will switch off.
 
21221
</p>
 
21222
<dl compact="compact">
 
21223
<dt> <b>Attributes:</b></dt>
 
21224
<dd>
 
21225
<dl compact="compact">
 
21226
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>0</code>, <code>1</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
21227
<dd><p>The current state - &lsquo;<samp>0</samp>&rsquo; for the last event being an actor leaving the cross,
 
21228
&lsquo;<samp>1</samp>&rsquo; for the last event being an actor entering the cross.
 
21229
</p>
 
21230
</dd>
 
21231
<dt> <b>interval</b> &nbsp;&nbsp;<i>values</i>: positive number; &nbsp;&nbsp;<i>default</i>: <code>10.0</code></dt>
 
21232
<dd><p>Number of seconds that the actor must stay on the sensor to cause an action.
 
21233
</p></dd>
 
21234
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
21235
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
21236
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
21237
</dl>
 
21238
 
 
21239
</dd>
 
21240
<dt> <b>Messages:</b> none</dt>
 
21241
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
21242
<dt> <b>Variants:</b></dt>
 
21243
<dd><dl compact="compact">
 
21244
<dt> <img src="images/it_cross.png" alt="images/it_cross"><p> <b>it_cross</b>
 
21245
</p></dt>
 
21246
</dl>
 
21247
</dd>
 
21248
</dl>
 
21249
 
 
21250
<hr size="6">
 
21251
<a name="it_005fdeath"></a>
 
21252
<table cellpadding="1" cellspacing="1" border="0">
 
21253
<tr><td valign="middle" align="left">[<a href="#it_005fcross" title="Previous section in reading order"> &lt; </a>]</td>
 
21254
<td valign="middle" align="left">[<a href="#it_005fexplosion" title="Next section in reading order"> &gt; </a>]</td>
 
21255
<td valign="middle" align="left"> &nbsp; </td>
 
21256
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
21257
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
21258
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
21259
<td valign="middle" align="left"> &nbsp; </td>
 
21260
<td valign="middle" align="left"> &nbsp; </td>
 
21261
<td valign="middle" align="left"> &nbsp; </td>
 
21262
<td valign="middle" align="left"> &nbsp; </td>
 
21263
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
21264
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
21265
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
21266
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
21267
</tr></table>
 
21268
<a name="it_005fdeath-1"></a>
 
21269
<h3 class="subsection">8.4.6 it_death</h3>
 
21270
<a name="index-it_005fdeath"></a>
 
21271
 
 
21272
<p>This item shatters any marble that tries to pass the grid. Even jumping marbles
 
21273
will be shattered. Just marbles protected by an activated <a href="#it_005fumbrella">it_umbrella</a> can
 
21274
pass without taking harm. Apart from that an &lsquo;<samp>it_death</samp>&rsquo; barrier can only be
 
21275
passed by walking around the complete barrier or by warping through an
 
21276
<a href="#it_005fvortex">it_vortex</a>, an <a href="#it_005fwormhole">it_wormhole</a> or by means of an <a href="#it_005fring">it_ring</a>.
 
21277
</p>
 
21278
<p>The death item is the most secure barrier object. Comparable objects are
 
21279
<a href="#it_005fbottle">it_bottle</a>_broken, <a href="#fl_005fabyss">fl_abyss</a>, <a href="#fl_005fwater">fl_water</a>, <a href="#it_005ftrap">it_trap</a> or simply
 
21280
any solid wall of stones. Usually these alternatives should be favored. The
 
21281
death item should mainly be used when all other alternatives are too insecure.
 
21282
</p>
 
21283
<dl compact="compact">
 
21284
<dt> <b>Attributes:</b></dt>
 
21285
<dd><dl compact="compact">
 
21286
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
21287
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
21288
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
21289
</dl>
 
21290
 
 
21291
</dd>
 
21292
<dt> <b>Messages:</b> none</dt>
 
21293
<dt> <b>Variants:</b></dt>
 
21294
<dd><dl compact="compact">
 
21295
<dt> <img src="images/it_death.png" alt="images/it_death"><p> <b>it_death</b>
 
21296
</p></dt>
 
21297
</dl>
 
21298
 
 
21299
</dd>
 
21300
</dl>
 
21301
 
 
21302
<hr size="6">
 
21303
<a name="it_005fexplosion"></a>
 
21304
<table cellpadding="1" cellspacing="1" border="0">
 
21305
<tr><td valign="middle" align="left">[<a href="#it_005fdeath" title="Previous section in reading order"> &lt; </a>]</td>
 
21306
<td valign="middle" align="left">[<a href="#it_005flandmine" title="Next section in reading order"> &gt; </a>]</td>
 
21307
<td valign="middle" align="left"> &nbsp; </td>
 
21308
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
21309
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
21310
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
21311
<td valign="middle" align="left"> &nbsp; </td>
 
21312
<td valign="middle" align="left"> &nbsp; </td>
 
21313
<td valign="middle" align="left"> &nbsp; </td>
 
21314
<td valign="middle" align="left"> &nbsp; </td>
 
21315
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
21316
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
21317
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
21318
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
21319
</tr></table>
 
21320
<a name="it_005fexplosion-1"></a>
 
21321
<h3 class="subsection">8.4.7 it_explosion</h3>
 
21322
<a name="index-it_005fexplosion"></a>
 
21323
 
 
21324
<p>An intermediate short living system item representing and visualizing an
 
21325
explosion. There are very few acceptable usages of this item besides the
 
21326
internal setting due to explosions of <a href="#it_005fbomb">it_bomb</a>, <a href="#it_005fdynamite">it_dynamite</a>,
 
21327
<a href="#it_005flandmine">it_landmine</a> and <a href="#ot_005fcannonball">ot_cannonball</a>.
 
21328
</p>
 
21329
<p>All explosions do shatter ball like actors.
 
21330
</p>
 
21331
<p>The following variants do exist:
 
21332
</p><ul>
 
21333
<li> &lsquo;<samp>nil</samp>&rsquo; - no remnants.
 
21334
</li><li> &lsquo;<samp>hollow</samp>&rsquo; - leave an <a href="#it_005fmeditation">it_meditation</a>_hollow.
 
21335
</li><li> &lsquo;<samp>crack</samp>&rsquo; - make an <a href="#it_005fcrack">it_crack</a>_water.
 
21336
</li><li> &lsquo;<samp>debris</samp>&rsquo; - dissolve the floor to <a href="#SubSoil">SubSoil</a>, which defaults to <a href="#fl_005fabyss">fl_abyss</a>
 
21337
</li></ul>
 
21338
 
 
21339
<p>Note that you are not allowed to set or change the &lsquo;<samp>state</samp>&rsquo; of an explosion
 
21340
item. But you can investigate the kind of an explosion.
 
21341
</p>
 
21342
<dl compact="compact">
 
21343
<dt> <b>Attributes:</b></dt>
 
21344
<dd><dl compact="compact">
 
21345
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: integer numbers between 0 and 3; &nbsp;&nbsp;<i>default</i>: <code>0</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code>  &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
21346
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
21347
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
21348
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
21349
</dl>
 
21350
 
 
21351
</dd>
 
21352
<dt> <b>Messages:</b> none</dt>
 
21353
<dt> <b>Variants:</b></dt>
 
21354
<dd><dl compact="compact">
 
21355
<dt> <img src="images/it_explosion.png" alt="images/it_explosion"><p> <b>it_explosion</b>: state = <code>0</code>
 
21356
</p></dt>
 
21357
<dt> <img src="images/it_explosion.png" alt="images/it_explosion"><p> <b>it_explosion_nil</b>: state = <code>0</code>
 
21358
</p></dt>
 
21359
<dt> <img src="images/it_explosion.png" alt="images/it_explosion"><p> <b>it_explosion_hollow</b>: state = <code>1</code>
 
21360
</p></dt>
 
21361
<dt> <img src="images/it_explosion.png" alt="images/it_explosion"><p> <b>it_explosion_crack</b>: state = <code>2</code>
 
21362
</p></dt>
 
21363
<dt> <img src="images/it_explosion.png" alt="images/it_explosion"><p> <b>it_explosion_debris</b>: state = <code>3</code>
 
21364
</p></dt>
 
21365
</dl>
 
21366
 
 
21367
</dd>
 
21368
</dl>
 
21369
 
 
21370
<hr size="6">
 
21371
<a name="it_005flandmine"></a>
 
21372
<table cellpadding="1" cellspacing="1" border="0">
 
21373
<tr><td valign="middle" align="left">[<a href="#it_005fexplosion" title="Previous section in reading order"> &lt; </a>]</td>
 
21374
<td valign="middle" align="left">[<a href="#it_005flaserbeam" title="Next section in reading order"> &gt; </a>]</td>
 
21375
<td valign="middle" align="left"> &nbsp; </td>
 
21376
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
21377
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
21378
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
21379
<td valign="middle" align="left"> &nbsp; </td>
 
21380
<td valign="middle" align="left"> &nbsp; </td>
 
21381
<td valign="middle" align="left"> &nbsp; </td>
 
21382
<td valign="middle" align="left"> &nbsp; </td>
 
21383
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
21384
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
21385
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
21386
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
21387
</tr></table>
 
21388
<a name="it_005flandmine-1"></a>
 
21389
<h3 class="subsection">8.4.8 it_landmine</h3>
 
21390
<a name="index-it_005flandmine"></a>
 
21391
 
 
21392
<p>A static item that explodes on actors stepping onto its critical center part and
 
21393
on stones being pushed onto the mine.
 
21394
</p>
 
21395
<p>The landmine explodes shattering nearby marbles on the same grid and leaves an
 
21396
hollow <a href="#it_005fmeditation">it_meditation</a> behind.
 
21397
</p>
 
21398
<p>Actors can jump over a landmine and pass carefully between two adjacent
 
21399
landmines without activating the mines. Landmines do neither react on nearby
 
21400
explosions, nor fire, nor laserbeams.
 
21401
</p>
 
21402
<dl compact="compact">
 
21403
<dt> <b>Attributes:</b></dt>
 
21404
<dd><dl compact="compact">
 
21405
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
21406
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
21407
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
21408
</dl>
 
21409
 
 
21410
</dd>
 
21411
<dt> <b>Messages:</b> none</dt>
 
21412
<dt> <b>Action:</b> none</dt>
 
21413
<dt> <b>Variants:</b></dt>
 
21414
<dd><dl compact="compact">
 
21415
<dt> <img src="images/it_landmine.png" alt="images/it_landmine"><p> <b>it_landmine</b>
 
21416
</p></dt>
 
21417
</dl>
 
21418
 
 
21419
</dd>
 
21420
</dl>
 
21421
 
 
21422
<hr size="6">
 
21423
<a name="it_005flaserbeam"></a>
 
21424
<table cellpadding="1" cellspacing="1" border="0">
 
21425
<tr><td valign="middle" align="left">[<a href="#it_005flandmine" title="Previous section in reading order"> &lt; </a>]</td>
 
21426
<td valign="middle" align="left">[<a href="#it_005fmagnet" title="Next section in reading order"> &gt; </a>]</td>
 
21427
<td valign="middle" align="left"> &nbsp; </td>
 
21428
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
21429
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
21430
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
21431
<td valign="middle" align="left"> &nbsp; </td>
 
21432
<td valign="middle" align="left"> &nbsp; </td>
 
21433
<td valign="middle" align="left"> &nbsp; </td>
 
21434
<td valign="middle" align="left"> &nbsp; </td>
 
21435
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
21436
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
21437
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
21438
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
21439
</tr></table>
 
21440
<a name="it_005flaserbeam-1"></a>
 
21441
<h3 class="subsection">8.4.9 it_laserbeam</h3>
 
21442
<a name="index-it_005flaserbeam"></a>
 
21443
 
 
21444
<p>A beam of laser light. This item is caused by an <a href="#st_005flaser">st_laser</a> that is switched
 
21445
on. The beam is automatically calculated and the items are set by the engine.
 
21446
You can not set laser beam items on your own. But you may detect a beam as an
 
21447
item being located on the item layer. You are free to replace a laser beam item
 
21448
by another item. This causes automatically a recalculation of the laser light.
 
21449
</p>
 
21450
<dl compact="compact">
 
21451
<dt> <b>Attributes:</b></dt>
 
21452
<dd><dl compact="compact">
 
21453
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
21454
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
21455
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
21456
</dl>
 
21457
</dd>
 
21458
<dt> <b>Messages:</b> none</dt>
 
21459
<dt> <b>Variants:</b></dt>
 
21460
<dd><dl compact="compact">
 
21461
<dt> <img src="images/it_laser.png" alt="images/it_laser"><p> <b>it_laserbeam</b> can not be instantiated by levels
 
21462
</p></dt>
 
21463
</dl>
 
21464
</dd>
 
21465
</dl>
 
21466
 
 
21467
<hr size="6">
 
21468
<a name="it_005fmagnet"></a>
 
21469
<table cellpadding="1" cellspacing="1" border="0">
 
21470
<tr><td valign="middle" align="left">[<a href="#it_005flaserbeam" title="Previous section in reading order"> &lt; </a>]</td>
 
21471
<td valign="middle" align="left">[<a href="#it_005fmeditation" title="Next section in reading order"> &gt; </a>]</td>
 
21472
<td valign="middle" align="left"> &nbsp; </td>
 
21473
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
21474
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
21475
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
21476
<td valign="middle" align="left"> &nbsp; </td>
 
21477
<td valign="middle" align="left"> &nbsp; </td>
 
21478
<td valign="middle" align="left"> &nbsp; </td>
 
21479
<td valign="middle" align="left"> &nbsp; </td>
 
21480
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
21481
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
21482
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
21483
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
21484
</tr></table>
 
21485
<a name="it_005fmagnet-1"></a>
 
21486
<h3 class="subsection">8.4.10 it_magnet</h3>
 
21487
<a name="index-it_005fmagnet"></a>
 
21488
 
 
21489
<p>Attracts or repels actors in its &lsquo;<samp>range</samp>&rsquo; with a force proportional to the
 
21490
&lsquo;<samp>strength</samp>&rsquo; and the inverse of the squared distance. A magnet can be
 
21491
switched &lsquo;<samp>ON</samp>&rsquo; and &lsquo;<samp>OFF</samp>&rsquo;.
 
21492
</p>
 
21493
<p>Note that no forces are applied to actors at a distance smaller than 0.05 grids
 
21494
to avoid extraordinary large forces.
 
21495
</p>
 
21496
<dl compact="compact">
 
21497
<dt> <b>Attributes:</b></dt>
 
21498
<dd>
 
21499
<dl compact="compact">
 
21500
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>OFF</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
21501
<dd><p>The current magnet state - &lsquo;<samp>ON</samp>&rsquo; for an active magnet, &lsquo;<samp>OFF</samp>&rsquo; for an
 
21502
inactive magnet.
 
21503
</p>
 
21504
</dd>
 
21505
<dt> <b>range</b> &nbsp;&nbsp;<i>values</i>: float number greater or equal 0; &nbsp;&nbsp;<i>default</i>: <code>10.0</code> &nbsp;&nbsp;See section <a href="#MagnetRange">MagnetRange</a></dt>
 
21506
<dd><p>The distance up to which the magnet applies forces to actors.
 
21507
</p>
 
21508
</dd>
 
21509
<dt> <b>strength</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>+30.0</code> &nbsp;&nbsp;See section <a href="#MagnetStrength">MagnetStrength</a></dt>
 
21510
<dd><p>A scalar factor for magnet forces. Positive numbers are attracting forces
 
21511
where as negative numbers are repelling forces.
 
21512
</p></dd>
 
21513
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
21514
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
21515
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
21516
</dl>
 
21517
 
 
21518
</dd>
 
21519
<dt> <b>Messages:</b></dt>
 
21520
<dd>
 
21521
<dl compact="compact">
 
21522
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
21523
<dd><p>A signal of value 1 switches the magnet on, a value of 0 switches the magnet off.
 
21524
</p></dd>
 
21525
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
21526
<dd><p>A toggle causes a change in the magnet activity state.
 
21527
</p></dd>
 
21528
<dt> <b>on</b> &nbsp;&nbsp;See section <a href="#on">on</a></dt>
 
21529
<dd><p>Switches the magnet on.
 
21530
</p></dd>
 
21531
<dt> <b>off</b> &nbsp;&nbsp;See section <a href="#off">off</a></dt>
 
21532
<dd><p>Switches the magnet off.
 
21533
</p></dd>
 
21534
</dl>
 
21535
 
 
21536
</dd>
 
21537
<dt> <b>Action:</b></dt>
 
21538
<dd><p>none
 
21539
</p>
 
21540
</dd>
 
21541
<dt> <b>Variants:</b></dt>
 
21542
<dd><dl compact="compact">
 
21543
<dt> <img src="images/it_magnet_off.png" alt="images/it_magnet_off"><p> <b>it_magnet</b> state = &lsquo;<samp>OFF</samp>&rsquo;.
 
21544
</p></dt>
 
21545
<dt> <img src="images/it_magnet_on.png" alt="images/it_magnet_on"><p> <b>it_magnet_on</b> state = &lsquo;<samp>ON</samp>&rsquo;.
 
21546
</p></dt>
 
21547
<dt> <img src="images/it_magnet_off.png" alt="images/it_magnet_off"><p> <b>it_magnet_off</b> state = &lsquo;<samp>OFF</samp>&rsquo;.
 
21548
</p></dt>
 
21549
</dl>
 
21550
 
 
21551
</dd>
 
21552
</dl>
 
21553
 
 
21554
<hr size="6">
 
21555
<a name="it_005fmeditation"></a>
 
21556
<table cellpadding="1" cellspacing="1" border="0">
 
21557
<tr><td valign="middle" align="left">[<a href="#it_005fmagnet" title="Previous section in reading order"> &lt; </a>]</td>
 
21558
<td valign="middle" align="left">[<a href="#it_005fsensor" title="Next section in reading order"> &gt; </a>]</td>
 
21559
<td valign="middle" align="left"> &nbsp; </td>
 
21560
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
21561
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
21562
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
21563
<td valign="middle" align="left"> &nbsp; </td>
 
21564
<td valign="middle" align="left"> &nbsp; </td>
 
21565
<td valign="middle" align="left"> &nbsp; </td>
 
21566
<td valign="middle" align="left"> &nbsp; </td>
 
21567
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
21568
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
21569
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
21570
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
21571
</tr></table>
 
21572
<a name="it_005fmeditation-1"></a>
 
21573
<h3 class="subsection">8.4.11 it_meditation</h3>
 
21574
<a name="index-it_005fmeditation"></a>
 
21575
 
 
21576
<p>Meditation items are small round areas of flatness imperfection. All actors will
 
21577
experience the slope forces that can be modified by the global scalar factor
 
21578
<a href="#MeditationStrength">MeditationStrength</a>. There are different shapes of meditation items that
 
21579
are named according to their shape: <code>MEDITATION_CALDERA</code>,
 
21580
<code>MEDITATION_HOLLOW</code>, <code>MEDITATION_DENT</code>, <code>MEDITATION_BUMP</code>,
 
21581
<code>MEDITATION_HILL</code>, <code>MEDITATION_VOLCANO</code>.
 
21582
</p>
 
21583
<p>Of special interest are <a href="#ac_005fpearl">ac_pearl</a>s resting on a meditation item. They are
 
21584
counted as meditating after staying continuously for one second within the round
 
21585
area of the item. One of the two <a href="#Ending-Conditions">Ending Conditions</a> of the game is that all
 
21586
meditation marbles come to rest on mediation items.
 
21587
</p>
 
21588
<p>As meditation items can dynamically be generated during the game by exploding
 
21589
<a href="#it_005flandmine">it_landmine</a> or <a href="#it_005fdynamite">it_dynamite</a> it may be necessary for an author to
 
21590
mark those meditation items that are required to be filled with meditation
 
21591
marbles. You do this by setting the &lsquo;<samp>essential</samp>&rsquo; attribute to <code>true</code>.
 
21592
Please make rare and obvious usage of this attribute, as the player can not
 
21593
distinguish essential from not essential meditation items by their images.
 
21594
</p>
 
21595
<p>Meditation items can transform into other shapes by various means.
 
21596
</p>
 
21597
<p>First a user can push a solid stone over a meditation item or activate an
 
21598
<a href="#it_005fspade">it_spade</a> on it. Both actions flatten the meditation, either
 
21599
<code>MEDITATION_VOLCANO</code> -&gt; <code>MEDITATION_HILL</code> -&gt; <code>MEDITATION_BUMP</code>
 
21600
-&gt; <code>it_nil</code> or <code>MEDITATION_CALDERA</code> -&gt; <code>MEDITATION_HOLLOW</code> -&gt;
 
21601
<code>MEDITATION_DENT</code> -&gt; <code>it_nil</code>.
 
21602
</p>
 
21603
<p>Secondly you can send a <code>&quot;flip&quot;</code> message to a meditation item which
 
21604
transforms hollow like items into their hill like counterparts and vice versa:
 
21605
<code>MEDITATION_VOLCANO</code> &lt;-&gt; <code>MEDITATION_CALDERA</code>, <code>MEDITATION_HILL</code>
 
21606
&lt;-&gt; <code>MEDITATION_HOLLOW</code>, <code>MEDITATION_BUMP</code> &lt;-&gt; <code>MEDITATION_DENT</code>.
 
21607
</p>
 
21608
<p>Third a <code>&quot;signal&quot;</code> message flips on a <code>1</code> value all meditations to
 
21609
their hill like counterparts, keeping hill like meditations unchanged, and on a
 
21610
<code>0</code> value to their hollow like counterparts, keeping hollow like meditations
 
21611
unchanged.
 
21612
</p>
 
21613
<p>A fourth message is <code>&quot;toggle&quot;</code>. It transforms <code>MEDITATION_HOLLOW</code> &lt;-&gt;
 
21614
<code>MEDITATION_VOLCANO</code>, <code>MEDITATION_CALDERA</code> &lt;-&gt; <code>MEDITATION_HILL</code>,
 
21615
<code>MEDITATION_BUMP</code> &lt;-&gt; <code>MEDITATION_DENT</code>.
 
21616
</p>
 
21617
<p>Of course you can change the state by setting the attribute anytime in any sequence
 
21618
you like. Essentialness is kept on shape transformations and mediation actor
 
21619
counting is updated and continues.
 
21620
</p>
 
21621
<dl compact="compact">
 
21622
<dt> <b>Attributes:</b></dt>
 
21623
<dd><dl compact="compact">
 
21624
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>MEDITATION_CALDERA</code>, <code>MEDITATION_HOLLOW</code>, <code>MEDITATION_DENT</code>, <code>MEDITATION_BUMP</code>, <code>MEDITATION_HILL</code>, <code>MEDITATION_VOLCANO</code>; &nbsp;&nbsp;<i>default</i>: <code>MEDITATION_HOLLOW</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
21625
<dd><p>The shape of the meditation.
 
21626
</p></dd>
 
21627
<dt> <b>essential</b> &nbsp;&nbsp;<i>values</i>: <code>DISPENSABLE</code>, <code>INDISPENSABLE</code>; &nbsp;&nbsp;<i>default</i>: <code>DISPENSABLE</code></dt>
 
21628
<dd><p>Essentialness of being filled with a meditation marble to fulfill the
 
21629
<a href="#Ending-Conditions">Ending Conditions</a>.
 
21630
</p></dd>
 
21631
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: <code>nil</code> &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
21632
<dd><p>Deviating friction that defaults to floor friction.
 
21633
</p></dd>
 
21634
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: <code>nil</code> &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
21635
<dd><p>Deviating adhesion that defaults to floor adhesion.
 
21636
</p></dd>
 
21637
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
21638
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
21639
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
21640
</dl>
 
21641
 
 
21642
</dd>
 
21643
<dt> <b>Messages:</b></dt>
 
21644
<dd><dl compact="compact">
 
21645
<dt> <b>flip</b></dt>
 
21646
<dd><p>Shape transformation. See text above.
 
21647
</p></dd>
 
21648
<dt> <b>shovel</b></dt>
 
21649
<dd><p>Shape transformation like an activated <a href="#it_005fspade">it_spade</a>. See text above.
 
21650
</p></dd>
 
21651
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
21652
<dd><p>Shape transformation. See text above.
 
21653
</p></dd>
 
21654
<dt> <b>toggle</b></dt>
 
21655
<dd><p>Shape transformation. See text above.
 
21656
</p></dd>
 
21657
</dl>
 
21658
 
 
21659
</dd>
 
21660
<dt> <b>Variants:</b></dt>
 
21661
<dd><dl compact="compact">
 
21662
<dt> <img src="images/it_meditation_hollow.png" alt="images/it_meditation_hollow"><p> <b>it_meditation</b> state = <code>MEDITATION_HOLLOW</code>
 
21663
</p></dt>
 
21664
<dt> <img src="images/it_meditation_caldera.png" alt="images/it_meditation_caldera"><p> <b>it_meditation_caldera</b> state = <code>MEDITATION_CALDERA</code>
 
21665
</p></dt>
 
21666
<dt> <img src="images/it_meditation_hollow.png" alt="images/it_meditation_hollow"><p> <b>it_meditation_hollow</b> state = <code>MEDITATION_HOLLOW</code>
 
21667
</p></dt>
 
21668
<dt> <img src="images/it_meditation_dent.png" alt="images/it_meditation_dent"><p> <b>it_meditation_dent</b> state = <code>MEDITATION_DENT</code>
 
21669
</p></dt>
 
21670
<dt> <img src="images/it_meditation_bump.png" alt="images/it_meditation_bump"><p> <b>it_meditation_bump</b> state = <code>MEDITATION_BUMP</code>
 
21671
</p></dt>
 
21672
<dt> <img src="images/it_meditation_hill.png" alt="images/it_meditation_hill"><p> <b>it_meditation_hill</b> state = <code>MEDITATION_HILL</code>
 
21673
</p></dt>
 
21674
<dt> <img src="images/it_meditation_volcano.png" alt="images/it_meditation_volcano"><p> <b>it_meditation_volcano</b> state = <code>MEDITATION_VOLCANO</code>
 
21675
</p></dt>
 
21676
</dl>
 
21677
 
 
21678
</dd>
 
21679
</dl>
 
21680
 
 
21681
<hr size="6">
 
21682
<a name="it_005fsensor"></a>
 
21683
<table cellpadding="1" cellspacing="1" border="0">
 
21684
<tr><td valign="middle" align="left">[<a href="#it_005fmeditation" title="Previous section in reading order"> &lt; </a>]</td>
 
21685
<td valign="middle" align="left">[<a href="#it_005fshogun" title="Next section in reading order"> &gt; </a>]</td>
 
21686
<td valign="middle" align="left"> &nbsp; </td>
 
21687
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
21688
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
21689
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
21690
<td valign="middle" align="left"> &nbsp; </td>
 
21691
<td valign="middle" align="left"> &nbsp; </td>
 
21692
<td valign="middle" align="left"> &nbsp; </td>
 
21693
<td valign="middle" align="left"> &nbsp; </td>
 
21694
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
21695
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
21696
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
21697
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
21698
</tr></table>
 
21699
<a name="it_005fsensor-1"></a>
 
21700
<h3 class="subsection">8.4.12 it_sensor</h3>
 
21701
<a name="index-it_005fsensor"></a>
 
21702
 
 
21703
<p>The sensor item is a switch on top of a floor that reacts on actors passing it.
 
21704
It performs actions on actors either entering or exiting the sensors grid
 
21705
depending on its attribute &lsquo;<samp>exit</samp>&rsquo;. It will send the causing actor as action
 
21706
value, which evaluates like &lsquo;<samp>true</samp>&rsquo; in Lua, but nevertheless the <a href="#inverse">inverse</a>
 
21707
attribute can be used to send an action value of &lsquo;<samp>false</samp>&rsquo; instead.
 
21708
</p>
 
21709
<p>Any actors passing the grid, either on the floor or jumping over it will be
 
21710
detected.
 
21711
</p>
 
21712
<p>Sensors do not cause any noise. Visible sensors will nevertheless flash on
 
21713
passing actors. You can make the trigger invisible by setting its attribute.
 
21714
Be aware that the user will still notice that actors cannot drop items onto the
 
21715
same grid position.
 
21716
</p>
 
21717
<p>The level author can configure <a href="#it_005fglasses">it_glasses</a> by addition of
 
21718
&lsquo;<samp>SPOT_SENSOR</samp>&rsquo; to show invisible sensor items. An actor with such an
 
21719
<a href="#it_005fglasses">it_glasses</a> in its inventory will be able to spot invisible sensor items.
 
21720
With the global attribute <a href="#ExtralifeGlasses">ExtralifeGlasses</a> even glasses generated by laser
 
21721
lighting an <a href="#it_005fextralife">it_extralife</a> can be configured not to show invisible sensor
 
21722
items.
 
21723
</p>
 
21724
<p>Alternative objects that react on actors are <a href="#it_005ftrigger">it_trigger</a> and
 
21725
<a href="#it_005fcross">it_cross</a>.
 
21726
</p>
 
21727
<dl compact="compact">
 
21728
<dt> <b>Attributes:</b></dt>
 
21729
<dd><dl compact="compact">
 
21730
<dt> <b>invisible</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
21731
<dd><p>An invisible sensor is totally transparent. But the user may notice it, as actors
 
21732
cannot drop items onto the same grid position.
 
21733
</p></dd>
 
21734
<dt> <b>exit</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
21735
<dd><p>React either on an actor exiting or entering the grid.
 
21736
</p></dd>
 
21737
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
21738
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
21739
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
21740
</dl>
 
21741
 
 
21742
</dd>
 
21743
<dt> <b>Messages:</b> none</dt>
 
21744
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
21745
<dt> <b>Variants:</b></dt>
 
21746
<dd><dl compact="compact">
 
21747
<dt> <img src="images/it_sensor.png" alt="images/it_sensor"><p> <b>it_sensor</b>: exit = <code>false</code>
 
21748
</p></dt>
 
21749
<dt> <img src="images/it_sensor_exit.png" alt="images/it_sensor_exit"><p> <b>it_sensor_exit</b>: exit = <code>true</code>
 
21750
</p></dt>
 
21751
</dl>
 
21752
 
 
21753
</dd>
 
21754
</dl>
 
21755
 
 
21756
 
 
21757
<hr size="6">
 
21758
<a name="it_005fshogun"></a>
 
21759
<table cellpadding="1" cellspacing="1" border="0">
 
21760
<tr><td valign="middle" align="left">[<a href="#it_005fsensor" title="Previous section in reading order"> &lt; </a>]</td>
 
21761
<td valign="middle" align="left">[<a href="#it_005fspringboard" title="Next section in reading order"> &gt; </a>]</td>
 
21762
<td valign="middle" align="left"> &nbsp; </td>
 
21763
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
21764
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
21765
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
21766
<td valign="middle" align="left"> &nbsp; </td>
 
21767
<td valign="middle" align="left"> &nbsp; </td>
 
21768
<td valign="middle" align="left"> &nbsp; </td>
 
21769
<td valign="middle" align="left"> &nbsp; </td>
 
21770
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
21771
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
21772
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
21773
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
21774
</tr></table>
 
21775
<a name="it_005fshogun-1"></a>
 
21776
<h3 class="subsection">8.4.13 it_shogun</h3>
 
21777
<a name="index-it_005fshogun"></a>
 
21778
 
 
21779
<p>A dot like, blue animated sensor item for <a href="#st_005fshogun">st_shogun</a> stones. The dot comes
 
21780
in three variations matching the different hole sizes of shogun stones.
 
21781
</p>
 
21782
<p>Shogun dots detect stacks of <a href="#st_005fshogun">st_shogun</a> that contain all variations from
 
21783
small up to the size of the dot. Thus the small dot requires just a single small
 
21784
shogun stone, the middle sized dot requires a stack of a small shogun beneath
 
21785
a middle sized shogun stone, whereas the large dot requires a stack of all three
 
21786
shogun stones on top.
 
21787
</p>
 
21788
<p>There is no way to set the state of a dot manually. But the state can
 
21789
nevertheless be read. At initialization a dot with a matching shogun stack on
 
21790
top will start in state &lsquo;<samp>ON</samp>&rsquo; without sending actions due to the
 
21791
<a href="#Snapshot-Principle">Snapshot Principle</a>.
 
21792
</p>
 
21793
<p>Note that a dot is freezable by an <a href="#st_005fice">st_ice</a> and can thus be relocated to
 
21794
another position.
 
21795
</p>
 
21796
<dl compact="compact">
 
21797
<dt> <b>Attributes:</b></dt>
 
21798
<dd><dl compact="compact">
 
21799
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>OFF</code>, <code>ON</code>; &nbsp;&nbsp;<i>default</i>: <code>OFF</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code>  &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
21800
<dd><p>The current state of the dot - &lsquo;<samp>ON</samp>&rsquo; for a matching <a href="#st_005fshogun">st_shogun</a> stack
 
21801
on top, &lsquo;<samp>OFF</samp>&rsquo; otherwise.
 
21802
</p></dd>
 
21803
<dt> <b>flavor</b>, &nbsp;&nbsp;<i>values</i>: <code>&quot;s&quot;</code>, <code>&quot;m&quot;</code>, <code>&quot;l&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;s&quot;</code></dt>
 
21804
<dd><p>A string describing the hole size. <code>&quot;s&quot;</code> for a small hole, <code>&quot;m&quot;</code> for
 
21805
a medium hole, <code>&quot;l&quot;</code> for a large hole.
 
21806
</p>
 
21807
</dd>
 
21808
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
21809
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
21810
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
21811
</dl>
 
21812
 
 
21813
</dd>
 
21814
<dt> <b>Messages:</b> none</dt>
 
21815
<dt> <b>Action:</b>  &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
21816
<dt> <b>Variants:</b></dt>
 
21817
<dd><dl compact="compact">
 
21818
<dt> <img src="images/it_shogun_s.png" alt="images/it_shogun_s"><p> <b>it_shogun</b>: flavor = <code>&quot;s&quot;</code>
 
21819
</p></dt>
 
21820
<dt> <img src="images/it_shogun_s.png" alt="images/it_shogun_s"><p> <b>it_shogun_s</b>: flavor = <code>&quot;s&quot;</code>
 
21821
</p></dt>
 
21822
<dt> <img src="images/it_shogun_m.png" alt="images/it_shogun_m"><p> <b>it_shogun_m</b>: flavor = <code>&quot;m&quot;</code>
 
21823
</p></dt>
 
21824
<dt> <img src="images/it_shogun_l.png" alt="images/it_shogun_l"><p> <b>it_shogun_l</b>: flavor = <code>&quot;l&quot;</code>
 
21825
</p></dt>
 
21826
</dl>
 
21827
 
 
21828
</dd>
 
21829
</dl>
 
21830
 
 
21831
<hr size="6">
 
21832
<a name="it_005fspringboard"></a>
 
21833
<table cellpadding="1" cellspacing="1" border="0">
 
21834
<tr><td valign="middle" align="left">[<a href="#it_005fshogun" title="Previous section in reading order"> &lt; </a>]</td>
 
21835
<td valign="middle" align="left">[<a href="#it_005fsquashed" title="Next section in reading order"> &gt; </a>]</td>
 
21836
<td valign="middle" align="left"> &nbsp; </td>
 
21837
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
21838
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
21839
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
21840
<td valign="middle" align="left"> &nbsp; </td>
 
21841
<td valign="middle" align="left"> &nbsp; </td>
 
21842
<td valign="middle" align="left"> &nbsp; </td>
 
21843
<td valign="middle" align="left"> &nbsp; </td>
 
21844
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
21845
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
21846
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
21847
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
21848
</tr></table>
 
21849
<a name="it_005fspringboard-1"></a>
 
21850
<h3 class="subsection">8.4.14 it_springboard</h3>
 
21851
<a name="index-it_005fspringboard"></a>
 
21852
 
 
21853
<p>A static jump facility that lets <a href="#Flying-Actors">Flying Actors</a> jump on passing its center
 
21854
square. A springboard can catapult any number of actors anytime with an idle
 
21855
reloading time after an activation.
 
21856
</p>
 
21857
<p>A springboard positioned on top of a floor can not be picked up. But nevertheless
 
21858
as being portable, it can be added to the initial inventory, to an <a href="#it_005fbag">it_bag</a>
 
21859
or can be picked up as a result of a <a href="#it_005fsurprise">it_surprise</a>.
 
21860
</p>
 
21861
<p>Another catapulting, but liftable item is <a href="#it_005fspring">it_spring</a>.
 
21862
</p>
 
21863
<dl compact="compact">
 
21864
<dt> <b>Attributes:</b></dt>
 
21865
<dd><dl compact="compact">
 
21866
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
21867
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
21868
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
21869
</dl>
 
21870
</dd>
 
21871
<dt> <b>Messages:</b> none</dt>
 
21872
<dt> <b>Variants:</b></dt>
 
21873
<dd><dl compact="compact">
 
21874
<dt> <img src="images/it_springboard.png" alt="images/it_springboard"><p> <b>it_springboard</b>
 
21875
</p></dt>
 
21876
</dl>
 
21877
 
 
21878
</dd>
 
21879
</dl>
 
21880
 
 
21881
<hr size="6">
 
21882
<a name="it_005fsquashed"></a>
 
21883
<table cellpadding="1" cellspacing="1" border="0">
 
21884
<tr><td valign="middle" align="left">[<a href="#it_005fspringboard" title="Previous section in reading order"> &lt; </a>]</td>
 
21885
<td valign="middle" align="left">[<a href="#it_005fstrip" title="Next section in reading order"> &gt; </a>]</td>
 
21886
<td valign="middle" align="left"> &nbsp; </td>
 
21887
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
21888
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
21889
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
21890
<td valign="middle" align="left"> &nbsp; </td>
 
21891
<td valign="middle" align="left"> &nbsp; </td>
 
21892
<td valign="middle" align="left"> &nbsp; </td>
 
21893
<td valign="middle" align="left"> &nbsp; </td>
 
21894
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
21895
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
21896
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
21897
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
21898
</tr></table>
 
21899
<a name="it_005fsquashed-1"></a>
 
21900
<h3 class="subsection">8.4.15 it_squashed</h3>
 
21901
<a name="index-it_005fsquashed"></a>
 
21902
 
 
21903
<p>The remnants of fruits like <a href="#it_005fcherry">it_cherry</a> and <a href="#it_005fbanana">it_banana</a> after pushing
 
21904
a stone over it.
 
21905
</p>
 
21906
<p>The squashed remnants are scarcely visible on some floor types. The player can
 
21907
not pick them up. But it can be wiped away by application of an <a href="#it_005fbrush">it_brush</a>,
 
21908
by a nearby exploding <a href="#it_005fbomb">it_bomb</a> or by an <a href="#st_005fice">st_ice</a> being pushed over it.
 
21909
</p>
 
21910
<dl compact="compact">
 
21911
<dt> <b>Attributes:</b></dt>
 
21912
<dd><dl compact="compact">
 
21913
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
21914
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
21915
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
21916
</dl>
 
21917
</dd>
 
21918
<dt> <b>Messages:</b> none</dt>
 
21919
<dt> <b>Variants:</b></dt>
 
21920
<dd><dl compact="compact">
 
21921
<dt> <img src="images/it_squashed.png" alt="images/it_squashed"><p> <b>it_squashed</b>
 
21922
</p></dt>
 
21923
</dl>
 
21924
</dd>
 
21925
</dl>
 
21926
 
 
21927
<hr size="6">
 
21928
<a name="it_005fstrip"></a>
 
21929
<table cellpadding="1" cellspacing="1" border="0">
 
21930
<tr><td valign="middle" align="left">[<a href="#it_005fsquashed" title="Previous section in reading order"> &lt; </a>]</td>
 
21931
<td valign="middle" align="left">[<a href="#it_005ftrap" title="Next section in reading order"> &gt; </a>]</td>
 
21932
<td valign="middle" align="left"> &nbsp; </td>
 
21933
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
21934
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
21935
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
21936
<td valign="middle" align="left"> &nbsp; </td>
 
21937
<td valign="middle" align="left"> &nbsp; </td>
 
21938
<td valign="middle" align="left"> &nbsp; </td>
 
21939
<td valign="middle" align="left"> &nbsp; </td>
 
21940
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
21941
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
21942
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
21943
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
21944
</tr></table>
 
21945
<a name="it_005fstrip-1"></a>
 
21946
<h3 class="subsection">8.4.16 it_strip</h3>
 
21947
<a name="index-it_005fstrip"></a>
 
21948
 
 
21949
<p>These items cover a small strip of the ground below them and provide a narrow
 
21950
bridge for the marble to safely pass <a href="#fl_005fabyss">fl_abyss</a>, <a href="#fl_005fswamp">fl_swamp</a>,
 
21951
<a href="#fl_005fwater">fl_water</a>, or any other floor.
 
21952
</p>
 
21953
<p>A strip connects zero, what is just a central small unconnected square, or up
 
21954
to 4 neighboring floor grids. A marble can pass from one connected floor to
 
21955
another connected floor via the strip.
 
21956
</p>
 
21957
<p>Any stone on a directly neighboring grid can be touched or hit by a large marble
 
21958
and prevents it from falling off the strip on this side. Small marbles can not
 
21959
touch neighboring stones and will not be protected from falling.
 
21960
</p>
 
21961
<p>Per default an actor on a covering strip is exposed to the same friction and
 
21962
adhesion as on the floor below. But strips can provide its own deviating
 
21963
values for these factors.
 
21964
</p>
 
21965
<dl compact="compact">
 
21966
<dt> <b>Attributes:</b></dt>
 
21967
<dd><dl compact="compact">
 
21968
<dt> <b>connections</b>, &nbsp;&nbsp;<i>values</i>: string; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
21969
<dd><p>Describes the connections to the neighbor grids. The string is a substring of
 
21970
<code>&quot;nesw&quot;</code> listing the existing connections. The sequence of the sides, north,
 
21971
east, south, west, is guaranteed on read access but arbitrary on write access.
 
21972
</p></dd>
 
21973
<dt> <b>friction</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: <code>nil</code> &nbsp;&nbsp;See section <a href="#friction">friction</a></dt>
 
21974
<dd><p>Deviating friction that defaults to floor friction.
 
21975
</p></dd>
 
21976
<dt> <b>adhesion</b>, &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: <code>nil</code> &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
21977
<dd><p>Deviating adhesion that defaults to floor adhesion.
 
21978
</p></dd>
 
21979
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
21980
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
21981
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
21982
</dl>
 
21983
 
 
21984
</dd>
 
21985
<dt> <b>Variants:</b></dt>
 
21986
<dd><table>
 
21987
<tr><td width="8%"><img src="images/it_strip.png" alt="images/it_strip"></td><td width="42%"><b>it_strip</b>: connections = <code>&quot;&quot;</code></td><td width="8%"><img src="images/it_strip_2.png" alt="images/it_strip_2"></td><td width="42%"><b>it_strip_w</b>: connections = <code>&quot;w&quot;</code></td></tr>
 
21988
<tr><td width="8%"><img src="images/it_strip_3.png" alt="images/it_strip_3"></td><td width="42%"><b>it_strip_s</b>: connections = <code>&quot;s&quot;</code></td><td width="8%"><img src="images/it_strip_4.png" alt="images/it_strip_4"></td><td width="42%"><b>it_strip_sw</b>: connections = <code>&quot;sw&quot;</code></td></tr>
 
21989
<tr><td width="8%"><img src="images/it_strip_b.png" alt="images/it_strip_b"></td><td width="42%"><b>it_strip_e</b>: connections = <code>&quot;e&quot;</code></td><td width="8%"><img src="images/it_strip_b2.png" alt="images/it_strip_b2"></td><td width="42%"><b>it_strip_ew</b>: connections = <code>&quot;ew&quot;</code></td></tr>
 
21990
<tr><td width="8%"><img src="images/it_strip_b3.png" alt="images/it_strip_b3"></td><td width="42%"><b>it_strip_es</b>: connections = <code>&quot;es&quot;</code></td><td width="8%"><img src="images/it_strip_b4.png" alt="images/it_strip_b4"></td><td width="42%"><b>it_strip_esw</b>: connections = <code>&quot;esw&quot;</code></td></tr>
 
21991
<tr><td width="8%"><img src="images/it_strip_c.png" alt="images/it_strip_c"></td><td width="42%"><b>it_strip_n</b>: connections = <code>&quot;n&quot;</code></td><td width="8%"><img src="images/it_strip_c2.png" alt="images/it_strip_c2"></td><td width="42%"><b>it_strip_nw</b>: connections = <code>&quot;nw&quot;</code></td></tr>
 
21992
<tr><td width="8%"><img src="images/it_strip_c3.png" alt="images/it_strip_c3"></td><td width="42%"><b>it_strip_ns</b>: connections = <code>&quot;ns&quot;</code></td><td width="8%"><img src="images/it_strip_c4.png" alt="images/it_strip_c4"></td><td width="42%"><b>it_strip_nsw</b>: connections = <code>&quot;nsw&quot;</code></td></tr>
 
21993
<tr><td width="8%"><img src="images/it_strip_d.png" alt="images/it_strip_d"></td><td width="42%"><b>it_strip_ne</b>: connections = <code>&quot;ne&quot;</code></td><td width="8%"><img src="images/it_strip_d2.png" alt="images/it_strip_d2"></td><td width="42%"><b>it_strip_new</b>: connections = <code>&quot;new&quot;</code></td></tr>
 
21994
<tr><td width="8%"><img src="images/it_strip_d3.png" alt="images/it_strip_d3"></td><td width="42%"><b>it_strip_nes</b>: connections = <code>&quot;nes&quot;</code></td><td width="8%"><img src="images/it_strip_d4.png" alt="images/it_strip_d4"></td><td width="42%"><b>it_strip_nesw</b>: connections = <code>&quot;nesw&quot;</code></td></tr>
 
21995
</table>
 
21996
</dd>
 
21997
</dl>
 
21998
 
 
21999
<hr size="6">
 
22000
<a name="it_005ftrap"></a>
 
22001
<table cellpadding="1" cellspacing="1" border="0">
 
22002
<tr><td valign="middle" align="left">[<a href="#it_005fstrip" title="Previous section in reading order"> &lt; </a>]</td>
 
22003
<td valign="middle" align="left">[<a href="#it_005ftrigger" title="Next section in reading order"> &gt; </a>]</td>
 
22004
<td valign="middle" align="left"> &nbsp; </td>
 
22005
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22006
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
22007
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22008
<td valign="middle" align="left"> &nbsp; </td>
 
22009
<td valign="middle" align="left"> &nbsp; </td>
 
22010
<td valign="middle" align="left"> &nbsp; </td>
 
22011
<td valign="middle" align="left"> &nbsp; </td>
 
22012
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22013
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22014
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22015
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22016
</tr></table>
 
22017
<a name="it_005ftrap-1"></a>
 
22018
<h3 class="subsection">8.4.17 it_trap</h3>
 
22019
<a name="index-it_005ftrap"></a>
 
22020
 
 
22021
<p>A classical trap that is camouflaged by a floor image. Any marble stepping onto
 
22022
this trap will break the trap and fall into the trap&rsquo;s abyss. But marbles can
 
22023
jump unharmed over a trap. Movable stones can be pushed over a trap without any
 
22024
reaction.
 
22025
</p>
 
22026
<p>Any marble falling into a trap causes it to break and to become visible by the
 
22027
remnants of the trap. The trap can be opened by messages, too.
 
22028
</p>
 
22029
<p>The level author can configure <a href="#it_005fglasses">it_glasses</a> by addition of
 
22030
&lsquo;<samp>SPOT_TRAP</samp>&rsquo; to show invisible traps. An actor with such an
 
22031
<a href="#it_005fglasses">it_glasses</a> in its inventory will be able to spot invisible traps.
 
22032
With the global attribute <a href="#ExtralifeGlasses">ExtralifeGlasses</a> even glasses generated by laser
 
22033
lighting an <a href="#it_005fextralife">it_extralife</a> can be configured to show invisible traps.
 
22034
</p>
 
22035
<dl compact="compact">
 
22036
<dt> <b>Attributes:</b></dt>
 
22037
<dd>
 
22038
<dl compact="compact">
 
22039
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>CLOSED</code>, <code>OPEN</code>; &nbsp;&nbsp;<i>default</i>: <code>CLOSED</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
22040
<dd><p>A &lsquo;<samp>CLOSED</samp>&rsquo; trap is intact and invisible, an &lsquo;<samp>OPEN</samp>&rsquo; trap is broken and
 
22041
visible.
 
22042
</p></dd>
 
22043
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
22044
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
22045
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
22046
</dl>
 
22047
</dd>
 
22048
<dt> <b>Messages:</b></dt>
 
22049
<dd>
 
22050
<dl compact="compact">
 
22051
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
22052
<dd><p>Opens the trap on value &lsquo;<samp>1</samp>&rsquo;
 
22053
</p></dd>
 
22054
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
22055
<dd><p>Opens the trap.
 
22056
</p></dd>
 
22057
<dt> <b>open</b> &nbsp;&nbsp;See section <a href="#open">open</a></dt>
 
22058
<dd><p>Opens the trap.
 
22059
</p></dd>
 
22060
</dl>
 
22061
</dd>
 
22062
<dt> <b>Variants:</b></dt>
 
22063
<dd><dl compact="compact">
 
22064
<dt> <img src="images/it_trap.png" alt="images/it_trap"><p> <b>it_trap</b>
 
22065
</p></dt>
 
22066
</dl>
 
22067
 
 
22068
</dd>
 
22069
</dl>
 
22070
 
 
22071
<hr size="6">
 
22072
<a name="it_005ftrigger"></a>
 
22073
<table cellpadding="1" cellspacing="1" border="0">
 
22074
<tr><td valign="middle" align="left">[<a href="#it_005ftrap" title="Previous section in reading order"> &lt; </a>]</td>
 
22075
<td valign="middle" align="left">[<a href="#it_005fvortex" title="Next section in reading order"> &gt; </a>]</td>
 
22076
<td valign="middle" align="left"> &nbsp; </td>
 
22077
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22078
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
22079
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22080
<td valign="middle" align="left"> &nbsp; </td>
 
22081
<td valign="middle" align="left"> &nbsp; </td>
 
22082
<td valign="middle" align="left"> &nbsp; </td>
 
22083
<td valign="middle" align="left"> &nbsp; </td>
 
22084
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22085
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22086
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22087
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22088
</tr></table>
 
22089
<a name="it_005ftrigger-1"></a>
 
22090
<h3 class="subsection">8.4.18 it_trigger</h3>
 
22091
<a name="index-it_005ftrigger"></a>
 
22092
 
 
22093
<p>The trigger item is a switch on top of a floor that reacts on actors and
 
22094
stones on top of it that may press it. It performs actions when it is initially
 
22095
pressed and again when it releases after the last object left it. A pressed
 
22096
trigger is in state &lsquo;<samp>ON</samp>&rsquo; and will send an action value of &lsquo;<samp>true</samp>&rsquo;, a
 
22097
released trigger is in state &lsquo;<samp>OFF</samp>&rsquo; and will send an action value of
 
22098
&lsquo;<samp>false</samp>&rsquo;.
 
22099
</p>
 
22100
<p>Only actors moving on the floor will press triggers. An actor jumping over a
 
22101
trigger will not press it. An actor jumping on a trigger will release and press
 
22102
it again.
 
22103
</p>
 
22104
<p>Just solid stones will press the trigger when pushed onto it. Floating, hollow
 
22105
stones will generally not press the trigger with the exception of the hollow,
 
22106
central puzzle stone (see section <a href="#st_005fpuzzle">st_puzzle</a>).
 
22107
</p>
 
22108
<p>There is no way to set the state of a trigger manually. But the state can
 
22109
nevertheless be read. At initialization a trigger that is pressed by objects
 
22110
will start in state &lsquo;<samp>ON</samp>&rsquo; without sending actions due to the
 
22111
<a href="#Snapshot-Principle">Snapshot Principle</a>.
 
22112
</p>
 
22113
<p>You can make the trigger invisible by setting its attribute. Be aware that it
 
22114
still produces its click-sounds and the user will notice that actors cannot drop
 
22115
items onto the same grid position.
 
22116
</p>
 
22117
<p>Alternative items that react just on actors are <a href="#it_005fsensor">it_sensor</a> and
 
22118
<a href="#it_005fcross">it_cross</a>. Another switch that reacts on the actors mass and stones are
 
22119
the <a href="#fl_005fscales">fl_scales</a>.
 
22120
</p>
 
22121
<dl compact="compact">
 
22122
<dt> <b>Attributes:</b></dt>
 
22123
<dd>
 
22124
<dl compact="compact">
 
22125
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
22126
<dd><p>The current switch state - &lsquo;<samp>ON</samp>&rsquo; for a pressed trigger, &lsquo;<samp>OFF</samp>&rsquo; for a
 
22127
released trigger.
 
22128
</p>
 
22129
</dd>
 
22130
<dt> <b>invisible</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
22131
<dd><p>An invisible trigger is totally transparent. But the user may notice it, as actors
 
22132
cannot drop items onto the same grid position.
 
22133
</p>
 
22134
</dd>
 
22135
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
22136
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
22137
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
22138
</dl>
 
22139
 
 
22140
</dd>
 
22141
<dt> <b>Messages:</b> none</dt>
 
22142
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
22143
<dt> <b>Variants:</b></dt>
 
22144
<dd><dl compact="compact">
 
22145
<dt> <img src="images/it_trigger.png" alt="images/it_trigger"><p> <b>it_trigger</b>
 
22146
</p></dt>
 
22147
</dl>
 
22148
 
 
22149
</dd>
 
22150
</dl>
 
22151
 
 
22152
 
 
22153
<hr size="6">
 
22154
<a name="it_005fvortex"></a>
 
22155
<table cellpadding="1" cellspacing="1" border="0">
 
22156
<tr><td valign="middle" align="left">[<a href="#it_005ftrigger" title="Previous section in reading order"> &lt; </a>]</td>
 
22157
<td valign="middle" align="left">[<a href="#it_005fwormhole" title="Next section in reading order"> &gt; </a>]</td>
 
22158
<td valign="middle" align="left"> &nbsp; </td>
 
22159
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22160
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
22161
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22162
<td valign="middle" align="left"> &nbsp; </td>
 
22163
<td valign="middle" align="left"> &nbsp; </td>
 
22164
<td valign="middle" align="left"> &nbsp; </td>
 
22165
<td valign="middle" align="left"> &nbsp; </td>
 
22166
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22167
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22168
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22169
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22170
</tr></table>
 
22171
<a name="it_005fvortex-1"></a>
 
22172
<h3 class="subsection">8.4.19 it_vortex</h3>
 
22173
<a name="index-it_005fvortex"></a>
 
22174
 
 
22175
<p>Teleports <a href="#ac_005fmarble">ac_marble</a> and <a href="#ac_005fpearl">ac_pearl</a> to a given &lsquo;<samp>destination</samp>&rsquo;.
 
22176
Unlike <a href="#it_005fwormhole">it_wormhole</a> it does not teleport other <a href="#Actors">Actors</a>.
 
22177
</p>
 
22178
<p>In the simplest case, a vortex is connected to a single destination given by
 
22179
an object or a position. If the destination is not blocked by a stone the
 
22180
actor will be teleported to the destination.
 
22181
</p>
 
22182
<p>If multiple destination addresses are given, the actor will be teleported
 
22183
to the single destinations in sequence. Blocked destinations are indicated by
 
22184
sparkles. Finally the actor exists on the first unblocked destination. If no
 
22185
unblocked destination exists the marble exists at the starting vortex. A level
 
22186
author can write nice puzzle which require the user to block destinations to
 
22187
reach the final destination of a vortex.
 
22188
</p>
 
22189
<p>Vortices can be &lsquo;<samp>OPEN</samp>&rsquo; or &lsquo;<samp>CLOSED</samp>&rsquo;. Of course an actor can enter just
 
22190
an open vortex. Closed vortices at the destination are opened automatically.
 
22191
By default such vortices remain open. By usage of the attribute &lsquo;<samp>autoclose</samp>&rsquo;
 
22192
you can configure a vortex to close after an actor has been emitted. This helps
 
22193
the user to leave the vortex by keeping the marble from being reinserted into
 
22194
the vortex. Of course an autoclose disables the user to return, too. If this
 
22195
is not your intention you set additionally the attribute &lsquo;<samp>autoopen</samp>&rsquo; to
 
22196
<code>true</code>. The vortex will reopen again when the marble leaves the closed
 
22197
vortex. If the user did directly jump out of the vortex, it will reopen when
 
22198
the user enters the vortex grid again.
 
22199
</p>
 
22200
<p>Actors are emitted by vortices in a jumping fashion. The user can accelerate
 
22201
the actor for a short period and the actor may jump out of a vortex into the
 
22202
desired direction.
 
22203
</p>
 
22204
<p>Vortex teleportation takes a short amount of time and the involved vortices are
 
22205
blocked for other teleporting request during this process. Thus it is no problem
 
22206
to set up destinations of vortices that build a cycle.
 
22207
</p>
 
22208
<p>Rubberbands bound to teleported actors are cut by default. The attribute
 
22209
&lsquo;<samp>scissor</samp>&rsquo; allows you to control the cutting behaviour.
 
22210
</p>
 
22211
<p>But the teleporting feature of a vortices is not limited to actors. A water
 
22212
flood will spread through a vortex, too. In contrast to actors the flood will
 
22213
spread to all destinations at the same time. Of course a closed vortex on
 
22214
either side of the teleportation will block a flood from spreading. But the
 
22215
flood continues as soon as the vortices are opened again. Destinations will
 
22216
not be blocked by stones for a flood penetrating the grid from beneath, but
 
22217
may block the water from spreading further from the destination grid positions.
 
22218
All important details are explained in section <a href="#Flood-Spreading">Flood Spreading</a>.
 
22219
</p>
 
22220
<dl compact="compact">
 
22221
<dt> <b>Attributes:</b></dt>
 
22222
<dd><dl compact="compact">
 
22223
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>OPEN</code>, <code>CLOSED</code>; &nbsp;&nbsp;<i>default</i>: <code>OPEN</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
22224
<dd><p>The visual state of a vortex. An &lsquo;<samp>OPEN</samp>&rsquo; vortex may still be busy due
 
22225
to ongoing teleportations and may not accept a marble.
 
22226
</p>
 
22227
</dd>
 
22228
<dt> <b>destination</b>, &nbsp;&nbsp;<i>values</i>: tokens or position; &nbsp;&nbsp;<i>default</i>: <code>nil</code> &nbsp;&nbsp;See section <a href="#destination">destination</a></dt>
 
22229
<dd><p>The destination of the teleport given by an object or a position.
 
22230
</p>
 
22231
</dd>
 
22232
<dt> <b>autoclose</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
22233
<dd><p>Flag that indicates whether the vortex should be closed after a teleport.
 
22234
</p>
 
22235
</dd>
 
22236
<dt> <b>autoopen</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
22237
<dd><p>Flag that indicates whether the vortex should open when an actor enters the grid
 
22238
or leaves the vortex.
 
22239
</p>
 
22240
</dd>
 
22241
<dt> <b>scissor</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
22242
<dd><p>Rubberband cutting behaviour on teleporting.
 
22243
</p></dd>
 
22244
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
22245
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
22246
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
22247
</dl>
 
22248
 
 
22249
</dd>
 
22250
<dt> <b>Messages:</b></dt>
 
22251
<dd><dl compact="compact">
 
22252
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
22253
<dd><p>Opens the vortex on value &lsquo;<samp>1</samp>&rsquo;, and closes the vortex on value &lsquo;<samp>0</samp>&rsquo;.
 
22254
</p></dd>
 
22255
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
22256
<dd><p>Opens a closed vortex and closes an open vortex if possible.
 
22257
</p></dd>
 
22258
<dt> <b>open</b> &nbsp;&nbsp;See section <a href="#open">open</a></dt>
 
22259
<dd><p>Tries to open the vortex.
 
22260
</p></dd>
 
22261
<dt> <b>close</b> &nbsp;&nbsp;See section <a href="#close">close</a></dt>
 
22262
<dd><p>Tries to close the vortex.
 
22263
</p></dd>
 
22264
</dl>
 
22265
 
 
22266
</dd>
 
22267
<dt> <b>Action:</b> none</dt>
 
22268
<dt> <b>Variants:</b></dt>
 
22269
<dd><dl compact="compact">
 
22270
<dt> <img src="images/it_vortex.png" alt="images/it_vortex"><p> <b>it_vortex</b>:  state = <code>OPEN</code>.
 
22271
</p></dt>
 
22272
<dt> <img src="images/it_vortex.png" alt="images/it_vortex"><p> <b>it_vortex_open</b>: state = <code>OPEN</code>.
 
22273
</p></dt>
 
22274
<dt> <img src="images/it_vortex_4.png" alt="images/it_vortex_4"><p> <b>it_vortex_closed</b>: state &lsquo;<samp>CLOSED</samp>&rsquo;.
 
22275
</p></dt>
 
22276
</dl>
 
22277
</dd>
 
22278
</dl>
 
22279
 
 
22280
<hr size="6">
 
22281
<a name="it_005fwormhole"></a>
 
22282
<table cellpadding="1" cellspacing="1" border="0">
 
22283
<tr><td valign="middle" align="left">[<a href="#it_005fvortex" title="Previous section in reading order"> &lt; </a>]</td>
 
22284
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next section in reading order"> &gt; </a>]</td>
 
22285
<td valign="middle" align="left"> &nbsp; </td>
 
22286
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22287
<td valign="middle" align="left">[<a href="#Static-Items" title="Up section"> Up </a>]</td>
 
22288
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22289
<td valign="middle" align="left"> &nbsp; </td>
 
22290
<td valign="middle" align="left"> &nbsp; </td>
 
22291
<td valign="middle" align="left"> &nbsp; </td>
 
22292
<td valign="middle" align="left"> &nbsp; </td>
 
22293
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22294
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22295
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22296
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22297
</tr></table>
 
22298
<a name="it_005fwormhole-1"></a>
 
22299
<h3 class="subsection">8.4.20 it_wormhole</h3>
 
22300
<a name="index-it_005fwormhole"></a>
 
22301
 
 
22302
<p>Teleports <a href="#Actors">Actors</a> of any kind to a given &lsquo;<samp>destination</samp>&rsquo;. Unlike
 
22303
<a href="#it_005fvortex">it_vortex</a> every wormhole has a unique destination. But of course the
 
22304
destination may be another wormhole which instantly teleports the actor again.
 
22305
An infinite circle of wormholes that are connected by destinations is forbidden.
 
22306
</p>
 
22307
<p>A wormhole can attract or repel actors in its &lsquo;<samp>range</samp>&rsquo; with a force
 
22308
proportional to the &lsquo;<samp>strength</samp>&rsquo; and the inverse of the squared distance.
 
22309
The force can be switched &lsquo;<samp>ON</samp>&rsquo; and &lsquo;<samp>OFF</samp>&rsquo; and is represented by its
 
22310
external &lsquo;<samp>state</samp>&rsquo;. Note that no forces are applied to actors at a distance
 
22311
smaller than 0.05 grids to avoid extraordinary large forces.
 
22312
</p>
 
22313
<p>Rubberbands bound to teleported actors are cut by default. The attribute
 
22314
&lsquo;<samp>scissor</samp>&rsquo; allows you to control the cutting behaviour.
 
22315
</p>
 
22316
<p>After teleporting an actor, the wormhole&rsquo;s teleporting ability may be switched
 
22317
off for a short latency period given by &lsquo;<samp>interval</samp>&rsquo;. A latency separates
 
22318
actors traveling through a wormhole and avoids overlapping actors at the
 
22319
destination.
 
22320
</p>
 
22321
<p>But the teleporting feature of a wormhole is not limited to actors. A water
 
22322
flood will spread through a wormhole, too. Of course all actor related
 
22323
attributes described above have no influence on the flood. Just the
 
22324
&lsquo;<samp>destination</samp>&rsquo; is important as explained in details in <a href="#Flood-Spreading">Flood Spreading</a>.
 
22325
</p>
 
22326
<dl compact="compact">
 
22327
<dt> <b>Attributes:</b></dt>
 
22328
<dd><dl compact="compact">
 
22329
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>ON</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
22330
<dd><p>The current force state - &lsquo;<samp>ON</samp>&rsquo; for a force applying wormholes, &lsquo;<samp>OFF</samp>&rsquo;
 
22331
for force neutral wormholes.
 
22332
</p></dd>
 
22333
<dt> <b>destination</b>, &nbsp;&nbsp;<i>values</i>: tokens or position; &nbsp;&nbsp;<i>default</i>: <code>nil</code> &nbsp;&nbsp;See section <a href="#destination">destination</a></dt>
 
22334
<dd><p>The destination of the teleport given by an object or a position.
 
22335
</p></dd>
 
22336
<dt> <b>range</b> &nbsp;&nbsp;<i>values</i>: float number greater or equal 0; &nbsp;&nbsp;<i>default</i>: <code>10.0</code> &nbsp;&nbsp;See section <a href="#WormholeRange">WormholeRange</a></dt>
 
22337
<dd><p>The distance up to which the wormhole applies forces to actors.
 
22338
</p></dd>
 
22339
<dt> <b>strength</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>+30.0</code> &nbsp;&nbsp;See section <a href="#WormholeStrength">WormholeStrength</a></dt>
 
22340
<dd><p>A scalar factor for the wormhole force. Positive numbers are attracting forces
 
22341
where as negative numbers are repelling forces.
 
22342
</p></dd>
 
22343
<dt> <b>scissor</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
22344
<dd><p>Rubberband cutting behaviour on teleporting.
 
22345
</p></dd>
 
22346
<dt> <b>interval</b> &nbsp;&nbsp;<i>values</i>: float number greater or equal 0; &nbsp;&nbsp;<i>default</i>: <code>0.0</code></dt>
 
22347
<dd><p>The latency time after a teleport during which no further teleports take place.
 
22348
</p></dd>
 
22349
<dt> <b>freezable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#freezable">freezable</a></dt>
 
22350
<dt> <b>liftable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#liftable">liftable</a></dt>
 
22351
<dt> <b>portable</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#portable">portable</a></dt>
 
22352
</dl>
 
22353
 
 
22354
</dd>
 
22355
<dt> <b>Messages:</b></dt>
 
22356
<dd><dl compact="compact">
 
22357
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
22358
<dd><p>A signal of value 1 switches the wormhole force on, a value of 0 switches the
 
22359
wormhole force off.
 
22360
</p></dd>
 
22361
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
22362
<dd><p>A toggle causes a change in the wormhole force activity state.
 
22363
</p></dd>
 
22364
<dt> <b>on</b> &nbsp;&nbsp;See section <a href="#on">on</a></dt>
 
22365
<dd><p>Switches the wormhole on.
 
22366
</p></dd>
 
22367
<dt> <b>off</b> &nbsp;&nbsp;See section <a href="#off">off</a></dt>
 
22368
<dd><p>Switches the wormhole off.
 
22369
</p></dd>
 
22370
</dl>
 
22371
 
 
22372
</dd>
 
22373
<dt> <b>Action:</b> none</dt>
 
22374
<dt> <b>Variants:</b></dt>
 
22375
<dd><dl compact="compact">
 
22376
<dt> <img src="images/it_wormhole.png" alt="images/it_wormhole"><p> <b>it_wormhole</b>: state = <code>ON</code>.
 
22377
</p></dt>
 
22378
<dt> <img src="images/it_wormhole.png" alt="images/it_wormhole"><p> <b>it_wormhole_on</b>: state = <code>ON</code>.
 
22379
</p></dt>
 
22380
<dt> <img src="images/fl_white.png" alt="images/fl_white"><p> <b>it_wormhole_off</b>: state <code>OFF</code>.
 
22381
</p></dt>
 
22382
</dl>
 
22383
</dd>
 
22384
</dl>
 
22385
 
 
22386
 
 
22387
<hr size="6">
 
22388
<a name="Stone-Objects"></a>
 
22389
<table cellpadding="1" cellspacing="1" border="0">
 
22390
<tr><td valign="middle" align="left">[<a href="#it_005fwormhole" title="Previous section in reading order"> &lt; </a>]</td>
 
22391
<td valign="middle" align="left">[<a href="#Stone-Overview" title="Next section in reading order"> &gt; </a>]</td>
 
22392
<td valign="middle" align="left"> &nbsp; </td>
 
22393
<td valign="middle" align="left">[<a href="#Item-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22394
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
22395
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22396
<td valign="middle" align="left"> &nbsp; </td>
 
22397
<td valign="middle" align="left"> &nbsp; </td>
 
22398
<td valign="middle" align="left"> &nbsp; </td>
 
22399
<td valign="middle" align="left"> &nbsp; </td>
 
22400
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22401
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22402
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22403
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22404
</tr></table>
 
22405
<a name="Stone-Objects-1"></a>
 
22406
<h1 class="chapter">9. Stone Objects</h1>
 
22407
 
 
22408
<table class="menu" border="0" cellspacing="0">
 
22409
<tr><td align="left" valign="top"><a href="#Stone-Overview">9.1 Stone Overview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
22410
</td></tr>
 
22411
<tr><td align="left" valign="top"><a href="#Stone-Attributes">9.2 Stone Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
22412
</td></tr>
 
22413
<tr><td align="left" valign="top"><a href="#Standard-Stones">9.3 Standard Stones</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
22414
</td></tr>
 
22415
<tr><td align="left" valign="top"><a href="#Cluster-Stones">9.4 Cluster Stones</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
22416
</td></tr>
 
22417
<tr><td align="left" valign="top"><a href="#Special-Stones">9.5 Special Stones</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
22418
</td></tr>
 
22419
<tr><td align="left" valign="top"><a href="#Stone-Feature-Summaries">9.6 Stone Feature Summaries</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Tables of transparent, breakable, ... stones
 
22420
</td></tr>
 
22421
</table>
 
22422
 
 
22423
<hr size="6">
 
22424
<a name="Stone-Overview"></a>
 
22425
<table cellpadding="1" cellspacing="1" border="0">
 
22426
<tr><td valign="middle" align="left">[<a href="#Stone-Objects" title="Previous section in reading order"> &lt; </a>]</td>
 
22427
<td valign="middle" align="left">[<a href="#Stone-Attributes" title="Next section in reading order"> &gt; </a>]</td>
 
22428
<td valign="middle" align="left"> &nbsp; </td>
 
22429
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22430
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Up section"> Up </a>]</td>
 
22431
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22432
<td valign="middle" align="left"> &nbsp; </td>
 
22433
<td valign="middle" align="left"> &nbsp; </td>
 
22434
<td valign="middle" align="left"> &nbsp; </td>
 
22435
<td valign="middle" align="left"> &nbsp; </td>
 
22436
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22437
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22438
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22439
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22440
</tr></table>
 
22441
<a name="Stone-Overview-1"></a>
 
22442
<h2 class="section">9.1 Stone Overview</h2>
 
22443
 
 
22444
<table>
 
22445
<tr><td width="8%"><img src="images/st_actorimpulse.png" alt="images/st_actorimpulse"></td><td width="25%"><a href="#st_005factorimpulse">st_actorimpulse</a></td><td width="8%"><img src="images/st_ancient.png" alt="images/st_ancient"></td><td width="25%"><a href="#st_005fancient">st_ancient</a></td><td width="9%"><img src="images/st_barrier.png" alt="images/st_barrier"></td><td width="25%"><a href="#st_005fbarrier">st_barrier</a></td></tr>
 
22446
<tr><td width="8%"><img src="images/st_beads.png" alt="images/st_beads"></td><td width="25%"><a href="#st_005fbeads">st_beads</a></td><td width="8%"><img src="images/st_blocker.png" alt="images/st_blocker"></td><td width="25%"><a href="#st_005fblocker">st_blocker</a></td><td width="9%"><img src="images/st_boulder.png" alt="images/st_boulder"></td><td width="25%"><a href="#st_005fboulder">st_boulder</a></td></tr>
 
22447
<tr><td width="8%"><img src="images/st_bluegray.png" alt="images/st_bluegray"></td><td width="25%"><a href="#st_005fbluegray">st_bluegray</a> or <a href="#st_005fthief">st_thief</a></td><td width="8%"><img src="images/st_bluesand.png" alt="images/st_bluesand"></td><td width="25%"><a href="#st_005fbluesand">st_bluesand</a></td><td width="9%"><img src="images/st_blur_cross.png" alt="images/st_blur_cross"></td><td width="25%"><a href="#st_005fblur">st_blur</a>_cross</td></tr>
 
22448
<tr><td width="8%"><img src="images/st_blur_straight.png" alt="images/st_blur_straight"></td><td width="25%"><a href="#st_005fblur">st_blur</a>_straight</td><td width="8%"><img src="images/st_box_hay.png" alt="images/st_box_hay"></td><td width="25%"><a href="#st_005fbox">st_box</a>_hay</td><td width="9%"><img src="images/st_box_rock.png" alt="images/st_box_rock"></td><td width="25%"><a href="#st_005fbox">st_box</a>_rock</td></tr>
 
22449
<tr><td width="8%"><img src="images/st_box_wood.png" alt="images/st_box_wood"></td><td width="25%"><a href="#st_005fbox">st_box</a>_wood</td><td width="8%"><img src="images/st_brake.png" alt="images/st_brake"></td><td width="25%"><a href="#st_005fbrake">st_brake</a></td><td width="9%"><img src="images/st_break_black.png" alt="images/st_break_black"></td><td width="25%"><a href="#st_005fbreak">st_break</a>_black</td></tr>
 
22450
<tr><td width="8%"><img src="images/st_break_boulder.png" alt="images/st_break_boulder"></td><td width="25%"><a href="#st_005fbreak">st_break</a>_boulder</td><td width="8%"><img src="images/st_break_bug.png" alt="images/st_break_bug"></td><td width="25%"><a href="#st_005fbreak">st_break</a>_bug</td><td width="9%"><img src="images/st_break_oxydc.png" alt="images/st_break_oxydc"></td><td width="25%"><a href="#st_005fbreak">st_break</a>_oxydc</td></tr>
 
22451
<tr><td width="8%"><img src="images/st_break_plain.png" alt="images/st_break_plain"></td><td width="25%"><a href="#st_005fbreak">st_break</a>_plain</td><td width="8%"><img src="images/st_break_white.png" alt="images/st_break_white"></td><td width="25%"><a href="#st_005fbreak">st_break</a>_white</td><td width="9%"><img src="images/st_brick.png" alt="images/st_brick"></td><td width="25%"><a href="#st_005fbrick">st_brick</a></td></tr>
 
22452
<tr><td width="8%"><img src="images/st_brownie.png" alt="images/st_brownie"></td><td width="25%"><a href="#st_005fbrownie">st_brownie</a></td><td width="8%"><img src="images/st_brownmarble.png" alt="images/st_brownmarble"></td><td width="25%"><a href="#st_005fbrownmarble">st_brownmarble</a></td><td width="9%"><img src="images/st_brownpyramid.png" alt="images/st_brownpyramid"></td><td width="25%"><a href="#st_005fbrownpyramid">st_brownpyramid</a></td></tr>
 
22453
<tr><td width="8%"><img src="images/st_camouflage.png" alt="images/st_camouflage"></td><td width="25%"><a href="#st_005fcamouflage">st_camouflage</a></td><td width="8%"><img src="images/st_charge_minus.png" alt="images/st_charge_minus"></td><td width="25%"><a href="#st_005fcharge">st_charge</a>_minus</td><td width="9%"><img src="images/st_charge_plus.png" alt="images/st_charge_plus"></td><td width="25%"><a href="#st_005fcharge">st_charge</a>_plus</td></tr>
 
22454
<tr><td width="8%"><img src="images/st_charge_zero.png" alt="images/st_charge_zero"></td><td width="25%"><a href="#st_005fcharge">st_charge</a>_zero</td><td width="8%"><img src="images/st_chess_black.png" alt="images/st_chess_black"></td><td width="25%"><a href="#st_005fchess">st_chess</a>_black</td><td width="9%"><img src="images/st_chess_white.png" alt="images/st_chess_white"></td><td width="25%"><a href="#st_005fchess">st_chess</a>_white</td></tr>
 
22455
<tr><td width="8%"><img src="images/st_coinslot.png" alt="images/st_coinslot"></td><td width="25%"><a href="#st_005fcoinslot">st_coinslot</a></td><td width="8%"><img src="images/st_concrete.png" alt="images/st_concrete"></td><td width="25%"><a href="#st_005fconcrete">st_concrete</a></td><td width="9%"><img src="images/st_darkglass.png" alt="images/st_darkglass"></td><td width="25%"><a href="#st_005fdarkglass">st_darkglass</a></td></tr>
 
22456
<tr><td width="8%"><img src="images/st_darkgray.png" alt="images/st_darkgray"></td><td width="25%"><a href="#st_005fdarkgray">st_darkgray</a></td><td width="8%"><img src="images/st_death.png" alt="images/st_death"></td><td width="25%"><a href="#st_005fdeath">st_death</a></td><td width="9%"><img src="images/st_disco.png" alt="images/st_disco"></td><td width="25%"><a href="#st_005fdisco">st_disco</a>_light</td></tr>
 
22457
<tr><td width="8%"><img src="images/st_disco_2.png" alt="images/st_disco_2"></td><td width="25%"><a href="#st_005fdisco">st_disco</a>_medium</td><td width="8%"><img src="images/st_disco_3.png" alt="images/st_disco_3"></td><td width="25%"><a href="#st_005fdisco">st_disco</a>_dark</td><td width="9%"><img src="images/st_door_d_ew_g.png" alt="images/st_door_d_ew_g"></td><td width="25%"><a href="#st_005fdoor">st_door</a>_d (ew)</td></tr>
 
22458
<tr><td width="8%"><img src="images/st_door_d_ns_7.png" alt="images/st_door_d_ns_7"></td><td width="25%"><a href="#st_005fdoor">st_door</a>_d (ns)</td><td width="8%"><img src="images/st_dispenser_bombblack.png" alt="images/st_dispenser_bombblack"></td><td width="25%"><a href="#st_005fdispenser">st_dispenser</a>_bombblack</td><td width="9%"><img src="images/st_dispenser_bombwhite.png" alt="images/st_dispenser_bombwhite"></td><td width="25%"><a href="#st_005fdispenser">st_dispenser</a>_bombwhite</td></tr>
 
22459
<tr><td width="8%"><img src="images/st_dispenser_dynamite.png" alt="images/st_dispenser_dynamite"></td><td width="25%"><a href="#st_005fdispenser">st_dispenser</a>_dynamite</td><td width="8%"><img src="images/st_dispenser_extralife.png" alt="images/st_dispenser_extralife"></td><td width="25%"><a href="#st_005fdispenser">st_dispenser</a>_extralife</td><td width="9%"><img src="images/st_oxydc_open.png" alt="images/st_oxydc_open"></td><td width="25%"><a href="#st_005ffake">st_fake</a>_oxydc (open)</td></tr>
 
22460
<tr><td width="8%"><img src="images/st_flash.png" alt="images/st_flash"></td><td width="25%"><a href="#st_005fflash">st_flash</a></td><td width="8%"><img src="images/st_flat.png" alt="images/st_flat"></td><td width="25%"><a href="#st_005fflat">st_flat</a></td><td width="9%"><img src="images/st_floppy_off.png" alt="images/st_floppy_off"></td><td width="25%"><a href="#st_005ffloppy">st_floppy</a>_off</td></tr>
 
22461
<tr><td width="8%"><img src="images/st_floppy_on.png" alt="images/st_floppy_on"></td><td width="25%"><a href="#st_005ffloppy">st_floppy</a>_on</td><td width="8%"><img src="images/st_fourswitch.png" alt="images/st_fourswitch"></td><td width="25%"><a href="#st_005ffourswitch">st_fourswitch</a></td><td width="9%"><img src="images/st_granite.png" alt="images/st_granite"></td><td width="25%"><a href="#st_005fgranite">st_granite</a></td></tr>
 
22462
<tr><td width="8%"><img src="images/st_grate_cross.png" alt="images/st_grate_cross"></td><td width="25%"><a href="#st_005fgrate">st_grate</a>_cross</td><td width="8%"><img src="images/st_grate_framed.png" alt="images/st_grate_framed"></td><td width="25%"><a href="#st_005fgrate">st_grate</a>_framed</td><td width="9%"><img src="images/st_greenbrown.png" alt="images/st_greenbrown"></td><td width="25%"><a href="#st_005fgreenbrown">st_greenbrown</a></td></tr>
 
22463
<tr><td width="8%"><img src="images/st_greengray.png" alt="images/st_greengray"></td><td width="25%"><a href="#st_005fgreengray">st_greengray</a></td><td width="8%"><img src="images/st_ice.png" alt="images/st_ice"></td><td width="25%"><a href="#st_005fice">st_ice</a></td><td width="9%"></td><td width="25%"><a href="#st_005finvisible">st_invisible</a> or <a href="#st_005fghost">st_ghost</a></td></tr>
 
22464
<tr><td width="8%"><img src="images/st_jamb_black.png" alt="images/st_jamb_black"></td><td width="25%"><a href="#st_005fjamb">st_jamb</a>_black</td><td width="8%"><img src="images/st_jamb_white.png" alt="images/st_jamb_white"></td><td width="25%"><a href="#st_005fjamb">st_jamb</a>_white</td><td width="9%"><img src="images/st_key_off.png" alt="images/st_key_off"></td><td width="25%"><a href="#st_005fkey">st_key</a>_off</td></tr>
 
22465
<tr><td width="8%"><img src="images/st_key_on.png" alt="images/st_key_on"></td><td width="25%"><a href="#st_005fkey">st_key</a>_on</td><td width="8%"><img src="images/st_knight.png" alt="images/st_knight"></td><td width="25%"><a href="#st_005fknight">st_knight</a></td><td width="9%"><img src="images/st_laser_d.png" alt="images/st_laser_d"></td><td width="25%"><a href="#st_005flaser">st_laser</a></td></tr>
 
22466
<tr><td width="8%"><img src="images/st_lightglass.png" alt="images/st_lightglass"></td><td width="25%"><a href="#st_005flightglass">st_lightglass</a></td><td width="8%"><img src="images/st_lightpassenger.png" alt="images/st_lightpassenger"></td><td width="25%"><a href="#st_005flightpassenger">st_lightpassenger</a></td><td width="9%"><img src="images/st_mail.png" alt="images/st_mail"></td><td width="25%"><a href="#st_005fmail">st_mail</a></td></tr>
 
22467
<tr><td width="8%"><img src="images/st_metal.png" alt="images/st_metal"></td><td width="25%"><a href="#st_005fmetal">st_metal</a></td><td width="8%"><img src="images/st_mirror_static_2.png" alt="images/st_mirror_static_2"></td><td width="25%"><a href="#st_005fmirror">st_mirror</a>_triangle</td><td width="9%"><img src="images/st_mirror_static_b2.png" alt="images/st_mirror_static_b2"></td><td width="25%"><a href="#st_005fmirror">st_mirror</a>_triangle</td></tr>
 
22468
<tr><td width="8%"><img src="images/st_mirror_static_c2.png" alt="images/st_mirror_static_c2"></td><td width="25%"><a href="#st_005fmirror">st_mirror</a>_slab</td><td width="8%"><img src="images/st_mirror_static_d2.png" alt="images/st_mirror_static_d2"></td><td width="25%"><a href="#st_005fmirror">st_mirror</a>_slab</td><td width="9%"><img src="images/st_mirror_static_e2.png" alt="images/st_mirror_static_e2"></td><td width="25%"><a href="#st_005fmirror">st_mirror</a>_sheets</td></tr>
 
22469
<tr><td width="8%"><img src="images/st_monoflop.png" alt="images/st_monoflop"></td><td width="25%"><a href="#st_005fmonoflop">st_monoflop</a></td><td width="8%"><img src="images/st_monoflop_2.png" alt="images/st_monoflop_2"></td><td width="25%"><a href="#st_005fmonoflop">st_monoflop</a></td><td width="9%"><img src="images/st_oneway.png" alt="images/st_oneway"></td><td width="25%"><a href="#st_005foneway">st_oneway</a></td></tr>
 
22470
<tr><td width="8%"><img src="images/st_oneway_b.png" alt="images/st_oneway_b"></td><td width="25%"><a href="#st_005foneway">st_oneway</a>_black</td><td width="8%"><img src="images/st_oneway_c.png" alt="images/st_oneway_c"></td><td width="25%"><a href="#st_005foneway">st_oneway</a>_white</td><td width="9%"><img src="images/st_oxyda.png" alt="images/st_oxyda"></td><td width="25%"><a href="#st_005foxyd">st_oxyd</a>_a</td></tr>
 
22471
<tr><td width="8%"><img src="images/st_oxydb.png" alt="images/st_oxydb"></td><td width="25%"><a href="#st_005foxyd">st_oxyd</a>_b or <a href="#st_005fquake">st_quake</a> <br> or <a href="#st_005flaserswitch">st_laserswitch</a></td><td width="8%"><img src="images/st_oxydc.png" alt="images/st_oxydc"></td><td width="25%"><a href="#st_005foxyd">st_oxyd</a>_c</td><td width="9%"><img src="images/st_oxydd.png" alt="images/st_oxydd"></td><td width="25%"><a href="#st_005foxyd">st_oxyd</a>_d</td></tr>
 
22472
<tr><td width="8%"><img src="images/st_oxyde.png" alt="images/st_oxyde"></td><td width="25%"><a href="#st_005foxyd">st_oxyd</a>_e</td><td width="8%"><img src="images/st_panel.png" alt="images/st_panel"></td><td width="25%"><a href="#st_005fpanel">st_panel</a></td><td width="9%"><img src="images/st_passage_black_square.png" alt="images/st_passage_black_square"></td><td width="25%"><a href="#st_005fpassage">st_passage</a>_black</td></tr>
 
22473
<tr><td width="8%"><img src="images/st_passage_black_slash.png" alt="images/st_passage_black_slash"></td><td width="25%"><a href="#st_005fpassage">st_passage</a>_black</td><td width="8%"><img src="images/st_passage_black_cross.png" alt="images/st_passage_black_cross"></td><td width="25%"><a href="#st_005fpassage">st_passage</a>_black</td><td width="9%"><img src="images/st_passage_black_frame.png" alt="images/st_passage_black_frame"></td><td width="25%"><a href="#st_005fpassage">st_passage</a>_black</td></tr>
 
22474
<tr><td width="8%"><img src="images/st_passage_white_square.png" alt="images/st_passage_white_square"></td><td width="25%"><a href="#st_005fpassage">st_passage</a>_white</td><td width="8%"><img src="images/st_passage_white_slash.png" alt="images/st_passage_white_slash"></td><td width="25%"><a href="#st_005fpassage">st_passage</a>_white</td><td width="9%"><img src="images/st_passage_white_cross.png" alt="images/st_passage_white_cross"></td><td width="25%"><a href="#st_005fpassage">st_passage</a>_white</td></tr>
 
22475
<tr><td width="8%"><img src="images/st_passage_white_frame.png" alt="images/st_passage_white_frame"></td><td width="25%"><a href="#st_005fpassage">st_passage</a>_white</td><td width="8%"><img src="images/st_pinkbumps.png" alt="images/st_pinkbumps"></td><td width="25%"><a href="#st_005fpinkbumps">st_pinkbumps</a></td><td width="9%"><img src="images/st_plaster.png" alt="images/st_plaster"></td><td width="25%"><a href="#st_005fplaster">st_plaster</a></td></tr>
 
22476
<tr><td width="8%"><img src="images/st_plop_slate.png" alt="images/st_plop_slate"></td><td width="25%"><a href="#st_005fplop">st_plop</a>_slate</td><td width="8%"><img src="images/st_portal_horse.png" alt="images/st_portal_horse"></td><td width="25%"><a href="#st_005fportal">st_portal</a></td><td width="9%"><img src="images/st_pull.png" alt="images/st_pull"></td><td width="25%"><a href="#st_005fpull">st_pull</a></td></tr>
 
22477
<tr><td width="8%"><img src="images/st_purplegray.png" alt="images/st_purplegray"></td><td width="25%"><a href="#st_005fpurplegray">st_purplegray</a></td><td width="8%"><img src="images/st_purplemarble.png" alt="images/st_purplemarble"></td><td width="25%"><a href="#st_005fpurplemarble">st_purplemarble</a></td><td width="9%"><img src="images/st_puzzle_blue_3.png" alt="images/st_puzzle_blue_3"></td><td width="25%"><a href="#st_005fpuzzle">st_puzzle</a>_blue or <a href="#st_005fturnstilearm">st_turnstilearm</a>_n</td></tr>
 
22478
<tr><td width="8%"><img src="images/st_puzzle_blue_d3.png" alt="images/st_puzzle_blue_d3"></td><td width="25%"><a href="#st_005fpuzzle">st_puzzle</a>_blue</td><td width="8%"><img src="images/st_puzzle_blue_hollow_d3.png" alt="images/st_puzzle_blue_hollow_d3"></td><td width="25%"><a href="#st_005fpuzzle">st_puzzle</a>_blue</td><td width="9%"><img src="images/st_puzzle_yellow_d3.png" alt="images/st_puzzle_yellow_d3"></td><td width="25%"><a href="#st_005fpuzzle">st_puzzle</a>_yellow</td></tr>
 
22479
<tr><td width="8%"><img src="images/st_puzzle_yellow_hollow_d3.png" alt="images/st_puzzle_yellow_hollow_d3"></td><td width="25%"><a href="#st_005fpuzzle">st_puzzle</a>_yellow</td><td width="8%"><img src="images/st_rawglass.png" alt="images/st_rawglass"></td><td width="25%"><a href="#st_005frawglass">st_rawglass</a></td><td width="9%"><img src="images/st_rawglass_quad.png" alt="images/st_rawglass_quad"></td><td width="25%"><a href="#st_005frawglass">st_rawglass</a>_quad</td></tr>
 
22480
<tr><td width="8%"><img src="images/st_redbrown.png" alt="images/st_redbrown"></td><td width="25%"><a href="#st_005fredbrown">st_redbrown</a></td><td width="8%"><img src="images/st_redfiber.png" alt="images/st_redfiber"></td><td width="25%"><a href="#st_005fredfiber">st_redfiber</a></td><td width="9%"><img src="images/st_redmarble.png" alt="images/st_redmarble"></td><td width="25%"><a href="#st_005fredmarble">st_redmarble</a></td></tr>
 
22481
<tr><td width="8%"><img src="images/st_redrock.png" alt="images/st_redrock"></td><td width="25%"><a href="#st_005fredrock">st_redrock</a></td><td width="8%"><img src="images/st_rotator_ccw.png" alt="images/st_rotator_ccw"></td><td width="25%"><a href="#st_005frotator">st_rotator</a>_ccw</td><td width="9%"><img src="images/st_rotator_cw.png" alt="images/st_rotator_cw"></td><td width="25%"><a href="#st_005frotator">st_rotator</a>_cw</td></tr>
 
22482
<tr><td width="8%"><img src="images/st_rubberband.png" alt="images/st_rubberband"></td><td width="25%"><a href="#st_005frubberband">st_rubberband</a></td><td width="8%"><img src="images/st_scissors.png" alt="images/st_scissors"></td><td width="25%"><a href="#st_005fscissors">st_scissors</a></td><td width="9%"><img src="images/st_shogun.png" alt="images/st_shogun"></td><td width="25%"><a href="#st_005fshogun">st_shogun</a>_s</td></tr>
 
22483
<tr><td width="8%"><img src="images/st_shogun_2.png" alt="images/st_shogun_2"></td><td width="25%"><a href="#st_005fshogun">st_shogun</a>_m</td><td width="8%"><img src="images/st_shogun_4.png" alt="images/st_shogun_4"></td><td width="25%"><a href="#st_005fshogun">st_shogun</a>_l</td><td width="9%"><img src="images/st_spitter_idle.png" alt="images/st_spitter_idle"></td><td width="25%"><a href="#st_005fspitter">st_spitter</a></td></tr>
 
22484
<tr><td width="8%"><img src="images/st_stoneimpulse.png" alt="images/st_stoneimpulse"></td><td width="25%"><a href="#st_005fstoneimpulse">st_stoneimpulse</a></td><td width="8%"><img src="images/st_stoneimpulse_hollow.png" alt="images/st_stoneimpulse_hollow"></td><td width="25%"><a href="#st_005fstoneimpulse">st_stoneimpulse</a>_hollow</td><td width="9%"><img src="images/st_surprise.png" alt="images/st_surprise"></td><td width="25%"><a href="#st_005fsurprise">st_surprise</a></td></tr>
 
22485
<tr><td width="8%"><img src="images/st_swap.png" alt="images/st_swap"></td><td width="25%"><a href="#st_005fswap">st_swap</a></td><td width="8%"><img src="images/st_switch.png" alt="images/st_switch"></td><td width="25%"><a href="#st_005fswitch">st_switch</a></td><td width="9%"><img src="images/st_switch_black.png" alt="images/st_switch_black"></td><td width="25%"><a href="#st_005fswitch">st_switch</a>_black</td></tr>
 
22486
<tr><td width="8%"><img src="images/st_switch_white.png" alt="images/st_switch_white"></td><td width="25%"><a href="#st_005fswitch">st_switch</a>_white</td><td width="8%"><img src="images/st_thief.png" alt="images/st_thief"></td><td width="25%"><a href="#st_005fthief">st_thief</a></td><td width="9%"><img src="images/st_thief_capture.png" alt="images/st_thief_capture"></td><td width="25%"><a href="#st_005fthief">st_thief</a></td></tr>
 
22487
<tr><td width="8%"><img src="images/st_thief_drunken.png" alt="images/st_thief_drunken"></td><td width="25%"><a href="#st_005fthief">st_thief</a></td><td width="8%"><img src="images/st_tigris.png" alt="images/st_tigris"></td><td width="25%"><a href="#st_005ftigris">st_tigris</a></td><td width="9%"><img src="images/st_timer_3.png" alt="images/st_timer_3"></td><td width="25%"><a href="#st_005ftimer">st_timer</a></td></tr>
 
22488
<tr><td width="8%"><img src="images/st_timer.png" alt="images/st_timer"></td><td width="25%"><a href="#st_005ftimer">st_timer</a></td><td width="8%"><img src="images/st_turnstile.png" alt="images/st_turnstile"></td><td width="25%"><a href="#st_005fturnstile">st_turnstile</a></td><td width="9%"><img src="images/st_turnstile_green.png" alt="images/st_turnstile_green"></td><td width="25%"><a href="#st_005fturnstile">st_turnstile</a>_green</td></tr>
 
22489
<tr><td width="8%"><img src="images/st_window_blue_3.png" alt="images/st_window_blue_3"></td><td width="25%"><a href="#st_005fwindow">st_window</a></td><td width="8%"><img src="images/st_window_green_3.png" alt="images/st_window_green_3"></td><td width="25%"><a href="#st_005fwindow">st_window</a></td><td width="9%"><img src="images/st_woven.png" alt="images/st_woven"></td><td width="25%"><a href="#st_005fwoven">st_woven</a></td></tr>
 
22490
<tr><td width="8%"><img src="images/st_yellow.png" alt="images/st_yellow"></td><td width="25%"><a href="#st_005fyellow">st_yellow</a></td><td width="8%"><img src="images/st_yinyang.png" alt="images/st_yinyang"></td><td width="25%"><a href="#st_005fyinyang">st_yinyang</a></td><td width="9%"><img src="images/st_yinyang_inactive.png" alt="images/st_yinyang_inactive"></td><td width="25%"><a href="#st_005fyinyang">st_yinyang</a>_inactive</td></tr>
 
22491
</table>
 
22492
 
 
22493
 
 
22494
<hr size="6">
 
22495
<a name="Stone-Attributes"></a>
 
22496
<table cellpadding="1" cellspacing="1" border="0">
 
22497
<tr><td valign="middle" align="left">[<a href="#Stone-Overview" title="Previous section in reading order"> &lt; </a>]</td>
 
22498
<td valign="middle" align="left">[<a href="#breakable" title="Next section in reading order"> &gt; </a>]</td>
 
22499
<td valign="middle" align="left"> &nbsp; </td>
 
22500
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22501
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Up section"> Up </a>]</td>
 
22502
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22503
<td valign="middle" align="left"> &nbsp; </td>
 
22504
<td valign="middle" align="left"> &nbsp; </td>
 
22505
<td valign="middle" align="left"> &nbsp; </td>
 
22506
<td valign="middle" align="left"> &nbsp; </td>
 
22507
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22508
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22509
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22510
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22511
</tr></table>
 
22512
<a name="Stone-Attributes-1"></a>
 
22513
<h2 class="section">9.2 Stone Attributes</h2>
 
22514
 
 
22515
<table class="menu" border="0" cellspacing="0">
 
22516
<tr><td align="left" valign="top"><a href="#breakable">9.2.1 breakable</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              -
 
22517
</td></tr>
 
22518
<tr><td align="left" valign="top"><a href="#freeze_005fcheck-_0028stone_0029">9.2.2 freeze_check (stone)</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">   Freeze Checking
 
22519
</td></tr>
 
22520
<tr><td align="left" valign="top"><a href="#hit_005f_002a">9.2.3 hit_*</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                  -
 
22521
</td></tr>
 
22522
<tr><td align="left" valign="top"><a href="#hollow">9.2.4 hollow</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 -
 
22523
</td></tr>
 
22524
<tr><td align="left" valign="top"><a href="#hovering">9.2.5 hovering</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               -
 
22525
</td></tr>
 
22526
<tr><td align="left" valign="top"><a href="#movable">9.2.6 movable</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                -
 
22527
</td></tr>
 
22528
<tr><td align="left" valign="top"><a href="#transparent">9.2.7 transparent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            -
 
22529
</td></tr>
 
22530
</table>
 
22531
 
 
22532
 
 
22533
<hr size="6">
 
22534
<a name="breakable"></a>
 
22535
<table cellpadding="1" cellspacing="1" border="0">
 
22536
<tr><td valign="middle" align="left">[<a href="#Stone-Attributes" title="Previous section in reading order"> &lt; </a>]</td>
 
22537
<td valign="middle" align="left">[<a href="#freeze_005fcheck-_0028stone_0029" title="Next section in reading order"> &gt; </a>]</td>
 
22538
<td valign="middle" align="left"> &nbsp; </td>
 
22539
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22540
<td valign="middle" align="left">[<a href="#Stone-Attributes" title="Up section"> Up </a>]</td>
 
22541
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22542
<td valign="middle" align="left"> &nbsp; </td>
 
22543
<td valign="middle" align="left"> &nbsp; </td>
 
22544
<td valign="middle" align="left"> &nbsp; </td>
 
22545
<td valign="middle" align="left"> &nbsp; </td>
 
22546
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22547
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22548
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22549
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22550
</tr></table>
 
22551
<a name="breakable-1"></a>
 
22552
<h3 class="subsection">9.2.1 breakable</h3>
 
22553
 
 
22554
 
 
22555
<dl compact="compact">
 
22556
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
22557
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
22558
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
22559
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
22560
</dl>
 
22561
 
 
22562
<hr size="6">
 
22563
<a name="freeze_005fcheck-_0028stone_0029"></a>
 
22564
<table cellpadding="1" cellspacing="1" border="0">
 
22565
<tr><td valign="middle" align="left">[<a href="#breakable" title="Previous section in reading order"> &lt; </a>]</td>
 
22566
<td valign="middle" align="left">[<a href="#hit_005f_002a" title="Next section in reading order"> &gt; </a>]</td>
 
22567
<td valign="middle" align="left"> &nbsp; </td>
 
22568
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22569
<td valign="middle" align="left">[<a href="#Stone-Attributes" title="Up section"> Up </a>]</td>
 
22570
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22571
<td valign="middle" align="left"> &nbsp; </td>
 
22572
<td valign="middle" align="left"> &nbsp; </td>
 
22573
<td valign="middle" align="left"> &nbsp; </td>
 
22574
<td valign="middle" align="left"> &nbsp; </td>
 
22575
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22576
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22577
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22578
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22579
</tr></table>
 
22580
<a name="freeze_005fcheck-_0028stone_0029-1"></a>
 
22581
<h3 class="subsection">9.2.2 freeze_check (stone)</h3>
 
22582
 
 
22583
<p>If <code>true</code>, allows for <a href="#Freeze-Checking">Freeze Checking</a> for this stone. Note that
 
22584
Freeze Checking only works on those floors that have additionally set
 
22585
<code>freeze_check = true</code> on their own, see <a href="#freeze_005fcheck-_0028floor_0029">freeze_check (floor)</a>.
 
22586
</p>
 
22587
<dl compact="compact">
 
22588
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
22589
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
22590
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
22591
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
22592
</dl>
 
22593
 
 
22594
<hr size="6">
 
22595
<a name="hit_005f_002a"></a>
 
22596
<table cellpadding="1" cellspacing="1" border="0">
 
22597
<tr><td valign="middle" align="left">[<a href="#freeze_005fcheck-_0028stone_0029" title="Previous section in reading order"> &lt; </a>]</td>
 
22598
<td valign="middle" align="left">[<a href="#hollow" title="Next section in reading order"> &gt; </a>]</td>
 
22599
<td valign="middle" align="left"> &nbsp; </td>
 
22600
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22601
<td valign="middle" align="left">[<a href="#Stone-Attributes" title="Up section"> Up </a>]</td>
 
22602
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22603
<td valign="middle" align="left"> &nbsp; </td>
 
22604
<td valign="middle" align="left"> &nbsp; </td>
 
22605
<td valign="middle" align="left"> &nbsp; </td>
 
22606
<td valign="middle" align="left"> &nbsp; </td>
 
22607
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22608
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22609
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22610
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22611
</tr></table>
 
22612
<a name="hit_005f_002a-1"></a>
 
22613
<h3 class="subsection">9.2.3 hit_*</h3>
 
22614
 
 
22615
<p>A set of attributes that allow you to distort hit forces. Objects like
 
22616
<a href="#st_005fflash">st_flash</a>, <a href="#st_005fspitter">st_spitter</a> and <a href="#st_005factorimpulse">st_actorimpulse</a> apply forces that
 
22617
are either based on the hit velocity or the position.
 
22618
</p>
 
22619
<p>By usage of a simple &lsquo;<samp>hit_strength</samp>&rsquo; factor you can increase, decrease or
 
22620
invert the default factor. Note that you must not set this attribute, if you
 
22621
want to use the default.
 
22622
</p>
 
22623
<p>By setting the four attributes &lsquo;<samp>hit_distortion_xx</samp>&rsquo;, &lsquo;<samp>hit_distortion_xy</samp>&rsquo;,
 
22624
&lsquo;<samp>hit_distortion_yx</samp>&rsquo; and &lsquo;<samp>hit_distortion_yy</samp>&rsquo; you can describe a
 
22625
matrix to set up a new direction. These attributes default to 1, 0, 0, 1.
 
22626
A 90 degree clockwise turn is described by 0, 1, -1, 0.
 
22627
</p>
 
22628
<dl compact="compact">
 
22629
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
22630
<dt> <b>Values:</b> &nbsp;&nbsp;?</dt>
 
22631
<dt> <b>Default:</b> &nbsp;&nbsp;factor - <code>nil</code>, xx, yy - <code>1</code>, xy, yx - <code>0</code></dt>
 
22632
<dd><p>By default no hit factor is applied. The hit matrix is the neutral one.
 
22633
</p></dd>
 
22634
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
22635
<dt> <b>Support:</b> &nbsp;&nbsp;by some stones</dt>
 
22636
</dl>
 
22637
 
 
22638
<hr size="6">
 
22639
<a name="hollow"></a>
 
22640
<table cellpadding="1" cellspacing="1" border="0">
 
22641
<tr><td valign="middle" align="left">[<a href="#hit_005f_002a" title="Previous section in reading order"> &lt; </a>]</td>
 
22642
<td valign="middle" align="left">[<a href="#hovering" title="Next section in reading order"> &gt; </a>]</td>
 
22643
<td valign="middle" align="left"> &nbsp; </td>
 
22644
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22645
<td valign="middle" align="left">[<a href="#Stone-Attributes" title="Up section"> Up </a>]</td>
 
22646
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22647
<td valign="middle" align="left"> &nbsp; </td>
 
22648
<td valign="middle" align="left"> &nbsp; </td>
 
22649
<td valign="middle" align="left"> &nbsp; </td>
 
22650
<td valign="middle" align="left"> &nbsp; </td>
 
22651
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22652
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22653
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22654
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22655
</tr></table>
 
22656
<a name="hollow-1"></a>
 
22657
<h3 class="subsection">9.2.4 hollow</h3>
 
22658
 
 
22659
 
 
22660
<dl compact="compact">
 
22661
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
22662
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
22663
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
22664
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
22665
</dl>
 
22666
 
 
22667
<hr size="6">
 
22668
<a name="hovering"></a>
 
22669
<table cellpadding="1" cellspacing="1" border="0">
 
22670
<tr><td valign="middle" align="left">[<a href="#hollow" title="Previous section in reading order"> &lt; </a>]</td>
 
22671
<td valign="middle" align="left">[<a href="#movable" title="Next section in reading order"> &gt; </a>]</td>
 
22672
<td valign="middle" align="left"> &nbsp; </td>
 
22673
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22674
<td valign="middle" align="left">[<a href="#Stone-Attributes" title="Up section"> Up </a>]</td>
 
22675
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22676
<td valign="middle" align="left"> &nbsp; </td>
 
22677
<td valign="middle" align="left"> &nbsp; </td>
 
22678
<td valign="middle" align="left"> &nbsp; </td>
 
22679
<td valign="middle" align="left"> &nbsp; </td>
 
22680
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22681
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22682
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22683
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22684
</tr></table>
 
22685
<a name="hovering-1"></a>
 
22686
<h3 class="subsection">9.2.5 hovering</h3>
 
22687
 
 
22688
 
 
22689
<dl compact="compact">
 
22690
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
22691
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
22692
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
22693
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
22694
</dl>
 
22695
 
 
22696
<hr size="6">
 
22697
<a name="movable"></a>
 
22698
<table cellpadding="1" cellspacing="1" border="0">
 
22699
<tr><td valign="middle" align="left">[<a href="#hovering" title="Previous section in reading order"> &lt; </a>]</td>
 
22700
<td valign="middle" align="left">[<a href="#transparent" title="Next section in reading order"> &gt; </a>]</td>
 
22701
<td valign="middle" align="left"> &nbsp; </td>
 
22702
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22703
<td valign="middle" align="left">[<a href="#Stone-Attributes" title="Up section"> Up </a>]</td>
 
22704
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22705
<td valign="middle" align="left"> &nbsp; </td>
 
22706
<td valign="middle" align="left"> &nbsp; </td>
 
22707
<td valign="middle" align="left"> &nbsp; </td>
 
22708
<td valign="middle" align="left"> &nbsp; </td>
 
22709
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22710
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22711
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22712
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22713
</tr></table>
 
22714
<a name="movable-1"></a>
 
22715
<h3 class="subsection">9.2.6 movable</h3>
 
22716
 
 
22717
<p>An attribute that describes if a stone is movable by actor impulses. It is
 
22718
supported by all stones.
 
22719
</p>
 
22720
<p>Note that this attribute is not listed in the individual stone description
 
22721
if the stone is generally not movable.
 
22722
</p>
 
22723
<dl compact="compact">
 
22724
<dt> <b>Type:</b> &nbsp;&nbsp;bool</dt>
 
22725
<dt> <b>Values:</b> &nbsp;&nbsp;<code>true</code>, <code>false</code></dt>
 
22726
<dt> <b>Default:</b> &nbsp;&nbsp;usually <code>false</code></dt>
 
22727
<dd><p>If a stone exists only in a movable variant this attribute will default to
 
22728
&lsquo;<samp>true</samp>&rsquo;.
 
22729
</p></dd>
 
22730
<dt> <b>Access:</b> &nbsp;&nbsp;read/sometimes write</dt>
 
22731
<dd><p>This attribute is only writable for objects that exist in both variations.
 
22732
</p></dd>
 
22733
<dt> <b>Support:</b> &nbsp;&nbsp;by all stones</dt>
 
22734
</dl>
 
22735
 
 
22736
<hr size="6">
 
22737
<a name="transparent"></a>
 
22738
<table cellpadding="1" cellspacing="1" border="0">
 
22739
<tr><td valign="middle" align="left">[<a href="#movable" title="Previous section in reading order"> &lt; </a>]</td>
 
22740
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Next section in reading order"> &gt; </a>]</td>
 
22741
<td valign="middle" align="left"> &nbsp; </td>
 
22742
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22743
<td valign="middle" align="left">[<a href="#Stone-Attributes" title="Up section"> Up </a>]</td>
 
22744
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22745
<td valign="middle" align="left"> &nbsp; </td>
 
22746
<td valign="middle" align="left"> &nbsp; </td>
 
22747
<td valign="middle" align="left"> &nbsp; </td>
 
22748
<td valign="middle" align="left"> &nbsp; </td>
 
22749
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22750
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22751
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22752
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22753
</tr></table>
 
22754
<a name="transparent-1"></a>
 
22755
<h3 class="subsection">9.2.7 transparent</h3>
 
22756
 
 
22757
 
 
22758
<dl compact="compact">
 
22759
<dt> <b>Type:</b> &nbsp;&nbsp;boolean</dt>
 
22760
<dt> <b>Values:</b> &nbsp;&nbsp;<code>false</code>, <code>true</code></dt>
 
22761
<dt> <b>Default:</b> &nbsp;&nbsp;<code>false</code></dt>
 
22762
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
22763
</dl>
 
22764
 
 
22765
 
 
22766
 
 
22767
<hr size="6">
 
22768
<a name="Standard-Stones"></a>
 
22769
<table cellpadding="1" cellspacing="1" border="0">
 
22770
<tr><td valign="middle" align="left">[<a href="#transparent" title="Previous section in reading order"> &lt; </a>]</td>
 
22771
<td valign="middle" align="left">[<a href="#st_005fancient" title="Next section in reading order"> &gt; </a>]</td>
 
22772
<td valign="middle" align="left"> &nbsp; </td>
 
22773
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22774
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Up section"> Up </a>]</td>
 
22775
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22776
<td valign="middle" align="left"> &nbsp; </td>
 
22777
<td valign="middle" align="left"> &nbsp; </td>
 
22778
<td valign="middle" align="left"> &nbsp; </td>
 
22779
<td valign="middle" align="left"> &nbsp; </td>
 
22780
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22781
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22782
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22783
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22784
</tr></table>
 
22785
<a name="Standard-Stones-1"></a>
 
22786
<h2 class="section">9.3 Standard Stones</h2>
 
22787
 
 
22788
<p>A standard stone is a passive wall stone. It might exist in a hollow or
 
22789
movable variant but provides no additional features.
 
22790
</p>
 
22791
<table class="menu" border="0" cellspacing="0">
 
22792
<tr><td align="left" valign="top"><a href="#st_005fancient">9.3.1 st_ancient</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         rough green rock
 
22793
</td></tr>
 
22794
<tr><td align="left" valign="top"><a href="#st_005fbluegray">9.3.2 st_bluegray</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        light blue gray stone
 
22795
</td></tr>
 
22796
<tr><td align="left" valign="top"><a href="#st_005fbrownie">9.3.3 st_brownie</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         golden, hay stack like stone
 
22797
</td></tr>
 
22798
<tr><td align="left" valign="top"><a href="#st_005fbrownmarble">9.3.4 st_brownmarble</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     brown gray marble
 
22799
</td></tr>
 
22800
<tr><td align="left" valign="top"><a href="#st_005fcamouflage">9.3.5 st_camouflage</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      military green camouflage stone
 
22801
</td></tr>
 
22802
<tr><td align="left" valign="top"><a href="#st_005fconcrete">9.3.6 st_concrete</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        polished light gray stone
 
22803
</td></tr>
 
22804
<tr><td align="left" valign="top"><a href="#st_005fdarkgray">9.3.7 st_darkgray</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        dark gray rock
 
22805
</td></tr>
 
22806
<tr><td align="left" valign="top"><a href="#st_005fgranite">9.3.8 st_granite</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         light gray rock
 
22807
</td></tr>
 
22808
<tr><td align="left" valign="top"><a href="#st_005fgreengray">9.3.9 st_greengray</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       light green gray rock
 
22809
</td></tr>
 
22810
<tr><td align="left" valign="top"><a href="#st_005finvisible">9.3.10 st_invisible</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       invisible stone
 
22811
</td></tr>
 
22812
<tr><td align="left" valign="top"><a href="#st_005fmetal">9.3.11 st_metal</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           metal stone
 
22813
</td></tr>
 
22814
<tr><td align="left" valign="top"><a href="#st_005fpinkbumps">9.3.12 st_pinkbumps</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       pink stone with heavy bumps
 
22815
</td></tr>
 
22816
<tr><td align="left" valign="top"><a href="#st_005fpurplegray">9.3.13 st_purplegray</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      dark purple gray rock
 
22817
</td></tr>
 
22818
<tr><td align="left" valign="top"><a href="#st_005fpurplemarble">9.3.14 st_purplemarble</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    purple marble
 
22819
</td></tr>
 
22820
<tr><td align="left" valign="top"><a href="#st_005fredbrown">9.3.15 st_redbrown</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        brown stone with light red touches
 
22821
</td></tr>
 
22822
<tr><td align="left" valign="top"><a href="#st_005fredmarble">9.3.16 st_redmarble</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       red white marbled stone
 
22823
</td></tr>
 
22824
<tr><td align="left" valign="top"><a href="#st_005fredrock">9.3.17 st_redrock</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         dark red rock
 
22825
</td></tr>
 
22826
<tr><td align="left" valign="top"><a href="#st_005ftigris">9.3.18 st_tigris</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          red sandstone
 
22827
</td></tr>
 
22828
<tr><td align="left" valign="top"><a href="#st_005fwoven">9.3.19 st_woven</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           yellow gray woven stone
 
22829
</td></tr>
 
22830
<tr><td align="left" valign="top"><a href="#st_005fyellow">9.3.20 st_yellow</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          yellow stone with red green stripes
 
22831
</td></tr>
 
22832
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 
22833
</pre></th></tr></table>
 
22834
 
 
22835
<hr size="6">
 
22836
<a name="st_005fancient"></a>
 
22837
<table cellpadding="1" cellspacing="1" border="0">
 
22838
<tr><td valign="middle" align="left">[<a href="#Standard-Stones" title="Previous section in reading order"> &lt; </a>]</td>
 
22839
<td valign="middle" align="left">[<a href="#st_005fbluegray" title="Next section in reading order"> &gt; </a>]</td>
 
22840
<td valign="middle" align="left"> &nbsp; </td>
 
22841
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22842
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
22843
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22844
<td valign="middle" align="left"> &nbsp; </td>
 
22845
<td valign="middle" align="left"> &nbsp; </td>
 
22846
<td valign="middle" align="left"> &nbsp; </td>
 
22847
<td valign="middle" align="left"> &nbsp; </td>
 
22848
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22849
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22850
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22851
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22852
</tr></table>
 
22853
<a name="st_005fancient-1"></a>
 
22854
<h3 class="subsection">9.3.1 st_ancient</h3>
 
22855
<a name="index-st_005fancient"></a>
 
22856
 
 
22857
<p>A rough green gray rock that looks ancient.
 
22858
</p>
 
22859
<dl compact="compact">
 
22860
<dt> <b>Variants:</b></dt>
 
22861
<dd><dl compact="compact">
 
22862
<dt> <img src="images/st_ancient.png" alt="images/st_ancient"><p> <b>st_ancient</b>
 
22863
</p></dt>
 
22864
</dl>
 
22865
</dd>
 
22866
</dl>
 
22867
 
 
22868
<hr size="6">
 
22869
<a name="st_005fbluegray"></a>
 
22870
<table cellpadding="1" cellspacing="1" border="0">
 
22871
<tr><td valign="middle" align="left">[<a href="#st_005fancient" title="Previous section in reading order"> &lt; </a>]</td>
 
22872
<td valign="middle" align="left">[<a href="#st_005fbrownie" title="Next section in reading order"> &gt; </a>]</td>
 
22873
<td valign="middle" align="left"> &nbsp; </td>
 
22874
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22875
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
22876
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22877
<td valign="middle" align="left"> &nbsp; </td>
 
22878
<td valign="middle" align="left"> &nbsp; </td>
 
22879
<td valign="middle" align="left"> &nbsp; </td>
 
22880
<td valign="middle" align="left"> &nbsp; </td>
 
22881
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22882
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22883
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22884
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22885
</tr></table>
 
22886
<a name="st_005fbluegray-1"></a>
 
22887
<h3 class="subsection">9.3.2 st_bluegray</h3>
 
22888
<a name="index-st_005fbluegray"></a>
 
22889
 
 
22890
<p>A light blue gray stone that exists in all two variants. This stone is visually
 
22891
indistinguishable from a <a href="#st_005fthief">st_thief</a>.
 
22892
</p>
 
22893
<dl compact="compact">
 
22894
<dt> <b>Variants:</b></dt>
 
22895
<dd><dl compact="compact">
 
22896
<dt> <img src="images/st_bluegray.png" alt="images/st_bluegray"><p> <b>st_bluegray</b>
 
22897
</p></dt>
 
22898
<dt> <img src="images/st_bluegray.png" alt="images/st_bluegray"><p> <b>st_bluegray_hollow</b>
 
22899
</p></dt>
 
22900
</dl>
 
22901
</dd>
 
22902
</dl>
 
22903
 
 
22904
<hr size="6">
 
22905
<a name="st_005fbrownie"></a>
 
22906
<table cellpadding="1" cellspacing="1" border="0">
 
22907
<tr><td valign="middle" align="left">[<a href="#st_005fbluegray" title="Previous section in reading order"> &lt; </a>]</td>
 
22908
<td valign="middle" align="left">[<a href="#st_005fbrownmarble" title="Next section in reading order"> &gt; </a>]</td>
 
22909
<td valign="middle" align="left"> &nbsp; </td>
 
22910
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22911
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
22912
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22913
<td valign="middle" align="left"> &nbsp; </td>
 
22914
<td valign="middle" align="left"> &nbsp; </td>
 
22915
<td valign="middle" align="left"> &nbsp; </td>
 
22916
<td valign="middle" align="left"> &nbsp; </td>
 
22917
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22918
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22919
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22920
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22921
</tr></table>
 
22922
<a name="st_005fbrownie-1"></a>
 
22923
<h3 class="subsection">9.3.3 st_brownie</h3>
 
22924
<a name="index-st_005fbrownie"></a>
 
22925
 
 
22926
<p>A golden, hay stack like stone that exists just in a movable variant.
 
22927
</p>
 
22928
<dl compact="compact">
 
22929
<dt> <b>Variants:</b></dt>
 
22930
<dd><dl compact="compact">
 
22931
<dt> <img src="images/st_brownie.png" alt="images/st_brownie"><p> <b>st_brownie</b>
 
22932
</p></dt>
 
22933
</dl>
 
22934
</dd>
 
22935
</dl>
 
22936
 
 
22937
<hr size="6">
 
22938
<a name="st_005fbrownmarble"></a>
 
22939
<table cellpadding="1" cellspacing="1" border="0">
 
22940
<tr><td valign="middle" align="left">[<a href="#st_005fbrownie" title="Previous section in reading order"> &lt; </a>]</td>
 
22941
<td valign="middle" align="left">[<a href="#st_005fcamouflage" title="Next section in reading order"> &gt; </a>]</td>
 
22942
<td valign="middle" align="left"> &nbsp; </td>
 
22943
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22944
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
22945
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22946
<td valign="middle" align="left"> &nbsp; </td>
 
22947
<td valign="middle" align="left"> &nbsp; </td>
 
22948
<td valign="middle" align="left"> &nbsp; </td>
 
22949
<td valign="middle" align="left"> &nbsp; </td>
 
22950
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22951
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22952
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22953
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22954
</tr></table>
 
22955
<a name="st_005fbrownmarble-1"></a>
 
22956
<h3 class="subsection">9.3.4 st_brownmarble</h3>
 
22957
<a name="index-st_005fbrownmarble"></a>
 
22958
 
 
22959
<p>A brown gray marble like stone.
 
22960
</p>
 
22961
<dl compact="compact">
 
22962
<dt> <b>Variants:</b></dt>
 
22963
<dd><dl compact="compact">
 
22964
<dt> <img src="images/st_brownmarble.png" alt="images/st_brownmarble"><p> <b>st_brownmarble</b>
 
22965
</p></dt>
 
22966
</dl>
 
22967
</dd>
 
22968
</dl>
 
22969
 
 
22970
<hr size="6">
 
22971
<a name="st_005fcamouflage"></a>
 
22972
<table cellpadding="1" cellspacing="1" border="0">
 
22973
<tr><td valign="middle" align="left">[<a href="#st_005fbrownmarble" title="Previous section in reading order"> &lt; </a>]</td>
 
22974
<td valign="middle" align="left">[<a href="#st_005fconcrete" title="Next section in reading order"> &gt; </a>]</td>
 
22975
<td valign="middle" align="left"> &nbsp; </td>
 
22976
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
22977
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
22978
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
22979
<td valign="middle" align="left"> &nbsp; </td>
 
22980
<td valign="middle" align="left"> &nbsp; </td>
 
22981
<td valign="middle" align="left"> &nbsp; </td>
 
22982
<td valign="middle" align="left"> &nbsp; </td>
 
22983
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
22984
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
22985
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
22986
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
22987
</tr></table>
 
22988
<a name="st_005fcamouflage-1"></a>
 
22989
<h3 class="subsection">9.3.5 st_camouflage</h3>
 
22990
<a name="index-st_005fcamouflage"></a>
 
22991
 
 
22992
<p>A military green camouflage stone that exists in all three variants.
 
22993
</p>
 
22994
<dl compact="compact">
 
22995
<dt> <b>Variants:</b></dt>
 
22996
<dd><dl compact="compact">
 
22997
<dt> <img src="images/st_camouflage.png" alt="images/st_camouflage"><p> <b>st_camouflage</b>
 
22998
</p></dt>
 
22999
<dt> <b>st_camouflage_hollow</b></dt>
 
23000
<dt> <b>st_camouflage_movable</b></dt>
 
23001
</dl>
 
23002
</dd>
 
23003
</dl>
 
23004
 
 
23005
<hr size="6">
 
23006
<a name="st_005fconcrete"></a>
 
23007
<table cellpadding="1" cellspacing="1" border="0">
 
23008
<tr><td valign="middle" align="left">[<a href="#st_005fcamouflage" title="Previous section in reading order"> &lt; </a>]</td>
 
23009
<td valign="middle" align="left">[<a href="#st_005fdarkgray" title="Next section in reading order"> &gt; </a>]</td>
 
23010
<td valign="middle" align="left"> &nbsp; </td>
 
23011
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23012
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
23013
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23014
<td valign="middle" align="left"> &nbsp; </td>
 
23015
<td valign="middle" align="left"> &nbsp; </td>
 
23016
<td valign="middle" align="left"> &nbsp; </td>
 
23017
<td valign="middle" align="left"> &nbsp; </td>
 
23018
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23019
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23020
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23021
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23022
</tr></table>
 
23023
<a name="st_005fconcrete-1"></a>
 
23024
<h3 class="subsection">9.3.6 st_concrete</h3>
 
23025
<a name="index-st_005fconcrete"></a>
 
23026
 
 
23027
<p>A polished light gray stone.
 
23028
</p>
 
23029
<dl compact="compact">
 
23030
<dt> <b>Variants:</b></dt>
 
23031
<dd><dl compact="compact">
 
23032
<dt> <img src="images/st_concrete.png" alt="images/st_concrete"><p> <b>st_concrete</b>
 
23033
</p></dt>
 
23034
</dl>
 
23035
</dd>
 
23036
</dl>
 
23037
 
 
23038
<hr size="6">
 
23039
<a name="st_005fdarkgray"></a>
 
23040
<table cellpadding="1" cellspacing="1" border="0">
 
23041
<tr><td valign="middle" align="left">[<a href="#st_005fconcrete" title="Previous section in reading order"> &lt; </a>]</td>
 
23042
<td valign="middle" align="left">[<a href="#st_005fgranite" title="Next section in reading order"> &gt; </a>]</td>
 
23043
<td valign="middle" align="left"> &nbsp; </td>
 
23044
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23045
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
23046
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23047
<td valign="middle" align="left"> &nbsp; </td>
 
23048
<td valign="middle" align="left"> &nbsp; </td>
 
23049
<td valign="middle" align="left"> &nbsp; </td>
 
23050
<td valign="middle" align="left"> &nbsp; </td>
 
23051
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23052
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23053
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23054
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23055
</tr></table>
 
23056
<a name="st_005fdarkgray-1"></a>
 
23057
<h3 class="subsection">9.3.7 st_darkgray</h3>
 
23058
<a name="index-st_005fdarkgray"></a>
 
23059
 
 
23060
<p>A dark gray rock that exists in all two variants.
 
23061
</p>
 
23062
<dl compact="compact">
 
23063
<dt> <b>Variants:</b></dt>
 
23064
<dd><dl compact="compact">
 
23065
<dt> <img src="images/st_darkgray.png" alt="images/st_darkgray"><p> <b>st_darkgray</b>
 
23066
</p></dt>
 
23067
<dt> <b>st_darkgray_hollow</b></dt>
 
23068
</dl>
 
23069
</dd>
 
23070
</dl>
 
23071
 
 
23072
<hr size="6">
 
23073
<a name="st_005fgranite"></a>
 
23074
<table cellpadding="1" cellspacing="1" border="0">
 
23075
<tr><td valign="middle" align="left">[<a href="#st_005fdarkgray" title="Previous section in reading order"> &lt; </a>]</td>
 
23076
<td valign="middle" align="left">[<a href="#st_005fgreengray" title="Next section in reading order"> &gt; </a>]</td>
 
23077
<td valign="middle" align="left"> &nbsp; </td>
 
23078
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23079
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
23080
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23081
<td valign="middle" align="left"> &nbsp; </td>
 
23082
<td valign="middle" align="left"> &nbsp; </td>
 
23083
<td valign="middle" align="left"> &nbsp; </td>
 
23084
<td valign="middle" align="left"> &nbsp; </td>
 
23085
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23086
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23087
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23088
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23089
</tr></table>
 
23090
<a name="st_005fgranite-1"></a>
 
23091
<h3 class="subsection">9.3.8 st_granite</h3>
 
23092
<a name="index-st_005fgranite"></a>
 
23093
 
 
23094
<p>A light gray rock like stone that exists in all three variants.
 
23095
</p>
 
23096
<dl compact="compact">
 
23097
<dt> <b>Variants:</b></dt>
 
23098
<dd><dl compact="compact">
 
23099
<dt> <img src="images/st_granite.png" alt="images/st_granite"><p> <b>st_granite</b>
 
23100
</p></dt>
 
23101
<dt> <b>st_granite_hollow</b></dt>
 
23102
<dt> <b>st_granite_movable</b></dt>
 
23103
</dl>
 
23104
</dd>
 
23105
</dl>
 
23106
 
 
23107
<hr size="6">
 
23108
<a name="st_005fgreengray"></a>
 
23109
<table cellpadding="1" cellspacing="1" border="0">
 
23110
<tr><td valign="middle" align="left">[<a href="#st_005fgranite" title="Previous section in reading order"> &lt; </a>]</td>
 
23111
<td valign="middle" align="left">[<a href="#st_005finvisible" title="Next section in reading order"> &gt; </a>]</td>
 
23112
<td valign="middle" align="left"> &nbsp; </td>
 
23113
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23114
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
23115
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23116
<td valign="middle" align="left"> &nbsp; </td>
 
23117
<td valign="middle" align="left"> &nbsp; </td>
 
23118
<td valign="middle" align="left"> &nbsp; </td>
 
23119
<td valign="middle" align="left"> &nbsp; </td>
 
23120
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23121
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23122
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23123
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23124
</tr></table>
 
23125
<a name="st_005fgreengray-1"></a>
 
23126
<h3 class="subsection">9.3.9 st_greengray</h3>
 
23127
<a name="index-st_005fgreengray"></a>
 
23128
 
 
23129
<p>A light green gray rock.
 
23130
</p>
 
23131
<dl compact="compact">
 
23132
<dt> <b>Variants:</b></dt>
 
23133
<dd><dl compact="compact">
 
23134
<dt> <img src="images/st_greengray.png" alt="images/st_greengray"><p> <b>st_greengray</b>
 
23135
</p></dt>
 
23136
</dl>
 
23137
</dd>
 
23138
</dl>
 
23139
 
 
23140
<hr size="6">
 
23141
<a name="st_005finvisible"></a>
 
23142
<table cellpadding="1" cellspacing="1" border="0">
 
23143
<tr><td valign="middle" align="left">[<a href="#st_005fgreengray" title="Previous section in reading order"> &lt; </a>]</td>
 
23144
<td valign="middle" align="left">[<a href="#st_005fmetal" title="Next section in reading order"> &gt; </a>]</td>
 
23145
<td valign="middle" align="left"> &nbsp; </td>
 
23146
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23147
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
23148
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23149
<td valign="middle" align="left"> &nbsp; </td>
 
23150
<td valign="middle" align="left"> &nbsp; </td>
 
23151
<td valign="middle" align="left"> &nbsp; </td>
 
23152
<td valign="middle" align="left"> &nbsp; </td>
 
23153
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23154
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23155
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23156
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23157
</tr></table>
 
23158
<a name="st_005finvisible-1"></a>
 
23159
<h3 class="subsection">9.3.10 st_invisible</h3>
 
23160
<a name="index-st_005finvisible"></a>
 
23161
 
 
23162
<p>An invisible stone that exists in all three variants. Please make rare usage
 
23163
of this stone as it may be very annoying to users to guess that a stone
 
23164
exists that he can not see. Use it to maintain the WYSIWYG expected behaviour.
 
23165
</p>
 
23166
<p>Invisibility is not equal to laser transparency. In fact this stone is not
 
23167
laser transparent. And invisibility does not mean that an invisible actor can
 
23168
pass (see section <a href="#Transparent-Stones">Transparent Stones</a>).
 
23169
</p>
 
23170
<dl compact="compact">
 
23171
<dt> <b>Variants:</b></dt>
 
23172
<dd><dl compact="compact">
 
23173
<dt> <b>st_invisible</b></dt>
 
23174
<dt> <b>st_invisible_hollow</b></dt>
 
23175
<dt> <b>st_invisible_movable</b></dt>
 
23176
</dl>
 
23177
</dd>
 
23178
</dl>
 
23179
 
 
23180
<hr size="6">
 
23181
<a name="st_005fmetal"></a>
 
23182
<table cellpadding="1" cellspacing="1" border="0">
 
23183
<tr><td valign="middle" align="left">[<a href="#st_005finvisible" title="Previous section in reading order"> &lt; </a>]</td>
 
23184
<td valign="middle" align="left">[<a href="#st_005fpinkbumps" title="Next section in reading order"> &gt; </a>]</td>
 
23185
<td valign="middle" align="left"> &nbsp; </td>
 
23186
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23187
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
23188
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23189
<td valign="middle" align="left"> &nbsp; </td>
 
23190
<td valign="middle" align="left"> &nbsp; </td>
 
23191
<td valign="middle" align="left"> &nbsp; </td>
 
23192
<td valign="middle" align="left"> &nbsp; </td>
 
23193
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23194
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23195
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23196
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23197
</tr></table>
 
23198
<a name="st_005fmetal-1"></a>
 
23199
<h3 class="subsection">9.3.11 st_metal</h3>
 
23200
<a name="index-st_005fmetal"></a>
 
23201
 
 
23202
<p>A metal stone that exists in two variants.
 
23203
</p>
 
23204
<dl compact="compact">
 
23205
<dt> <b>Variants:</b></dt>
 
23206
<dd><dl compact="compact">
 
23207
<dt> <img src="images/st_metal.png" alt="images/st_metal"><p> <b>st_metal</b>
 
23208
</p></dt>
 
23209
<dt> <b>st_metal_hollow</b></dt>
 
23210
</dl>
 
23211
</dd>
 
23212
</dl>
 
23213
 
 
23214
<hr size="6">
 
23215
<a name="st_005fpinkbumps"></a>
 
23216
<table cellpadding="1" cellspacing="1" border="0">
 
23217
<tr><td valign="middle" align="left">[<a href="#st_005fmetal" title="Previous section in reading order"> &lt; </a>]</td>
 
23218
<td valign="middle" align="left">[<a href="#st_005fpurplegray" title="Next section in reading order"> &gt; </a>]</td>
 
23219
<td valign="middle" align="left"> &nbsp; </td>
 
23220
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23221
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
23222
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23223
<td valign="middle" align="left"> &nbsp; </td>
 
23224
<td valign="middle" align="left"> &nbsp; </td>
 
23225
<td valign="middle" align="left"> &nbsp; </td>
 
23226
<td valign="middle" align="left"> &nbsp; </td>
 
23227
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23228
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23229
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23230
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23231
</tr></table>
 
23232
<a name="st_005fpinkbumps-1"></a>
 
23233
<h3 class="subsection">9.3.12 st_pinkbumps</h3>
 
23234
<a name="index-st_005fpinkbumps"></a>
 
23235
 
 
23236
<p>A pink stone with heavy white bumps.
 
23237
</p>
 
23238
<dl compact="compact">
 
23239
<dt> <b>Variants:</b></dt>
 
23240
<dd><dl compact="compact">
 
23241
<dt> <img src="images/st_pinkbumps.png" alt="images/st_pinkbumps"><p> <b>st_pinkbumps</b>
 
23242
</p></dt>
 
23243
</dl>
 
23244
</dd>
 
23245
</dl>
 
23246
 
 
23247
<hr size="6">
 
23248
<a name="st_005fpurplegray"></a>
 
23249
<table cellpadding="1" cellspacing="1" border="0">
 
23250
<tr><td valign="middle" align="left">[<a href="#st_005fpinkbumps" title="Previous section in reading order"> &lt; </a>]</td>
 
23251
<td valign="middle" align="left">[<a href="#st_005fpurplemarble" title="Next section in reading order"> &gt; </a>]</td>
 
23252
<td valign="middle" align="left"> &nbsp; </td>
 
23253
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23254
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
23255
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23256
<td valign="middle" align="left"> &nbsp; </td>
 
23257
<td valign="middle" align="left"> &nbsp; </td>
 
23258
<td valign="middle" align="left"> &nbsp; </td>
 
23259
<td valign="middle" align="left"> &nbsp; </td>
 
23260
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23261
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23262
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23263
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23264
</tr></table>
 
23265
<a name="st_005fpurplegray-1"></a>
 
23266
<h3 class="subsection">9.3.13 st_purplegray</h3>
 
23267
<a name="index-st_005fpurplegray"></a>
 
23268
 
 
23269
<p>A dark purple gray rock.
 
23270
</p>
 
23271
<dl compact="compact">
 
23272
<dt> <b>Variants:</b></dt>
 
23273
<dd><dl compact="compact">
 
23274
<dt> <img src="images/st_purplegray.png" alt="images/st_purplegray"><p> <b>st_purplegray</b>
 
23275
</p></dt>
 
23276
</dl>
 
23277
</dd>
 
23278
</dl>
 
23279
 
 
23280
<hr size="6">
 
23281
<a name="st_005fpurplemarble"></a>
 
23282
<table cellpadding="1" cellspacing="1" border="0">
 
23283
<tr><td valign="middle" align="left">[<a href="#st_005fpurplegray" title="Previous section in reading order"> &lt; </a>]</td>
 
23284
<td valign="middle" align="left">[<a href="#st_005fredbrown" title="Next section in reading order"> &gt; </a>]</td>
 
23285
<td valign="middle" align="left"> &nbsp; </td>
 
23286
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23287
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
23288
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23289
<td valign="middle" align="left"> &nbsp; </td>
 
23290
<td valign="middle" align="left"> &nbsp; </td>
 
23291
<td valign="middle" align="left"> &nbsp; </td>
 
23292
<td valign="middle" align="left"> &nbsp; </td>
 
23293
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23294
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23295
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23296
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23297
</tr></table>
 
23298
<a name="st_005fpurplemarble-1"></a>
 
23299
<h3 class="subsection">9.3.14 st_purplemarble</h3>
 
23300
<a name="index-st_005fpurplemarble"></a>
 
23301
 
 
23302
<p>A purple marble stone.
 
23303
</p>
 
23304
<dl compact="compact">
 
23305
<dt> <b>Variants:</b></dt>
 
23306
<dd><dl compact="compact">
 
23307
<dt> <img src="images/st_purplemarble.png" alt="images/st_purplemarble"><p> <b>st_purplemarble</b>
 
23308
</p></dt>
 
23309
</dl>
 
23310
</dd>
 
23311
</dl>
 
23312
 
 
23313
<hr size="6">
 
23314
<a name="st_005fredbrown"></a>
 
23315
<table cellpadding="1" cellspacing="1" border="0">
 
23316
<tr><td valign="middle" align="left">[<a href="#st_005fpurplemarble" title="Previous section in reading order"> &lt; </a>]</td>
 
23317
<td valign="middle" align="left">[<a href="#st_005fredmarble" title="Next section in reading order"> &gt; </a>]</td>
 
23318
<td valign="middle" align="left"> &nbsp; </td>
 
23319
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23320
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
23321
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23322
<td valign="middle" align="left"> &nbsp; </td>
 
23323
<td valign="middle" align="left"> &nbsp; </td>
 
23324
<td valign="middle" align="left"> &nbsp; </td>
 
23325
<td valign="middle" align="left"> &nbsp; </td>
 
23326
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23327
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23328
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23329
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23330
</tr></table>
 
23331
<a name="st_005fredbrown-1"></a>
 
23332
<h3 class="subsection">9.3.15 st_redbrown</h3>
 
23333
<a name="index-st_005fredbrown"></a>
 
23334
 
 
23335
<p>A brown stone with light red touches that exists in all three variants.
 
23336
</p>
 
23337
<dl compact="compact">
 
23338
<dt> <b>Variants:</b></dt>
 
23339
<dd><dl compact="compact">
 
23340
<dt> <img src="images/st_redbrown.png" alt="images/st_redbrown"><p> <b>st_redbrown</b>
 
23341
</p></dt>
 
23342
<dt> <b>st_redbrown_hollow</b></dt>
 
23343
<dt> <b>st_redbrown_movable</b></dt>
 
23344
</dl>
 
23345
</dd>
 
23346
</dl>
 
23347
 
 
23348
<hr size="6">
 
23349
<a name="st_005fredmarble"></a>
 
23350
<table cellpadding="1" cellspacing="1" border="0">
 
23351
<tr><td valign="middle" align="left">[<a href="#st_005fredbrown" title="Previous section in reading order"> &lt; </a>]</td>
 
23352
<td valign="middle" align="left">[<a href="#st_005fredrock" title="Next section in reading order"> &gt; </a>]</td>
 
23353
<td valign="middle" align="left"> &nbsp; </td>
 
23354
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23355
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
23356
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23357
<td valign="middle" align="left"> &nbsp; </td>
 
23358
<td valign="middle" align="left"> &nbsp; </td>
 
23359
<td valign="middle" align="left"> &nbsp; </td>
 
23360
<td valign="middle" align="left"> &nbsp; </td>
 
23361
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23362
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23363
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23364
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23365
</tr></table>
 
23366
<a name="st_005fredmarble-1"></a>
 
23367
<h3 class="subsection">9.3.16 st_redmarble</h3>
 
23368
<a name="index-st_005fredmarble"></a>
 
23369
 
 
23370
<p>A red white marbled stone.
 
23371
</p>
 
23372
<dl compact="compact">
 
23373
<dt> <b>Variants:</b></dt>
 
23374
<dd><dl compact="compact">
 
23375
<dt> <img src="images/st_redmarble.png" alt="images/st_redmarble"><p> <b>st_redmarble</b>
 
23376
</p></dt>
 
23377
</dl>
 
23378
</dd>
 
23379
</dl>
 
23380
 
 
23381
<hr size="6">
 
23382
<a name="st_005fredrock"></a>
 
23383
<table cellpadding="1" cellspacing="1" border="0">
 
23384
<tr><td valign="middle" align="left">[<a href="#st_005fredmarble" title="Previous section in reading order"> &lt; </a>]</td>
 
23385
<td valign="middle" align="left">[<a href="#st_005ftigris" title="Next section in reading order"> &gt; </a>]</td>
 
23386
<td valign="middle" align="left"> &nbsp; </td>
 
23387
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23388
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
23389
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23390
<td valign="middle" align="left"> &nbsp; </td>
 
23391
<td valign="middle" align="left"> &nbsp; </td>
 
23392
<td valign="middle" align="left"> &nbsp; </td>
 
23393
<td valign="middle" align="left"> &nbsp; </td>
 
23394
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23395
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23396
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23397
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23398
</tr></table>
 
23399
<a name="st_005fredrock-1"></a>
 
23400
<h3 class="subsection">9.3.17 st_redrock</h3>
 
23401
<a name="index-st_005fredrock"></a>
 
23402
 
 
23403
<p>A dark red rock.
 
23404
</p>
 
23405
<dl compact="compact">
 
23406
<dt> <b>Variants:</b></dt>
 
23407
<dd><dl compact="compact">
 
23408
<dt> <img src="images/st_redrock.png" alt="images/st_redrock"><p> <b>st_redrock</b>
 
23409
</p></dt>
 
23410
</dl>
 
23411
</dd>
 
23412
</dl>
 
23413
 
 
23414
<hr size="6">
 
23415
<a name="st_005ftigris"></a>
 
23416
<table cellpadding="1" cellspacing="1" border="0">
 
23417
<tr><td valign="middle" align="left">[<a href="#st_005fredrock" title="Previous section in reading order"> &lt; </a>]</td>
 
23418
<td valign="middle" align="left">[<a href="#st_005fwoven" title="Next section in reading order"> &gt; </a>]</td>
 
23419
<td valign="middle" align="left"> &nbsp; </td>
 
23420
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23421
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
23422
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23423
<td valign="middle" align="left"> &nbsp; </td>
 
23424
<td valign="middle" align="left"> &nbsp; </td>
 
23425
<td valign="middle" align="left"> &nbsp; </td>
 
23426
<td valign="middle" align="left"> &nbsp; </td>
 
23427
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23428
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23429
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23430
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23431
</tr></table>
 
23432
<a name="st_005ftigris-1"></a>
 
23433
<h3 class="subsection">9.3.18 st_tigris</h3>
 
23434
<a name="index-st_005ftigris"></a>
 
23435
 
 
23436
<p>A red sandstone like <a href="#fl_005ftigris">fl_tigris</a>.
 
23437
</p>
 
23438
<dl compact="compact">
 
23439
<dt> <b>Variants:</b></dt>
 
23440
<dd><dl compact="compact">
 
23441
<dt> <img src="images/st_tigris.png" alt="images/st_tigris"><p> <b>st_tigris</b>
 
23442
</p></dt>
 
23443
</dl>
 
23444
</dd>
 
23445
</dl>
 
23446
 
 
23447
<hr size="6">
 
23448
<a name="st_005fwoven"></a>
 
23449
<table cellpadding="1" cellspacing="1" border="0">
 
23450
<tr><td valign="middle" align="left">[<a href="#st_005ftigris" title="Previous section in reading order"> &lt; </a>]</td>
 
23451
<td valign="middle" align="left">[<a href="#st_005fyellow" title="Next section in reading order"> &gt; </a>]</td>
 
23452
<td valign="middle" align="left"> &nbsp; </td>
 
23453
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23454
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
23455
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23456
<td valign="middle" align="left"> &nbsp; </td>
 
23457
<td valign="middle" align="left"> &nbsp; </td>
 
23458
<td valign="middle" align="left"> &nbsp; </td>
 
23459
<td valign="middle" align="left"> &nbsp; </td>
 
23460
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23461
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23462
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23463
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23464
</tr></table>
 
23465
<a name="st_005fwoven-1"></a>
 
23466
<h3 class="subsection">9.3.19 st_woven</h3>
 
23467
<a name="index-st_005fwoven"></a>
 
23468
 
 
23469
<p>A yellow gray woven stone.
 
23470
</p>
 
23471
<dl compact="compact">
 
23472
<dt> <b>Variants:</b></dt>
 
23473
<dd><dl compact="compact">
 
23474
<dt> <img src="images/st_woven.png" alt="images/st_woven"><p> <b>st_woven</b>
 
23475
</p></dt>
 
23476
</dl>
 
23477
</dd>
 
23478
</dl>
 
23479
 
 
23480
<hr size="6">
 
23481
<a name="st_005fyellow"></a>
 
23482
<table cellpadding="1" cellspacing="1" border="0">
 
23483
<tr><td valign="middle" align="left">[<a href="#st_005fwoven" title="Previous section in reading order"> &lt; </a>]</td>
 
23484
<td valign="middle" align="left">[<a href="#Cluster-Stones" title="Next section in reading order"> &gt; </a>]</td>
 
23485
<td valign="middle" align="left"> &nbsp; </td>
 
23486
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23487
<td valign="middle" align="left">[<a href="#Standard-Stones" title="Up section"> Up </a>]</td>
 
23488
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23489
<td valign="middle" align="left"> &nbsp; </td>
 
23490
<td valign="middle" align="left"> &nbsp; </td>
 
23491
<td valign="middle" align="left"> &nbsp; </td>
 
23492
<td valign="middle" align="left"> &nbsp; </td>
 
23493
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23494
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23495
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23496
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23497
</tr></table>
 
23498
<a name="st_005fyellow-1"></a>
 
23499
<h3 class="subsection">9.3.20 st_yellow</h3>
 
23500
<a name="index-st_005fyellow"></a>
 
23501
 
 
23502
<p>A yellow stone with red green stripes. This stone fits visually to the
 
23503
<a href="#st_005fcoinslot">st_coinslot</a>.
 
23504
</p>
 
23505
<dl compact="compact">
 
23506
<dt> <b>Variants:</b></dt>
 
23507
<dd><dl compact="compact">
 
23508
<dt> <img src="images/st_yellow.png" alt="images/st_yellow"><p> <b>st_yellow</b>
 
23509
</p></dt>
 
23510
</dl>
 
23511
</dd>
 
23512
</dl>
 
23513
 
 
23514
 
 
23515
<hr size="6">
 
23516
<a name="Cluster-Stones"></a>
 
23517
<table cellpadding="1" cellspacing="1" border="0">
 
23518
<tr><td valign="middle" align="left">[<a href="#st_005fyellow" title="Previous section in reading order"> &lt; </a>]</td>
 
23519
<td valign="middle" align="left">[<a href="#Cluster-Features" title="Next section in reading order"> &gt; </a>]</td>
 
23520
<td valign="middle" align="left"> &nbsp; </td>
 
23521
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23522
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Up section"> Up </a>]</td>
 
23523
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23524
<td valign="middle" align="left"> &nbsp; </td>
 
23525
<td valign="middle" align="left"> &nbsp; </td>
 
23526
<td valign="middle" align="left"> &nbsp; </td>
 
23527
<td valign="middle" align="left"> &nbsp; </td>
 
23528
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23529
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23530
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23531
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23532
</tr></table>
 
23533
<a name="Cluster-Stones-1"></a>
 
23534
<h2 class="section">9.4 Cluster Stones</h2>
 
23535
 
 
23536
<p>A cluster stone is a passive wall stone like a simple stone. But several
 
23537
cluster stones adjacent to each other can visually build a cluster and look
 
23538
like a single big stone with a one common outer face.
 
23539
</p>
 
23540
<table class="menu" border="0" cellspacing="0">
 
23541
<tr><td align="left" valign="top"><a href="#Cluster-Features">9.4.1 Cluster Features</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">   Common Attributes and Features
 
23542
</td></tr>
 
23543
<tr><td align="left" valign="top"><a href="#st_005fbluesand">9.4.2 st_bluesand</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        big sand stone look
 
23544
</td></tr>
 
23545
<tr><td align="left" valign="top"><a href="#st_005fbrick">9.4.3 st_brick</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           brick wall look
 
23546
</td></tr>
 
23547
<tr><td align="left" valign="top"><a href="#st_005fpanel">9.4.4 st_panel</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           wooden panel look
 
23548
</td></tr>
 
23549
</table>
 
23550
 
 
23551
<hr size="6">
 
23552
<a name="Cluster-Features"></a>
 
23553
<table cellpadding="1" cellspacing="1" border="0">
 
23554
<tr><td valign="middle" align="left">[<a href="#Cluster-Stones" title="Previous section in reading order"> &lt; </a>]</td>
 
23555
<td valign="middle" align="left">[<a href="#st_005fbluesand" title="Next section in reading order"> &gt; </a>]</td>
 
23556
<td valign="middle" align="left"> &nbsp; </td>
 
23557
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23558
<td valign="middle" align="left">[<a href="#Cluster-Stones" title="Up section"> Up </a>]</td>
 
23559
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23560
<td valign="middle" align="left"> &nbsp; </td>
 
23561
<td valign="middle" align="left"> &nbsp; </td>
 
23562
<td valign="middle" align="left"> &nbsp; </td>
 
23563
<td valign="middle" align="left"> &nbsp; </td>
 
23564
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23565
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23566
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23567
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23568
</tr></table>
 
23569
<a name="Cluster-Features-1"></a>
 
23570
<h3 class="subsection">9.4.1 Cluster Features</h3>
 
23571
 
 
23572
<p>For each cluster stone there exist 16 different variations that represent all
 
23573
needed combinations of inner and outer faces to build arbitrary shaped big
 
23574
blocks.
 
23575
</p>
 
23576
<p>There exist two methods of describing a special variation. You can either give
 
23577
the inner faces, the &lsquo;<samp>connections</samp>&rsquo;, those sides that should be adjacent to
 
23578
other stones of the same cluster. Or you can give the outer faces, the
 
23579
&lsquo;<samp>faces</samp>&rsquo;, that build the common outer face of the resulting big block.
 
23580
</p>
 
23581
<p>As it is a tedious work to set up larger blocks by their single stones with
 
23582
appropriate faces you can rely on an automatic clustering feature. Just
 
23583
set the &lsquo;<samp>cluster</samp>&rsquo; attribute of all single stones of a big block to the
 
23584
same number and the faces will be set up automatically to form a large block.
 
23585
</p>
 
23586
<p>You can build a screen of arbitrary big blocks and it is proven that there will
 
23587
never be the need of more than 4 different cluster numbers (the &quot;4 color
 
23588
theorem&quot;). But for convenience you are free to use additional cluster numbers
 
23589
as you like. Note that the autoclustering is quite dynamic. A single cluster
 
23590
stone with fitting cluster number that is swapped at the side of an existing
 
23591
block with the same cluster number will melt and join the block like seen in
 
23592
&quot;Terminator 2&quot;.
 
23593
</p>
 
23594
<p>We recommend making use of the autoclustering feature by setting the
 
23595
&lsquo;<samp>cluster</samp>&rsquo; attribute and using the &lsquo;<samp>faces</samp>&rsquo; attribute where necessary.
 
23596
&lsquo;<samp>connections</samp>&rsquo; attribute and explicit naming of variations by a suffix
 
23597
are deprecated, but will continue to be supported.
 
23598
</p>
 
23599
<dl compact="compact">
 
23600
<dt> <b>Attributes:</b></dt>
 
23601
<dd>
 
23602
<dl compact="compact">
 
23603
<dt> <b>connections</b>, &nbsp;&nbsp;<i>values</i>: string; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
23604
<dd><p>Describes the inner faces of stone. The string is a substring of <code>&quot;nesw&quot;</code>
 
23605
listing the inner faces. The sequence of the sides, north, east, south, west,
 
23606
is guaranteed on read access but arbitrary on write access.
 
23607
</p>
 
23608
</dd>
 
23609
<dt> <b>faces</b> &nbsp;&nbsp;<i>values</i>: string; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
23610
<dd><p>Describes the outer faces of stone. The string is a substring of <code>&quot;nesw&quot;</code>
 
23611
listing the outer faces. The sequence of the sides, north, east, south, west,
 
23612
is guaranteed on read access but arbitrary on write access.
 
23613
</p>
 
23614
</dd>
 
23615
<dt> <b>cluster</b> &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
23616
<dd><p>If set to a number all adjacent cluster stones of the same base type with
 
23617
the identical cluster number will build a big block. This attribute supersedes
 
23618
any explicitly given face description.
 
23619
</p>
 
23620
</dd>
 
23621
</dl>
 
23622
</dd>
 
23623
</dl>
 
23624
 
 
23625
<hr size="6">
 
23626
<a name="st_005fbluesand"></a>
 
23627
<table cellpadding="1" cellspacing="1" border="0">
 
23628
<tr><td valign="middle" align="left">[<a href="#Cluster-Features" title="Previous section in reading order"> &lt; </a>]</td>
 
23629
<td valign="middle" align="left">[<a href="#st_005fbrick" title="Next section in reading order"> &gt; </a>]</td>
 
23630
<td valign="middle" align="left"> &nbsp; </td>
 
23631
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23632
<td valign="middle" align="left">[<a href="#Cluster-Stones" title="Up section"> Up </a>]</td>
 
23633
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23634
<td valign="middle" align="left"> &nbsp; </td>
 
23635
<td valign="middle" align="left"> &nbsp; </td>
 
23636
<td valign="middle" align="left"> &nbsp; </td>
 
23637
<td valign="middle" align="left"> &nbsp; </td>
 
23638
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23639
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23640
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23641
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23642
</tr></table>
 
23643
<a name="st_005fbluesand-1"></a>
 
23644
<h3 class="subsection">9.4.2 st_bluesand</h3>
 
23645
<a name="index-st_005fbluesand"></a>
 
23646
 
 
23647
<p>A standard cluster stone with the <a href="#Cluster-Features">Cluster Features</a>. It is recommended
 
23648
to use &lsquo;<samp>st_bluesand</samp>&rsquo; with the attributes &lsquo;<samp>cluster</samp>&rsquo; and &lsquo;<samp>faces</samp>&rsquo;.
 
23649
</p>
 
23650
<dl compact="compact">
 
23651
<dt> <b>Variants:</b></dt>
 
23652
<dd><table>
 
23653
<tr><td width="8%"><img src="images/st_bluesand.png" alt="images/st_bluesand"></td><td width="42%"><b>st_bluesand</b>: connections = <code>&quot;&quot;</code></td><td width="8%"><img src="images/st_bluesand_2.png" alt="images/st_bluesand_2"></td><td width="42%"><b>st_bluesand_w</b>: connections = <code>&quot;w&quot;</code></td></tr>
 
23654
<tr><td width="8%"><img src="images/st_bluesand_3.png" alt="images/st_bluesand_3"></td><td width="42%"><b>st_bluesand_s</b>: connections = <code>&quot;s&quot;</code></td><td width="8%"><img src="images/st_bluesand_4.png" alt="images/st_bluesand_4"></td><td width="42%"><b>st_bluesand_sw</b>: connections = <code>&quot;sw&quot;</code></td></tr>
 
23655
<tr><td width="8%"><img src="images/st_bluesand_b.png" alt="images/st_bluesand_b"></td><td width="42%"><b>st_bluesand_e</b>: connections = <code>&quot;e&quot;</code></td><td width="8%"><img src="images/st_bluesand_b2.png" alt="images/st_bluesand_b2"></td><td width="42%"><b>st_bluesand_ew</b>: connections = <code>&quot;ew&quot;</code></td></tr>
 
23656
<tr><td width="8%"><img src="images/st_bluesand_b3.png" alt="images/st_bluesand_b3"></td><td width="42%"><b>st_bluesand_es</b>: connections = <code>&quot;es&quot;</code></td><td width="8%"><img src="images/st_bluesand_b4.png" alt="images/st_bluesand_b4"></td><td width="42%"><b>st_bluesand_esw</b>: connections = <code>&quot;esw&quot;</code></td></tr>
 
23657
<tr><td width="8%"><img src="images/st_bluesand_c.png" alt="images/st_bluesand_c"></td><td width="42%"><b>st_bluesand_n</b>: connections = <code>&quot;n&quot;</code></td><td width="8%"><img src="images/st_bluesand_c2.png" alt="images/st_bluesand_c2"></td><td width="42%"><b>st_bluesand_nw</b>: connections = <code>&quot;nw&quot;</code></td></tr>
 
23658
<tr><td width="8%"><img src="images/st_bluesand_c3.png" alt="images/st_bluesand_c3"></td><td width="42%"><b>st_bluesand_ns</b>: connections = <code>&quot;ns&quot;</code></td><td width="8%"><img src="images/st_bluesand_c4.png" alt="images/st_bluesand_c4"></td><td width="42%"><b>st_bluesand_nsw</b>: connections = <code>&quot;nsw&quot;</code></td></tr>
 
23659
<tr><td width="8%"><img src="images/st_bluesand_d.png" alt="images/st_bluesand_d"></td><td width="42%"><b>st_bluesand_ne</b>: connections = <code>&quot;ne&quot;</code></td><td width="8%"><img src="images/st_bluesand_d2.png" alt="images/st_bluesand_d2"></td><td width="42%"><b>st_bluesand_new</b>: connections = <code>&quot;new&quot;</code></td></tr>
 
23660
<tr><td width="8%"><img src="images/st_bluesand_d3.png" alt="images/st_bluesand_d3"></td><td width="42%"><b>st_bluesand_nes</b>: connections = <code>&quot;nes&quot;</code></td><td width="8%"><img src="images/st_bluesand_d4.png" alt="images/st_bluesand_d4"></td><td width="42%"><b>st_bluesand_nesw</b>: connections = <code>&quot;nesw&quot;</code></td></tr>
 
23661
</table>
 
23662
</dd>
 
23663
</dl>
 
23664
 
 
23665
<hr size="6">
 
23666
<a name="st_005fbrick"></a>
 
23667
<table cellpadding="1" cellspacing="1" border="0">
 
23668
<tr><td valign="middle" align="left">[<a href="#st_005fbluesand" title="Previous section in reading order"> &lt; </a>]</td>
 
23669
<td valign="middle" align="left">[<a href="#st_005fpanel" title="Next section in reading order"> &gt; </a>]</td>
 
23670
<td valign="middle" align="left"> &nbsp; </td>
 
23671
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23672
<td valign="middle" align="left">[<a href="#Cluster-Stones" title="Up section"> Up </a>]</td>
 
23673
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23674
<td valign="middle" align="left"> &nbsp; </td>
 
23675
<td valign="middle" align="left"> &nbsp; </td>
 
23676
<td valign="middle" align="left"> &nbsp; </td>
 
23677
<td valign="middle" align="left"> &nbsp; </td>
 
23678
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23679
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23680
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23681
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23682
</tr></table>
 
23683
<a name="st_005fbrick-1"></a>
 
23684
<h3 class="subsection">9.4.3 st_brick</h3>
 
23685
<a name="index-st_005fbrick"></a>
 
23686
 
 
23687
<p>A standard cluster stone with the <a href="#Cluster-Features">Cluster Features</a>. It is recommended
 
23688
to use &lsquo;<samp>st_brick</samp>&rsquo; with the attributes &lsquo;<samp>cluster</samp>&rsquo; and &lsquo;<samp>faces</samp>&rsquo;.
 
23689
</p>
 
23690
<dl compact="compact">
 
23691
<dt> <b>Variants:</b></dt>
 
23692
<dd><table>
 
23693
<tr><td width="8%"><img src="images/st_brick.png" alt="images/st_brick"></td><td width="42%"><b>st_brick</b>: connections = <code>&quot;&quot;</code></td><td width="8%"><img src="images/st_brick_2.png" alt="images/st_brick_2"></td><td width="42%"><b>st_brick_w</b>: connections = <code>&quot;w&quot;</code></td></tr>
 
23694
<tr><td width="8%"><img src="images/st_brick_3.png" alt="images/st_brick_3"></td><td width="42%"><b>st_brick_s</b>: connections = <code>&quot;s&quot;</code></td><td width="8%"><img src="images/st_brick_4.png" alt="images/st_brick_4"></td><td width="42%"><b>st_brick_sw</b>: connections = <code>&quot;sw&quot;</code></td></tr>
 
23695
<tr><td width="8%"><img src="images/st_brick_b.png" alt="images/st_brick_b"></td><td width="42%"><b>st_brick_e</b>: connections = <code>&quot;e&quot;</code></td><td width="8%"><img src="images/st_brick_b2.png" alt="images/st_brick_b2"></td><td width="42%"><b>st_brick_ew</b>: connections = <code>&quot;ew&quot;</code></td></tr>
 
23696
<tr><td width="8%"><img src="images/st_brick_b3.png" alt="images/st_brick_b3"></td><td width="42%"><b>st_brick_es</b>: connections = <code>&quot;es&quot;</code></td><td width="8%"><img src="images/st_brick_b4.png" alt="images/st_brick_b4"></td><td width="42%"><b>st_brick_esw</b>: connections = <code>&quot;esw&quot;</code></td></tr>
 
23697
<tr><td width="8%"><img src="images/st_brick_c.png" alt="images/st_brick_c"></td><td width="42%"><b>st_brick_n</b>: connections = <code>&quot;n&quot;</code></td><td width="8%"><img src="images/st_brick_c2.png" alt="images/st_brick_c2"></td><td width="42%"><b>st_brick_nw</b>: connections = <code>&quot;nw&quot;</code></td></tr>
 
23698
<tr><td width="8%"><img src="images/st_brick_c3.png" alt="images/st_brick_c3"></td><td width="42%"><b>st_brick_ns</b>: connections = <code>&quot;ns&quot;</code></td><td width="8%"><img src="images/st_brick_c4.png" alt="images/st_brick_c4"></td><td width="42%"><b>st_brick_nsw</b>: connections = <code>&quot;nsw&quot;</code></td></tr>
 
23699
<tr><td width="8%"><img src="images/st_brick_d.png" alt="images/st_brick_d"></td><td width="42%"><b>st_brick_ne</b>: connections = <code>&quot;ne&quot;</code></td><td width="8%"><img src="images/st_brick_d2.png" alt="images/st_brick_d2"></td><td width="42%"><b>st_brick_new</b>: connections = <code>&quot;new&quot;</code></td></tr>
 
23700
<tr><td width="8%"><img src="images/st_brick_d3.png" alt="images/st_brick_d3"></td><td width="42%"><b>st_brick_nes</b>: connections = <code>&quot;nes&quot;</code></td><td width="8%"><img src="images/st_brick_d4.png" alt="images/st_brick_d4"></td><td width="42%"><b>st_brick_nesw</b>: connections = <code>&quot;nesw&quot;</code></td></tr>
 
23701
</table>
 
23702
</dd>
 
23703
</dl>
 
23704
<hr size="6">
 
23705
<a name="st_005fpanel"></a>
 
23706
<table cellpadding="1" cellspacing="1" border="0">
 
23707
<tr><td valign="middle" align="left">[<a href="#st_005fbrick" title="Previous section in reading order"> &lt; </a>]</td>
 
23708
<td valign="middle" align="left">[<a href="#Special-Stones" title="Next section in reading order"> &gt; </a>]</td>
 
23709
<td valign="middle" align="left"> &nbsp; </td>
 
23710
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23711
<td valign="middle" align="left">[<a href="#Cluster-Stones" title="Up section"> Up </a>]</td>
 
23712
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23713
<td valign="middle" align="left"> &nbsp; </td>
 
23714
<td valign="middle" align="left"> &nbsp; </td>
 
23715
<td valign="middle" align="left"> &nbsp; </td>
 
23716
<td valign="middle" align="left"> &nbsp; </td>
 
23717
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23718
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23719
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23720
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23721
</tr></table>
 
23722
<a name="st_005fpanel-1"></a>
 
23723
<h3 class="subsection">9.4.4 st_panel</h3>
 
23724
<a name="index-st_005fpanel"></a>
 
23725
 
 
23726
<p>A standard cluster stone with the <a href="#Cluster-Features">Cluster Features</a>. It is recommended
 
23727
to use &lsquo;<samp>st_panel</samp>&rsquo; with the attributes &lsquo;<samp>cluster</samp>&rsquo; and &lsquo;<samp>faces</samp>&rsquo;.
 
23728
</p>
 
23729
<dl compact="compact">
 
23730
<dt> <b>Variants:</b></dt>
 
23731
<dd><table>
 
23732
<tr><td width="8%"><img src="images/st_panel.png" alt="images/st_panel"></td><td width="42%"><b>st_panel</b>: connections = <code>&quot;&quot;</code></td><td width="8%"><img src="images/st_panel_2.png" alt="images/st_panel_2"></td><td width="42%"><b>st_panel_w</b>: connections = <code>&quot;w&quot;</code></td></tr>
 
23733
<tr><td width="8%"><img src="images/st_panel_3.png" alt="images/st_panel_3"></td><td width="42%"><b>st_panel_s</b>: connections = <code>&quot;s&quot;</code></td><td width="8%"><img src="images/st_panel_4.png" alt="images/st_panel_4"></td><td width="42%"><b>st_panel_sw</b>: connections = <code>&quot;sw&quot;</code></td></tr>
 
23734
<tr><td width="8%"><img src="images/st_panel_b.png" alt="images/st_panel_b"></td><td width="42%"><b>st_panel_e</b>: connections = <code>&quot;e&quot;</code></td><td width="8%"><img src="images/st_panel_b2.png" alt="images/st_panel_b2"></td><td width="42%"><b>st_panel_ew</b>: connections = <code>&quot;ew&quot;</code></td></tr>
 
23735
<tr><td width="8%"><img src="images/st_panel_b3.png" alt="images/st_panel_b3"></td><td width="42%"><b>st_panel_es</b>: connections = <code>&quot;es&quot;</code></td><td width="8%"><img src="images/st_panel_b4.png" alt="images/st_panel_b4"></td><td width="42%"><b>st_panel_esw</b>: connections = <code>&quot;esw&quot;</code></td></tr>
 
23736
<tr><td width="8%"><img src="images/st_panel_c.png" alt="images/st_panel_c"></td><td width="42%"><b>st_panel_n</b>: connections = <code>&quot;n&quot;</code></td><td width="8%"><img src="images/st_panel_c2.png" alt="images/st_panel_c2"></td><td width="42%"><b>st_panel_nw</b>: connections = <code>&quot;nw&quot;</code></td></tr>
 
23737
<tr><td width="8%"><img src="images/st_panel_c3.png" alt="images/st_panel_c3"></td><td width="42%"><b>st_panel_ns</b>: connections = <code>&quot;ns&quot;</code></td><td width="8%"><img src="images/st_panel_c4.png" alt="images/st_panel_c4"></td><td width="42%"><b>st_panel_nsw</b>: connections = <code>&quot;nsw&quot;</code></td></tr>
 
23738
<tr><td width="8%"><img src="images/st_panel_d.png" alt="images/st_panel_d"></td><td width="42%"><b>st_panel_ne</b>: connections = <code>&quot;ne&quot;</code></td><td width="8%"><img src="images/st_panel_d2.png" alt="images/st_panel_d2"></td><td width="42%"><b>st_panel_new</b>: connections = <code>&quot;new&quot;</code></td></tr>
 
23739
<tr><td width="8%"><img src="images/st_panel_d3.png" alt="images/st_panel_d3"></td><td width="42%"><b>st_panel_nes</b>: connections = <code>&quot;nes&quot;</code></td><td width="8%"><img src="images/st_panel_d4.png" alt="images/st_panel_d4"></td><td width="42%"><b>st_panel_nesw</b>: connections = <code>&quot;nesw&quot;</code></td></tr>
 
23740
</table>
 
23741
</dd>
 
23742
</dl>
 
23743
 
 
23744
 
 
23745
<hr size="6">
 
23746
<a name="Special-Stones"></a>
 
23747
<table cellpadding="1" cellspacing="1" border="0">
 
23748
<tr><td valign="middle" align="left">[<a href="#st_005fpanel" title="Previous section in reading order"> &lt; </a>]</td>
 
23749
<td valign="middle" align="left">[<a href="#st_005factorimpulse" title="Next section in reading order"> &gt; </a>]</td>
 
23750
<td valign="middle" align="left"> &nbsp; </td>
 
23751
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23752
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Up section"> Up </a>]</td>
 
23753
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23754
<td valign="middle" align="left"> &nbsp; </td>
 
23755
<td valign="middle" align="left"> &nbsp; </td>
 
23756
<td valign="middle" align="left"> &nbsp; </td>
 
23757
<td valign="middle" align="left"> &nbsp; </td>
 
23758
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23759
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23760
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23761
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23762
</tr></table>
 
23763
<a name="Special-Stones-1"></a>
 
23764
<h2 class="section">9.5 Special Stones</h2>
 
23765
 
 
23766
<table class="menu" border="0" cellspacing="0">
 
23767
<tr><td align="left" valign="top"><a href="#st_005factorimpulse">9.5.1 st_actorimpulse</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    Bumper Stone
 
23768
</td></tr>
 
23769
<tr><td align="left" valign="top"><a href="#st_005fbarrier">9.5.2 st_barrier</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Barrier for item carrying actors
 
23770
</td></tr>
 
23771
<tr><td align="left" valign="top"><a href="#st_005fbeads">9.5.3 st_beads</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Frame of Glass Beads
 
23772
</td></tr>
 
23773
<tr><td align="left" valign="top"><a href="#st_005fblocker">9.5.4 st_blocker</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Shrinkable Blocker
 
23774
</td></tr>
 
23775
<tr><td align="left" valign="top"><a href="#st_005fblur">9.5.5 st_blur</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Passage of yet undetermined color
 
23776
</td></tr>
 
23777
<tr><td align="left" valign="top"><a href="#st_005fboulder">9.5.6 st_boulder</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Moving Arrow Boulder
 
23778
</td></tr>
 
23779
<tr><td align="left" valign="top"><a href="#st_005fbox">9.5.7 st_box</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Movable, Floor building Box
 
23780
</td></tr>
 
23781
<tr><td align="left" valign="top"><a href="#st_005fbrake">9.5.8 st_brake</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Brake for moving Boulders
 
23782
</td></tr>
 
23783
<tr><td align="left" valign="top"><a href="#st_005fbreak">9.5.9 st_break</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Breakable Stone of various Flavors
 
23784
</td></tr>
 
23785
<tr><td align="left" valign="top"><a href="#st_005fbrownpyramid">9.5.10 st_brownpyramid</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">   Brown gray pyramid shaped stone
 
23786
</td></tr>
 
23787
<tr><td align="left" valign="top"><a href="#st_005fchameleon">9.5.11 st_chameleon</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Floor Mimic
 
23788
</td></tr>
 
23789
<tr><td align="left" valign="top"><a href="#st_005fcharge">9.5.12 st_charge</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Electrical Charger
 
23790
</td></tr>
 
23791
<tr><td align="left" valign="top"><a href="#st_005fchess">9.5.13 st_chess</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Movable Chess Knight Stone
 
23792
</td></tr>
 
23793
<tr><td align="left" valign="top"><a href="#st_005fcoinslot">9.5.14 st_coinslot</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Coin Driven Switch
 
23794
</td></tr>
 
23795
<tr><td align="left" valign="top"><a href="#st_005fdarkglass">9.5.15 st_darkglass</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Semitransparent metal framed Glass
 
23796
</td></tr>
 
23797
<tr><td align="left" valign="top"><a href="#st_005fdeath">9.5.16 st_death</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Skull Stone
 
23798
</td></tr>
 
23799
<tr><td align="left" valign="top"><a href="#st_005fdisco">9.5.17 st_disco</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Light shading Stone
 
23800
</td></tr>
 
23801
<tr><td align="left" valign="top"><a href="#st_005fdispenser">9.5.18 st_dispenser</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Item Dispenser
 
23802
</td></tr>
 
23803
<tr><td align="left" valign="top"><a href="#st_005fdoor">9.5.19 st_door</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Door of various Flavors
 
23804
</td></tr>
 
23805
<tr><td align="left" valign="top"><a href="#st_005ffake">9.5.20 st_fake</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Fake mimicking other Stones
 
23806
</td></tr>
 
23807
<tr><td align="left" valign="top"><a href="#st_005fflash">9.5.21 st_flash</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Partner Marble pushing Stone
 
23808
</td></tr>
 
23809
<tr><td align="left" valign="top"><a href="#st_005fflat">9.5.22 st_flat</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Featured Gypsum Stone
 
23810
</td></tr>
 
23811
<tr><td align="left" valign="top"><a href="#st_005ffloppy">9.5.23 st_floppy</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Floppy Driven Switch
 
23812
</td></tr>
 
23813
<tr><td align="left" valign="top"><a href="#st_005ffourswitch">9.5.24 st_fourswitch</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Four Orientation Switch
 
23814
</td></tr>
 
23815
<tr><td align="left" valign="top"><a href="#st_005fghost">9.5.25 st_ghost</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Invisible Transforming Stone
 
23816
</td></tr>
 
23817
<tr><td align="left" valign="top"><a href="#st_005fgrate">9.5.26 st_grate</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Hovering metal Grate
 
23818
</td></tr>
 
23819
<tr><td align="left" valign="top"><a href="#st_005fgreenbrown">9.5.27 st_greenbrown</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Mainly brown seedable stone
 
23820
</td></tr>
 
23821
<tr><td align="left" valign="top"><a href="#st_005fice">9.5.28 st_ice</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Item and Floor freezing Ice block
 
23822
</td></tr>
 
23823
<tr><td align="left" valign="top"><a href="#st_005fjamb">9.5.29 st_jamb</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Colored Door Jamb
 
23824
</td></tr>
 
23825
<tr><td align="left" valign="top"><a href="#st_005fkey">9.5.30 st_key</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Key Driven Switch
 
23826
</td></tr>
 
23827
<tr><td align="left" valign="top"><a href="#st_005fknight">9.5.31 st_knight</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Sword Bearing Knight Stone
 
23828
</td></tr>
 
23829
<tr><td align="left" valign="top"><a href="#st_005flaser">9.5.32 st_laser</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Light emitting Laser
 
23830
</td></tr>
 
23831
<tr><td align="left" valign="top"><a href="#st_005flaserflop">9.5.33 st_laserflop</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Light sensitive Monoflop
 
23832
</td></tr>
 
23833
<tr><td align="left" valign="top"><a href="#st_005flaserswitch">9.5.34 st_laserswitch</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Light sensitive Switch
 
23834
</td></tr>
 
23835
<tr><td align="left" valign="top"><a href="#st_005flightglass">9.5.35 st_lightglass</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Transparent metal framed Glass
 
23836
</td></tr>
 
23837
<tr><td align="left" valign="top"><a href="#st_005flightpassenger">9.5.36 st_lightpassenger</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">  Stone pushed by Light
 
23838
</td></tr>
 
23839
<tr><td align="left" valign="top"><a href="#st_005fmagic">9.5.37 st_magic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Magic Transforming Stone
 
23840
</td></tr>
 
23841
<tr><td align="left" valign="top"><a href="#st_005fmail">9.5.38 st_mail</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Mail office for Item transportation
 
23842
</td></tr>
 
23843
<tr><td align="left" valign="top"><a href="#st_005fmirror">9.5.39 st_mirror</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Mirrors of all flavors
 
23844
</td></tr>
 
23845
<tr><td align="left" valign="top"><a href="#st_005fmonoflop">9.5.40 st_monoflop</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Monoflop Switch
 
23846
</td></tr>
 
23847
<tr><td align="left" valign="top"><a href="#st_005foneway">9.5.41 st_oneway</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Oneway Passage
 
23848
</td></tr>
 
23849
<tr><td align="left" valign="top"><a href="#st_005foxyd">9.5.42 st_oxyd</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Game Target Stone
 
23850
</td></tr>
 
23851
<tr><td align="left" valign="top"><a href="#st_005fpassage">9.5.43 st_passage</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Color dependent Passage
 
23852
</td></tr>
 
23853
<tr><td align="left" valign="top"><a href="#st_005fplaster">9.5.44 st_plaster</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Gypsum sculptured Stone
 
23854
</td></tr>
 
23855
<tr><td align="left" valign="top"><a href="#st_005fplop">9.5.45 st_plop</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Movable stone ceasing by a Plop
 
23856
</td></tr>
 
23857
<tr><td align="left" valign="top"><a href="#st_005fpolarswitch">9.5.46 st_polarswitch</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Transparency Switch for Light Beams
 
23858
</td></tr>
 
23859
<tr><td align="left" valign="top"><a href="#st_005fportal">9.5.47 st_portal</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Gate just passable by some Actor kinds
 
23860
</td></tr>
 
23861
<tr><td align="left" valign="top"><a href="#st_005fpull">9.5.48 st_pull</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Pullable Stone
 
23862
</td></tr>
 
23863
<tr><td align="left" valign="top"><a href="#st_005fpuzzle">9.5.49 st_puzzle</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Clusterable Puzzle Stones
 
23864
</td></tr>
 
23865
<tr><td align="left" valign="top"><a href="#st_005fquake">9.5.50 st_quake</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Oxyd closing Stone
 
23866
</td></tr>
 
23867
<tr><td align="left" valign="top"><a href="#st_005frawglass">9.5.51 st_rawglass</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Transparent Glass Block
 
23868
</td></tr>
 
23869
<tr><td align="left" valign="top"><a href="#st_005fredfiber">9.5.52 st_redfiber</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Woven Fiber in a metal Frame
 
23870
</td></tr>
 
23871
<tr><td align="left" valign="top"><a href="#st_005frotator">9.5.53 st_rotator</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Rotating Stone Impulser
 
23872
</td></tr>
 
23873
<tr><td align="left" valign="top"><a href="#st_005frubberband">9.5.54 st_rubberband</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Rubberband generator
 
23874
</td></tr>
 
23875
<tr><td align="left" valign="top"><a href="#st_005fscissors">9.5.55 st_scissors</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Scissors cutting rubberbands
 
23876
</td></tr>
 
23877
<tr><td align="left" valign="top"><a href="#st_005fshogun">9.5.56 st_shogun</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Stackable Hole Stones
 
23878
</td></tr>
 
23879
<tr><td align="left" valign="top"><a href="#st_005fspitter">9.5.57 st_spitter</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Cannonball spitting Stone
 
23880
</td></tr>
 
23881
<tr><td align="left" valign="top"><a href="#st_005fstoneimpulse">9.5.58 st_stoneimpulse</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    Neighbor Pushing pulsing Stone
 
23882
</td></tr>
 
23883
<tr><td align="left" valign="top"><a href="#st_005fsurprise">9.5.59 st_surprise</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Random Transforming Stone
 
23884
</td></tr>
 
23885
<tr><td align="left" valign="top"><a href="#st_005fswap">9.5.60 st_swap</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            Neighbor Swapping Stone
 
23886
</td></tr>
 
23887
<tr><td align="left" valign="top"><a href="#st_005fswitch">9.5.61 st_switch</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Classical on/off Switch
 
23888
</td></tr>
 
23889
<tr><td align="left" valign="top"><a href="#st_005fthief">9.5.62 st_thief</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Item Thief
 
23890
</td></tr>
 
23891
<tr><td align="left" valign="top"><a href="#st_005ftimer">9.5.63 st_timer</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Animated Timer
 
23892
</td></tr>
 
23893
<tr><td align="left" valign="top"><a href="#st_005fturnstile">9.5.64 st_turnstile</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Turnstile Pivot
 
23894
</td></tr>
 
23895
<tr><td align="left" valign="top"><a href="#st_005fturnstilearm">9.5.65 st_turnstilearm</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    Turnstile Arm
 
23896
</td></tr>
 
23897
<tr><td align="left" valign="top"><a href="#st_005fvolcano">9.5.66 st_volcano</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Spreading Volcano
 
23898
</td></tr>
 
23899
<tr><td align="left" valign="top"><a href="#st_005fwindow">9.5.67 st_window</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Faced Window
 
23900
</td></tr>
 
23901
<tr><td align="left" valign="top"><a href="#st_005fyinyang">9.5.68 st_yinyang</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Player Switch
 
23902
</td></tr>
 
23903
</table>
 
23904
 
 
23905
 
 
23906
<hr size="6">
 
23907
<a name="st_005factorimpulse"></a>
 
23908
<table cellpadding="1" cellspacing="1" border="0">
 
23909
<tr><td valign="middle" align="left">[<a href="#Special-Stones" title="Previous section in reading order"> &lt; </a>]</td>
 
23910
<td valign="middle" align="left">[<a href="#st_005fbarrier" title="Next section in reading order"> &gt; </a>]</td>
 
23911
<td valign="middle" align="left"> &nbsp; </td>
 
23912
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23913
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
23914
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23915
<td valign="middle" align="left"> &nbsp; </td>
 
23916
<td valign="middle" align="left"> &nbsp; </td>
 
23917
<td valign="middle" align="left"> &nbsp; </td>
 
23918
<td valign="middle" align="left"> &nbsp; </td>
 
23919
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
23920
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
23921
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
23922
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
23923
</tr></table>
 
23924
<a name="st_005factorimpulse-1"></a>
 
23925
<h3 class="subsection">9.5.1 st_actorimpulse</h3>
 
23926
<a name="index-st_005factorimpulse"></a>
 
23927
 
 
23928
<p>An active bumper for actors and some stones like <a href="#st_005fboulder">st_boulder</a>. The
 
23929
actorimpulse stone can be made invisible while idle to introduce some surprise
 
23930
effects.
 
23931
</p>
 
23932
<p>Actors that hit this stone will not be reflected just passively. An additional
 
23933
force will be applied to them that can even be distorted. By default the actors
 
23934
are just pushed away from the center of the stone. A global attribute
 
23935
<a href="#ActorimpulseStrength">ActorimpulseStrength</a> gives a default force that can be overridden by the
 
23936
stone attribute &lsquo;<samp>strength</samp>&rsquo;.
 
23937
</p>
 
23938
<p>For sophisticated usage you can distort this force by usage of the <a href="#hit_005f_002a">hit_*</a>
 
23939
attributes. Note that the &lsquo;<samp>hit_factor</samp>&rsquo; overrides a &lsquo;<samp>strength</samp>&rsquo;
 
23940
attribute.
 
23941
</p>
 
23942
<p>An actorimpulse stone can be configured by the &lsquo;<samp>invisible</samp>&rsquo; attribute to
 
23943
be hidden while being idle. While pulsing any actorimpulse is visible. An
 
23944
invisible actorimpulse can be made permanently visible by hitting it with a
 
23945
revealed <a href="#it_005fbrush">it_brush</a> in the player&rsquo;s inventory. The level author can configure
 
23946
<a href="#it_005fglasses">it_glasses</a> by addition of &lsquo;<samp>SPOT_ACTORIMPULSE</samp>&rsquo; to show otherwise
 
23947
invisible actorimpulse stones. With the global attribute <a href="#ExtralifeGlasses">ExtralifeGlasses</a>
 
23948
even glasses generated by laser lighting an <a href="#it_005fextralife">it_extralife</a> can be configured
 
23949
to show invisible actorimpulse stones.
 
23950
</p>
 
23951
<p>An <a href="#st_005fboulder">st_boulder</a> hitting an actorimpulse stone will revert its orientation
 
23952
and return in the incoming direction.
 
23953
</p>
 
23954
<dl compact="compact">
 
23955
<dt> <b>Attributes:</b></dt>
 
23956
<dd>
 
23957
<dl compact="compact">
 
23958
<dt> <b>invisible</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
23959
<dd><p>An invisible actorimpulse stone is totally transparent. But the user will
 
23960
notice it, as actors will bounce with additional impulses.
 
23961
</p></dd>
 
23962
<dt> <b>strength</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>+200.0</code> &nbsp;&nbsp;See section <a href="#ActorimpulseStrength">ActorimpulseStrength</a></dt>
 
23963
<dd><p>A scalar factor for the impulse force. Positive numbers are attracting forces
 
23964
where as negative numbers are repelling forces.
 
23965
</p></dd>
 
23966
<dt> <b>hit_strength</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>nil</code> &nbsp;&nbsp;See section <a href="#hit_005f_002a">hit_*</a></dt>
 
23967
<dd><p>A &lsquo;<samp>hit_strength</samp>&rsquo; overrides a given &lsquo;<samp>strength</samp>&rsquo; attribute.
 
23968
</p></dd>
 
23969
<dt> <b>hit_distortion_xx</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>+1.0</code> &nbsp;&nbsp;See section <a href="#hit_005f_002a">hit_*</a></dt>
 
23970
<dt> <b>hit_distortion_xy</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>0.0</code> &nbsp;&nbsp;See section <a href="#hit_005f_002a">hit_*</a></dt>
 
23971
<dt> <b>hit_distortion_yx</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>0.0</code> &nbsp;&nbsp;See section <a href="#hit_005f_002a">hit_*</a></dt>
 
23972
<dt> <b>hit_distortion_yy</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>+1.0</code> &nbsp;&nbsp;See section <a href="#hit_005f_002a">hit_*</a></dt>
 
23973
</dl>
 
23974
 
 
23975
</dd>
 
23976
<dt> <b>Messages:</b> none</dt>
 
23977
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
23978
<dt> <b>Variants:</b></dt>
 
23979
<dd>
 
23980
<dl compact="compact">
 
23981
<dt> <img src="images/st_actorimpulse.png" alt="images/st_actorimpulse"><p> <b>st_actorimpulse</b>: invisible = <code>false</code>
 
23982
</p></dt>
 
23983
<dt> <img src="images/fl_white.png" alt="images/fl_white"><p> <b>st_actorimpulse_invisible</b>: invisible = <code>true</code>
 
23984
</p></dt>
 
23985
</dl>
 
23986
 
 
23987
</dd>
 
23988
</dl>
 
23989
 
 
23990
<hr size="6">
 
23991
<a name="st_005fbarrier"></a>
 
23992
<table cellpadding="1" cellspacing="1" border="0">
 
23993
<tr><td valign="middle" align="left">[<a href="#st_005factorimpulse" title="Previous section in reading order"> &lt; </a>]</td>
 
23994
<td valign="middle" align="left">[<a href="#st_005fbeads" title="Next section in reading order"> &gt; </a>]</td>
 
23995
<td valign="middle" align="left"> &nbsp; </td>
 
23996
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
23997
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
23998
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
23999
<td valign="middle" align="left"> &nbsp; </td>
 
24000
<td valign="middle" align="left"> &nbsp; </td>
 
24001
<td valign="middle" align="left"> &nbsp; </td>
 
24002
<td valign="middle" align="left"> &nbsp; </td>
 
24003
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
24004
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
24005
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
24006
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
24007
</tr></table>
 
24008
<a name="st_005fbarrier-1"></a>
 
24009
<h3 class="subsection">9.5.2 st_barrier</h3>
 
24010
<a name="index-st_005fbarrier"></a>
 
24011
 
 
24012
<p>The barrier stone blocks actors that carry a given item kind in their inventory.
 
24013
By blocking all entries to a given room by barriers of the same &lsquo;<samp>flavor</samp>&rsquo;
 
24014
you can assure that no actor can use the given item kind within the room, even
 
24015
when the item is available outside of the room. The barrier acts like customs
 
24016
service. The barrier performs a deep check investigating not only the top level
 
24017
of the actor&rsquo;s inventory. Every <a href="#it_005fbag">it_bag</a> will be checked recursively, too,
 
24018
ensuring that no instance of the searched item can pass the barrier.
 
24019
</p>
 
24020
<p>The &lsquo;<samp>flavor</samp>&rsquo; attribute determines the blocked item kind. The string
 
24021
<code>&quot;all&quot;</code> blocks any item. Any string containing an <a href="#Object-Kind">Object Kind</a>
 
24022
will block items of just the given kind. Of course you can use just kinds of
 
24023
<a href="#portable">portable</a> items. E.g. a &lsquo;<samp>flavor</samp>&rsquo; of <code>&quot;it_flag_white&quot;</code> will just
 
24024
block actors that carry a white <a href="#it_005fflag">it_flag</a>, while <code>&quot;it_flag&quot;</code> would
 
24025
block actors carrying flags of any color. The blocked item kind is indicated on
 
24026
top of the barrier stone.
 
24027
</p>
 
24028
<p>Be aware that barrier stones can be circumvented with two actors exchanging
 
24029
their positions by <a href="#it_005fyinyang">it_yinyang</a> usage. As the player can not drop the
 
24030
<a href="#it_005fyinyang">it_yinyang</a> it is no use to add an additional barrier stone for this item.
 
24031
Multiple actors assigned to a single player are another potential shortcut of
 
24032
barrier stones.
 
24033
</p>
 
24034
<p>As barrier stones are usually bound to their initial position to fulfill their
 
24035
item blocking task, they are kept from being swapped of pulled by the
 
24036
&lsquo;<samp>static</samp>&rsquo; attribute&rsquo;s default of <code>true</code>.
 
24037
</p>
 
24038
<dl compact="compact">
 
24039
<dt> <b>Attributes:</b></dt>
 
24040
<dd>
 
24041
<dl compact="compact">
 
24042
<dt> <b>flavor</b> &nbsp;&nbsp;<i>values</i>: <code>&quot;all&quot;</code>, any portable item kind string; &nbsp;&nbsp;<i>default</i>: <code>&quot;all&quot;</code></dt>
 
24043
<dd><p>The item kind to be searched for.
 
24044
</p></dd>
 
24045
<dt> <b>static</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
24046
<dd><p>Static barriers are neither swappable nor pullable.
 
24047
</p></dd>
 
24048
</dl>
 
24049
 
 
24050
</dd>
 
24051
<dt> <b>Messages:</b> none</dt>
 
24052
<dt> <b>Action:</b> none</dt>
 
24053
<dt> <b>Variants:</b></dt>
 
24054
<dd><dl compact="compact">
 
24055
<dt> <img src="images/st_barrier.png" alt="images/st_barrier"><p> <b>st_barrier</b>: flavor=<code>&quot;all&quot;</code>
 
24056
</p></dt>
 
24057
</dl>
 
24058
</dd>
 
24059
</dl>
 
24060
 
 
24061
<hr size="6">
 
24062
<a name="st_005fbeads"></a>
 
24063
<table cellpadding="1" cellspacing="1" border="0">
 
24064
<tr><td valign="middle" align="left">[<a href="#st_005fbarrier" title="Previous section in reading order"> &lt; </a>]</td>
 
24065
<td valign="middle" align="left">[<a href="#st_005fblocker" title="Next section in reading order"> &gt; </a>]</td>
 
24066
<td valign="middle" align="left"> &nbsp; </td>
 
24067
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
24068
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
24069
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
24070
<td valign="middle" align="left"> &nbsp; </td>
 
24071
<td valign="middle" align="left"> &nbsp; </td>
 
24072
<td valign="middle" align="left"> &nbsp; </td>
 
24073
<td valign="middle" align="left"> &nbsp; </td>
 
24074
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
24075
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
24076
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
24077
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
24078
</tr></table>
 
24079
<a name="st_005fbeads-1"></a>
 
24080
<h3 class="subsection">9.5.3 st_beads</h3>
 
24081
<a name="index-st_005fbeads"></a>
 
24082
 
 
24083
<p>A stone framed by glass beads. Like other <a href="#Transparent-Stones">Transparent Stones</a> it is
 
24084
passable for invisible actors, but it is not transparent to laser beams.
 
24085
</p>
 
24086
<p>Like <a href="#st_005foneway">st_oneway</a> the beads stone does not detain visible actors once they
 
24087
entered the grid and lets them leave on any side.
 
24088
</p>
 
24089
<dl compact="compact">
 
24090
<dt> <b>Attributes:</b> none</dt>
 
24091
<dt> <b>Messages:</b> none</dt>
 
24092
<dt> <b>Variants:</b></dt>
 
24093
<dd><dl compact="compact">
 
24094
<dt> <img src="images/st_beads.png" alt="images/st_beads"><p> <b>st_beads</b>
 
24095
</p></dt>
 
24096
</dl>
 
24097
 
 
24098
</dd>
 
24099
</dl>
 
24100
 
 
24101
<hr size="6">
 
24102
<a name="st_005fblocker"></a>
 
24103
<table cellpadding="1" cellspacing="1" border="0">
 
24104
<tr><td valign="middle" align="left">[<a href="#st_005fbeads" title="Previous section in reading order"> &lt; </a>]</td>
 
24105
<td valign="middle" align="left">[<a href="#st_005fblur" title="Next section in reading order"> &gt; </a>]</td>
 
24106
<td valign="middle" align="left"> &nbsp; </td>
 
24107
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
24108
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
24109
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
24110
<td valign="middle" align="left"> &nbsp; </td>
 
24111
<td valign="middle" align="left"> &nbsp; </td>
 
24112
<td valign="middle" align="left"> &nbsp; </td>
 
24113
<td valign="middle" align="left"> &nbsp; </td>
 
24114
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
24115
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
24116
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
24117
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
24118
</tr></table>
 
24119
<a name="st_005fblocker-1"></a>
 
24120
<h3 class="subsection">9.5.4 st_blocker</h3>
 
24121
<a name="index-st_005fblocker"></a>
 
24122
 
 
24123
<p>A door like object that shrinks to <a href="#it_005fblocker">it_blocker</a> when hit by an
 
24124
<a href="#st_005fboulder">st_boulder</a>. When the boulder did pass the blocker stays in its item like
 
24125
open state until it is passed again by a boulder which causes it to grow again
 
24126
to a blocker stone.
 
24127
</p>
 
24128
<p>It fully supports the messages of any door like object and can be opened and
 
24129
closed by any switch like object. Note that due to the transformation between
 
24130
stone and item during opening and closing you should name the blocker
 
24131
(see section <a href="#name">name</a>) and address the blocker by this name. The complete identity
 
24132
with all attributes including any user attributes will be transferred between
 
24133
stone and item. E.g. &lsquo;<samp>{st_switch, target=&quot;myblocker&quot;, action=&quot;toggle&quot;}</samp>&rsquo;
 
24134
will open and close a given blocker multiple times.
 
24135
</p>
 
24136
<p>Note that the blocker is the only door object that allows a stone to be pushed
 
24137
through. Just boulders cause the growing. Any other stone keeps the open state.
 
24138
</p>
 
24139
<p>Be aware that the <a href="#it_005fbrake">it_brake</a> destroys an <a href="#it_005fblocker">it_blocker</a>.
 
24140
</p>
 
24141
<dl compact="compact">
 
24142
<dt> <b>Attributes:</b></dt>
 
24143
<dd>
 
24144
<dl compact="compact">
 
24145
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>OPEN</code>, <code>CLOSED</code>; &nbsp;&nbsp;<i>default</i>: <code>CLOSED</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
24146
<dd><p>The stone represents the closed state and will always return state &lsquo;<samp>CLOSED</samp>&rsquo;.
 
24147
But you can set its state what is equivalent to sending an open message in case
 
24148
of value &lsquo;<samp>OPEN</samp>&rsquo; and a close message in case of value &lsquo;<samp>CLOSED</samp>&rsquo;.
 
24149
</p>
 
24150
<a name="index-autoclose-1"></a>
 
24151
</dd>
 
24152
<dt> <b>autoclose</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
24153
<dd><p>This attribute is irrelevant to the blocker stone itself. But it is transferred
 
24154
to the <a href="#it_005fblocker">it_blocker</a> when the blocker opens.
 
24155
</p>
 
24156
</dd>
 
24157
</dl>
 
24158
 
 
24159
</dd>
 
24160
<dt> <b>Messages:</b></dt>
 
24161
<dd>
 
24162
<dl compact="compact">
 
24163
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
24164
<dd><p>A signal of value 1 sends an open message, a signal of value 0 sends a close
 
24165
message.
 
24166
</p></dd>
 
24167
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
24168
<dd><p>A toggle causes an open unless the blocker stone is in the shrinking process.
 
24169
In this case it causes a close message.
 
24170
</p></dd>
 
24171
<dt> <b>open</b> &nbsp;&nbsp;See section <a href="#open">open</a></dt>
 
24172
<dd><p>Starts an opening by shrinking the blocker. Note that during the shrinking
 
24173
process the blocker still reports to be closed. The shrinking process can
 
24174
be reverted by a close message.
 
24175
</p></dd>
 
24176
<dt> <b>close</b> &nbsp;&nbsp;See section <a href="#close">close</a></dt>
 
24177
<dd><p>A close message takes only effect on a blocker stone that is in the shrinking
 
24178
process. The shrinking is stopped immediately and reverted to grow the blocker
 
24179
again to full size.
 
24180
</p></dd>
 
24181
</dl>
 
24182
 
 
24183
</dd>
 
24184
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
24185
<dd><p>Sends an action at the moment the blocker reaches the closing state. That means
 
24186
an <a href="#it_005fblocker">it_blocker</a> did close and did generate this blocker stone as its
 
24187
successor. The value will be &lsquo;<samp>false</samp>&rsquo; to express the closing state.
 
24188
</p>
 
24189
</dd>
 
24190
<dt> <b>Variants:</b></dt>
 
24191
<dd><dl compact="compact">
 
24192
<dt> <img src="images/st_blocker.png" alt="images/st_blocker"><p>  <b>st_blocker</b>
 
24193
</p></dt>
 
24194
<dd><p>A standard blocker stone.
 
24195
</p></dd>
 
24196
<dt> <img src="images/st_blocker.png" alt="images/st_blocker"><p>  <b>st_blocker_new</b>
 
24197
</p></dt>
 
24198
<dd><p>A blocker that just starts growing. Mainly used internally as the direct
 
24199
successor of an <a href="#it_005fblocker">it_blocker</a>. But it may be useful to generate an initial
 
24200
snapshot of a moving boulder over a blocker line, too. See example levels.
 
24201
</p></dd>
 
24202
</dl>
 
24203
 
 
24204
</dd>
 
24205
</dl>
 
24206
 
 
24207
<hr size="6">
 
24208
<a name="st_005fblur"></a>
 
24209
<table cellpadding="1" cellspacing="1" border="0">
 
24210
<tr><td valign="middle" align="left">[<a href="#st_005fblocker" title="Previous section in reading order"> &lt; </a>]</td>
 
24211
<td valign="middle" align="left">[<a href="#st_005fboulder" title="Next section in reading order"> &gt; </a>]</td>
 
24212
<td valign="middle" align="left"> &nbsp; </td>
 
24213
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
24214
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
24215
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
24216
<td valign="middle" align="left"> &nbsp; </td>
 
24217
<td valign="middle" align="left"> &nbsp; </td>
 
24218
<td valign="middle" align="left"> &nbsp; </td>
 
24219
<td valign="middle" align="left"> &nbsp; </td>
 
24220
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
24221
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
24222
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
24223
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
24224
</tr></table>
 
24225
<a name="st_005fblur-1"></a>
 
24226
<h3 class="subsection">9.5.5 st_blur</h3>
 
24227
<a name="index-st_005fblur"></a>
 
24228
 
 
24229
<p>A gray stone that transforms on an actor hit into a <a href="#st_005fpassage">st_passage</a> depending
 
24230
on the color of actor. The color of the passage may be the same as
 
24231
the color of the actor or be of the opposite color. The flavor of the passage
 
24232
is always <code>&quot;square&quot;</code>.
 
24233
</p>
 
24234
<p>In the first case the blur stone is pure gray and its  &lsquo;<samp>flavor</samp>&rsquo; is called
 
24235
<code>&quot;straight&quot;</code> due to the straight color preserving transformation. The
 
24236
touching actor will be able to pass the passage straight away.
 
24237
</p>
 
24238
<p>In the second case the blur stone has an added white and black symbol to notify
 
24239
the player that, on touching the stone with a colored actor, this actor will not
 
24240
be able to pass the resulting passage. There are two flavors of such blur stones
 
24241
- <code>&quot;cross&quot;</code> which transform unconditionally on an actor hit to the opposite
 
24242
colored <a href="#st_005fpassage">st_passage</a> and flavor <code>&quot;magic&quot;</code> which transforms just on
 
24243
actors hitting the blur stone with a revealed <a href="#it_005fmagicwand">it_magicwand</a> or
 
24244
<a href="#it_005fbrush">it_brush</a> in their inventory.
 
24245
</p>
 
24246
<p>For colorless actors a blur stone is just a standard stone without any special
 
24247
features.
 
24248
</p>
 
24249
<dl compact="compact">
 
24250
<dt> <b>Attributes:</b></dt>
 
24251
<dd>
 
24252
<dl compact="compact">
 
24253
<dt> <b>flavor</b> &nbsp;&nbsp;<i>values</i>: <code>&quot;straight&quot;</code>, <code>&quot;cross&quot;</code>, <code>&quot;magic&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;straight&quot;</code></dt>
 
24254
<dd><p>The blur subkind.
 
24255
</p></dd>
 
24256
</dl>
 
24257
 
 
24258
</dd>
 
24259
<dt> <b>Messages:</b> none</dt>
 
24260
<dt> <b>Action:</b> none</dt>
 
24261
<dt> <b>Variants:</b></dt>
 
24262
<dd>
 
24263
<dl compact="compact">
 
24264
<dt> <img src="images/st_blur_straight.png" alt="images/st_blur_straight"><p> <b>st_blur</b>: flavor = <code>&quot;straight&quot;</code>
 
24265
</p></dt>
 
24266
<dt> <img src="images/st_blur_straight.png" alt="images/st_blur_straight"><p> <b>st_blur_straight</b>: flavor = <code>&quot;straight&quot;</code>
 
24267
</p></dt>
 
24268
<dt> <img src="images/st_blur_cross.png" alt="images/st_blur_cross"><p> <b>st_blur_cross</b>: flavor = <code>&quot;cross&quot;</code>
 
24269
</p></dt>
 
24270
<dt> <img src="images/st_blur_cross.png" alt="images/st_blur_cross"><p> <b>st_blur_magic</b>: flavor = <code>&quot;magic&quot;</code>
 
24271
</p></dt>
 
24272
</dl>
 
24273
 
 
24274
</dd>
 
24275
</dl>
 
24276
 
 
24277
<hr size="6">
 
24278
<a name="st_005fboulder"></a>
 
24279
<table cellpadding="1" cellspacing="1" border="0">
 
24280
<tr><td valign="middle" align="left">[<a href="#st_005fblur" title="Previous section in reading order"> &lt; </a>]</td>
 
24281
<td valign="middle" align="left">[<a href="#st_005fbox" title="Next section in reading order"> &gt; </a>]</td>
 
24282
<td valign="middle" align="left"> &nbsp; </td>
 
24283
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
24284
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
24285
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
24286
<td valign="middle" align="left"> &nbsp; </td>
 
24287
<td valign="middle" align="left"> &nbsp; </td>
 
24288
<td valign="middle" align="left"> &nbsp; </td>
 
24289
<td valign="middle" align="left"> &nbsp; </td>
 
24290
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
24291
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
24292
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
24293
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
24294
</tr></table>
 
24295
<a name="st_005fboulder-1"></a>
 
24296
<h3 class="subsection">9.5.6 st_boulder</h3>
 
24297
<a name="index-st_005fboulder"></a>
 
24298
 
 
24299
<p>This solid stone moves into the direction shown by the arrow on its picture.
 
24300
A marble blocking its way is shattered. When a stone blocks its way, the boulder
 
24301
triggers it by a sequence of two internal messages. Some stones give way like
 
24302
<a href="#st_005fblocker">st_blocker</a>, &lsquo;<samp>st_break_boulder</samp>&rsquo; (see section <a href="#st_005fbreak">st_break</a>), others change their
 
24303
state like <a href="#st_005foxyd">st_oxyd</a>, <a href="#st_005fstoneimpulse">st_stoneimpulse</a>, <a href="#st_005fquake">st_quake</a>,
 
24304
<a href="#st_005fmirror">st_mirror</a>, <a href="#st_005ffourswitch">st_fourswitch</a>, <a href="#st_005fvolcano">st_volcano</a>. A third category
 
24305
switches temporarily into another state on the first message sent when the
 
24306
boulder reaches a grid and switches back on the second message sent when the
 
24307
boulder gives up like <a href="#st_005fpassage">st_passage</a>, <a href="#st_005fflat">st_flat</a>, <a href="#st_005flightpassenger">st_lightpassenger</a>.
 
24308
</p>
 
24309
<p>Items getting beneath a moving boulder may react like on any other stone move
 
24310
on top of them. Additionally <a href="#it_005fblocker">it_blocker</a> will be released to grow again
 
24311
to a blocking stone.
 
24312
</p>
 
24313
<p>Boulder stones fall into <a href="#fl_005fabyss">fl_abyss</a>, but cross <a href="#fl_005fwater">fl_water</a>
 
24314
unchanged.
 
24315
</p>
 
24316
<p><a href="#it_005fmagicwand">it_magicwand</a> and lasers reverse its orientation. An <a href="#st_005factorimpulse">st_actorimpulse</a>
 
24317
reverts the orientation if the boulder hits it frontally. An <a href="#st_005frotator">st_rotator</a>
 
24318
changes its orientation according to the rotator&rsquo;s direction. An
 
24319
<a href="#st_005fstoneimpulse">st_stoneimpulse</a> pushes a boulder away.
 
24320
</p>
 
24321
<dl compact="compact">
 
24322
<dt> <b>Attributes:</b></dt>
 
24323
<dd>
 
24324
<dl compact="compact">
 
24325
<dd><a name="index-orientation-1"></a>
 
24326
</dd>
 
24327
<dt> <b>orientation</b>, &nbsp;&nbsp;<i>values</i>: <code>NORTH</code>, <code>EAST</code>, <code>SOUTH</code>, <code>WEST</code>; &nbsp;&nbsp;<i>default</i>: <code>NORTH</code></dt>
 
24328
<dd><p>The orientation of the boulder that is shown by its arrow. It determines the
 
24329
direction that the boulder will take on its next move.
 
24330
</p></dd>
 
24331
<dt> <b>counterclock</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
24332
<dd><p>The standard turning direction is clockwise. Use this attribute to revert the
 
24333
direction.
 
24334
</p></dd>
 
24335
</dl>
 
24336
 
 
24337
</dd>
 
24338
<dt> <b>Messages:</b></dt>
 
24339
<dd>
 
24340
<dl compact="compact">
 
24341
<dd><a name="index-orientate"></a>
 
24342
</dd>
 
24343
<dt> <b>orientate</b>, &nbsp;&nbsp;<i>value type</i>: direction</dt>
 
24344
<dd><p>Change the orientation to the given orientation value. The <a href="#st_005ffourswitch">st_fourswitch</a>
 
24345
provides a compatible action which allows you to set a boulder as
 
24346
target and this message as action.
 
24347
</p></dd>
 
24348
<dt> <b>turn</b></dt>
 
24349
<dd><p>Turn orientation in turning direction as defined by attribute
 
24350
&lsquo;<samp>counterclock</samp>&rsquo;.
 
24351
</p></dd>
 
24352
<dt> <b>turnback</b></dt>
 
24353
<dd><p>Turn orientation in opposite turning direction as defined by attribute
 
24354
&lsquo;<samp>counterclock</samp>&rsquo;.
 
24355
</p></dd>
 
24356
<dt> <b>flip</b></dt>
 
24357
<dd><p>Turn orientation into the reverse of the current orientation.
 
24358
</p></dd>
 
24359
</dl>
 
24360
 
 
24361
</dd>
 
24362
<dt> <b>Action:</b></dt>
 
24363
<dd><p>none
 
24364
</p>
 
24365
</dd>
 
24366
<dt> <b>Variants:</b></dt>
 
24367
<dd>
 
24368
<dl compact="compact">
 
24369
<dt> <img src="images/st_boulder.png" alt="images/st_boulder"><p> <b>st_boulder</b>
 
24370
</p></dt>
 
24371
<dt> <img src="images/st_boulder.png" alt="images/st_boulder"><p> <b>st_boulder_n</b>: orientation = <code>NORTH</code>
 
24372
</p></dt>
 
24373
<dt> <img src="images/st_boulder_b.png" alt="images/st_boulder_b"><p> <b>st_boulder_e</b>: orientation = <code>EAST</code>
 
24374
</p></dt>
 
24375
<dt> <img src="images/st_boulder_c.png" alt="images/st_boulder_c"><p> <b>st_boulder_s</b>: orientation = <code>SOUTH</code>
 
24376
</p></dt>
 
24377
<dt> <img src="images/st_boulder_d.png" alt="images/st_boulder_d"><p> <b>st_boulder_w</b>: orientation = <code>WEST</code>
 
24378
</p></dt>
 
24379
</dl>
 
24380
 
 
24381
</dd>
 
24382
</dl>
 
24383
 
 
24384
<hr size="6">
 
24385
<a name="st_005fbox"></a>
 
24386
<table cellpadding="1" cellspacing="1" border="0">
 
24387
<tr><td valign="middle" align="left">[<a href="#st_005fboulder" title="Previous section in reading order"> &lt; </a>]</td>
 
24388
<td valign="middle" align="left">[<a href="#st_005fbrake" title="Next section in reading order"> &gt; </a>]</td>
 
24389
<td valign="middle" align="left"> &nbsp; </td>
 
24390
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
24391
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
24392
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
24393
<td valign="middle" align="left"> &nbsp; </td>
 
24394
<td valign="middle" align="left"> &nbsp; </td>
 
24395
<td valign="middle" align="left"> &nbsp; </td>
 
24396
<td valign="middle" align="left"> &nbsp; </td>
 
24397
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
24398
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
24399
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
24400
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
24401
</tr></table>
 
24402
<a name="st_005fbox-1"></a>
 
24403
<h3 class="subsection">9.5.7 st_box</h3>
 
24404
<a name="index-st_005fbox"></a>
 
24405
 
 
24406
<p>A movable, floor building stone of various flavors.
 
24407
</p>
 
24408
<p>This very common stone is well known in its default flavor <code>&quot;wood&quot;</code>. But it
 
24409
exists in the flavors <code>&quot;hay&quot;</code> and <code>&quot;rock&quot;</code>, too. The flavor
 
24410
<code>&quot;wood&quot;</code> has a random wood tile orientation. You can set wooden boxes of
 
24411
given tile orientation by the variants <code>st_box_wood_h</code> and
 
24412
<code>st_box_wood_v</code>.
 
24413
</p>
 
24414
<p>The flavors <code>&quot;wood&quot;</code> and <code>&quot;hay&quot;</code> may originate from a growing
 
24415
<a href="#it_005fseed">it_seed</a>. Due to the <a href="#Snapshot-Principle">Snapshot Principle</a> special box variants exist
 
24416
just for usage in level initialization: <code>st_box_wood_growing</code> and
 
24417
<code>st_box_hay_growing</code>.
 
24418
</p>
 
24419
<p>All variants can easily be pushed around, do press <a href="#it_005ftrigger">it_trigger</a>s and do fall
 
24420
into <a href="#fl_005fabyss">fl_abyss</a>, <a href="#fl_005fwater">fl_water</a> and <a href="#fl_005fswamp">fl_swamp</a> by building a framed floor
 
24421
of the kind indicated by their &lsquo;<samp>flavor</samp>&rsquo; attribute. All boxes will fall on
 
24422
the first occasion. Even if they receive two push impulses at the same time by
 
24423
<a href="#ot_005fwire">ot_wire</a> they fall on the first grid. Thus it is impossible to push a box
 
24424
over a ditch. Boxes will fall if the floor beneath them vanishes. E.g. an
 
24425
<a href="#it_005fbomb">it_bomb</a> explosion beneath a box may change the floor to <a href="#fl_005fabyss">fl_abyss</a> or
 
24426
a flood stream may change the floor to <a href="#fl_005fwater">fl_water</a>. In all these cases the
 
24427
box above falls immediately building its kind of floor.
 
24428
</p>
 
24429
<p>Note that all boxes do actively support <a href="#Flood-Spreading">Flood Spreading</a>. That means that
 
24430
they let an arriving flood stream flow beneath them. In case the floor beneath
 
24431
the box is floodable it will change to water and the box will fall. The new built
 
24432
floor itself conserves the flood stream feature and will let the stream flood
 
24433
neighboring floodable floors, too. (see section <a href="#fl_005fwood">fl_wood</a>, <a href="#fl_005fhay">fl_hay</a>, <a href="#fl_005frock">fl_rock</a>).
 
24434
</p>
 
24435
<p>The box flavors do differ in some small but essential features. Whereas the
 
24436
flavors <code>&quot;wood&quot;</code> and <code>&quot;rock&quot;</code> do cause an <a href="#it_005fbomb">it_bomb</a> to explode
 
24437
when being pushed over it, a <code>&quot;hay&quot;</code> flavored box does not ignite bombs.
 
24438
</p>
 
24439
<p>According to their flavor <code>&quot;wood&quot;</code> and <code>&quot;hay&quot;</code> will burn on fire.
 
24440
But <code>&quot;rock&quot;</code> flavored boxes are fire resistant and fire blocking.
 
24441
</p>
 
24442
<dl compact="compact">
 
24443
<dt> <b>Attributes:</b></dt>
 
24444
<dd>
 
24445
<dl compact="compact">
 
24446
<dt> <b>flavor</b> &nbsp;&nbsp;<i>values</i>: <code>&quot;wood&quot;</code>, <code>&quot;hay&quot;</code>, <code>&quot;rock&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;wood&quot;</code>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
24447
<dt> <b>secure</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
24448
<dd><p>This attribute is inherited to a floor build by a falling box and guarantees
 
24449
then secure fire burning.
 
24450
</p></dd>
 
24451
</dl>
 
24452
 
 
24453
</dd>
 
24454
<dt> <b>Messages:</b> none</dt>
 
24455
<dt> <b>Action:</b> none</dt>
 
24456
<dt> <b>Variants:</b></dt>
 
24457
<dd>
 
24458
<dl compact="compact">
 
24459
<dt> <img src="images/st_box_wood.png" alt="images/st_box_wood"><p> <b>st_box</b>: flavor=<code>&quot;wood&quot;</code>
 
24460
</p></dt>
 
24461
<dt> <img src="images/st_box_wood.png" alt="images/st_box_wood"><p> <b>st_box_wood</b>: flavor=<code>&quot;wood&quot;</code>
 
24462
</p></dt>
 
24463
<dt> <img src="images/st_box_wood.png" alt="images/st_box_wood"><p> <b>st_box_wood_h</b>: flavor=<code>&quot;wood&quot;</code>
 
24464
</p></dt>
 
24465
<dt> <img src="images/st_box_wood_2.png" alt="images/st_box_wood_2"><p> <b>st_box_wood_v</b>: flavor=<code>&quot;wood&quot;</code>
 
24466
</p></dt>
 
24467
<dt> <img src="images/st_box_wood_growing.png" alt="images/st_box_wood_growing"><p> <b>st_box_wood_growing</b>: flavor=<code>&quot;wood&quot;</code>
 
24468
</p></dt>
 
24469
<dt> <img src="images/st_box_hay.png" alt="images/st_box_hay"><p> <b>st_box_hay</b>: flavor=<code>&quot;hay&quot;</code>
 
24470
</p></dt>
 
24471
<dt> <img src="images/st_box_hay_4.png" alt="images/st_box_hay_4"><p> <b>st_box_hay_growing</b>: flavor=<code>&quot;hay&quot;</code>
 
24472
</p></dt>
 
24473
<dt> <img src="images/st_box_rock.png" alt="images/st_box_rock"><p> <b>st_box_rock</b>: flavor=<code>&quot;rock&quot;</code>
 
24474
</p></dt>
 
24475
</dl>
 
24476
 
 
24477
</dd>
 
24478
</dl>
 
24479
 
 
24480
<hr size="6">
 
24481
<a name="st_005fbrake"></a>
 
24482
<table cellpadding="1" cellspacing="1" border="0">
 
24483
<tr><td valign="middle" align="left">[<a href="#st_005fbox" title="Previous section in reading order"> &lt; </a>]</td>
 
24484
<td valign="middle" align="left">[<a href="#st_005fbreak" title="Next section in reading order"> &gt; </a>]</td>
 
24485
<td valign="middle" align="left"> &nbsp; </td>
 
24486
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
24487
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
24488
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
24489
<td valign="middle" align="left"> &nbsp; </td>
 
24490
<td valign="middle" align="left"> &nbsp; </td>
 
24491
<td valign="middle" align="left"> &nbsp; </td>
 
24492
<td valign="middle" align="left"> &nbsp; </td>
 
24493
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
24494
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
24495
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
24496
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
24497
</tr></table>
 
24498
<a name="st_005fbrake-1"></a>
 
24499
<h3 class="subsection">9.5.8 st_brake</h3>
 
24500
<a name="index-st_005fbrake"></a>
 
24501
 
 
24502
<p>The brake stone can be used to block a running <a href="#st_005fboulder">st_boulder</a> or a
 
24503
<a href="#st_005flightpassenger">st_lightpassenger</a>, what likely has given this object its name. But unlike
 
24504
all other blocking stones the brake can be picked up as an item by actors and
 
24505
dropped anywhere else.
 
24506
</p>
 
24507
<p>When an actor passes a brake stone, rolling on the floor or while jumping, it
 
24508
will pick up the object like other items. The brake will be added as an
 
24509
<a href="#it_005fbrake">it_brake</a> to its inventory. Unlike other items the brake can be dropped
 
24510
even on grids that are already occupied by an item. But you can not drop the
 
24511
brake beneath another stone like a <a href="#it_005fseed">it_seed</a>.
 
24512
</p>
 
24513
<p>On dropping the brake item it transforms immediately back to an <a href="#st_005fbrake">st_brake</a>
 
24514
without killing the item positioned on the grid. Just one exception is a brake
 
24515
being dropped on top of an <a href="#it_005fblocker">it_blocker</a> what results in an elimination of
 
24516
the blocker. On the other hand a brake stone will press an <a href="#it_005ftrigger">it_trigger</a>
 
24517
beneath, what makes the brake item a portable trigger key.
 
24518
</p>
 
24519
<p>The brake stone explodes when it is exposed to laser light or a <a href="#it_005fbomb">it_bomb</a>
 
24520
explosion on a direct neighbor grid.
 
24521
</p>
 
24522
<dl compact="compact">
 
24523
<dt> <b>Attributes:</b> none</dt>
 
24524
<dt> <b>Messages:</b> none</dt>
 
24525
<dt> <b>Action:</b> none</dt>
 
24526
<dt> <b>Variants:</b> none</dt>
 
24527
<dd><dl compact="compact">
 
24528
<dt> <img src="images/st_brake.png" alt="images/st_brake"><p> <b>st_brake</b>
 
24529
</p></dt>
 
24530
</dl>
 
24531
</dd>
 
24532
</dl>
 
24533
 
 
24534
<hr size="6">
 
24535
<a name="st_005fbreak"></a>
 
24536
<table cellpadding="1" cellspacing="1" border="0">
 
24537
<tr><td valign="middle" align="left">[<a href="#st_005fbrake" title="Previous section in reading order"> &lt; </a>]</td>
 
24538
<td valign="middle" align="left">[<a href="#st_005fbrownpyramid" title="Next section in reading order"> &gt; </a>]</td>
 
24539
<td valign="middle" align="left"> &nbsp; </td>
 
24540
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
24541
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
24542
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
24543
<td valign="middle" align="left"> &nbsp; </td>
 
24544
<td valign="middle" align="left"> &nbsp; </td>
 
24545
<td valign="middle" align="left"> &nbsp; </td>
 
24546
<td valign="middle" align="left"> &nbsp; </td>
 
24547
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
24548
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
24549
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
24550
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
24551
</tr></table>
 
24552
<a name="st_005fbreak-1"></a>
 
24553
<h3 class="subsection">9.5.9 st_break</h3>
 
24554
<a name="index-st_005fbreak"></a>
 
24555
 
 
24556
<p>A stone of various flavors that is breakable under various conditions. The
 
24557
stone may be breakable by actors of some kind, with or without an item, by an
 
24558
igniting explosion on a neighboring grid and in most cases by laser light.
 
24559
Besides being breakable the stone is a standard stone. The different flavors let
 
24560
this stone appear in quite different outlooks.
 
24561
</p>
 
24562
<p>The flavor <code>&quot;plain&quot;</code> is a grey stone that is breakable by any actor hit
 
24563
with a revealed <a href="#it_005fhammer">it_hammer</a> and by a laser beam hitting any side.
 
24564
</p>
 
24565
<p>The flavors <code>&quot;black&quot;</code> and <code>&quot;white&quot;</code> look similar to the <code>&quot;plain&quot;</code>
 
24566
variant just with a small colored ball sitting on top. But these variants are
 
24567
just breakable by any actors of matching color. Of course the actors need a
 
24568
revealed <a href="#it_005fhammer">it_hammer</a>. Laser beams do break the stone, too.
 
24569
</p>
 
24570
<p>The flavor <code>&quot;oxydc&quot;</code> looks like a cracked <a href="#st_005foxyd">st_oxyd</a> of flavor
 
24571
<code>&quot;c&quot;</code>. Like the <code>&quot;plain&quot;</code> variant it is breakable by any actor hit
 
24572
with a revealed <a href="#it_005fhammer">it_hammer</a> and by a laser beam hitting any side.
 
24573
</p>
 
24574
<p>The flavor <code>&quot;boulder&quot;</code> looks like a yellowish version of flavor
 
24575
<code>&quot;oxydc&quot;</code>. It is breakable under the same conditions plus additionally by
 
24576
an <a href="#st_005fboulder">st_boulder</a> hitting on one of its sides.
 
24577
</p>
 
24578
<p>The flavor <code>&quot;bug&quot;</code> looks like an <a href="#st_005fflat">st_flat</a> with a bug symbol on top.
 
24579
It is just breakable by an <a href="#ac_005fbug">ac_bug</a>. No other actor and no laser light will
 
24580
break it.
 
24581
</p>
 
24582
<p>The flavor <code>&quot;laser&quot;</code> looks identical to an <a href="#st_005fflat">st_flat</a>. It is not
 
24583
breakable by actors. Just laser light beams on one of its faces will break this
 
24584
variant.
 
24585
</p>
 
24586
<p>All but the variant <code>&quot;bug&quot;</code> will break on neighboring ignitions like those
 
24587
caused by an exploding <a href="#it_005fdynamite">it_dynamite</a> on a direct neighboring position or an
 
24588
exploding black <a href="#it_005fbomb">it_bomb</a> on a diagonal neighboring position.
 
24589
</p>
 
24590
<dl compact="compact">
 
24591
<dt> <b>Attributes:</b></dt>
 
24592
<dd>
 
24593
<dl compact="compact">
 
24594
<dt> <b>flavor</b> &nbsp;&nbsp;<i>values</i>: <code>&quot;plain&quot;</code>, <code>&quot;black&quot;</code>, <code>&quot;white&quot;</code>, <code>&quot;oxydc&quot;</code>, <code>&quot;boulder&quot;</code>, <code>&quot;bug&quot;</code>, <code>&quot;laser&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;plain&quot;</code>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
24595
</dl>
 
24596
 
 
24597
</dd>
 
24598
<dt> <b>Messages:</b></dt>
 
24599
<dd><dl compact="compact">
 
24600
<dt> <b>ignite</b></dt>
 
24601
<dd><p>Break stone with exception of flavor <code>&quot;bug&quot;</code>.
 
24602
</p></dd>
 
24603
</dl>
 
24604
 
 
24605
</dd>
 
24606
<dt> <b>Action:</b> none</dt>
 
24607
<dt> <b>Variants:</b></dt>
 
24608
<dd>
 
24609
<dl compact="compact">
 
24610
<dt> <img src="images/st_break_plain.png" alt="images/st_break_plain"><p> <b>st_break</b>: flavor=<code>&quot;plain&quot;</code>
 
24611
</p></dt>
 
24612
<dt> <img src="images/st_break_plain.png" alt="images/st_break_plain"><p> <b>st_break_plain</b>: flavor=<code>&quot;plain&quot;</code>
 
24613
</p></dt>
 
24614
<dt> <img src="images/st_break_black.png" alt="images/st_break_black"><p> <b>st_break_black</b>: flavor=<code>&quot;black&quot;</code>
 
24615
</p></dt>
 
24616
<dt> <img src="images/st_break_white.png" alt="images/st_break_white"><p> <b>st_break_white</b>: flavor=<code>&quot;white&quot;</code>
 
24617
</p></dt>
 
24618
<dt> <img src="images/st_break_oxydc.png" alt="images/st_break_oxydc"><p> <b>st_break_oxydc</b>: flavor=<code>&quot;oxydc&quot;</code>
 
24619
</p></dt>
 
24620
<dt> <img src="images/st_break_boulder.png" alt="images/st_break_boulder"><p> <b>st_break_boulder</b>: flavor=<code>&quot;boulder&quot;</code>
 
24621
</p></dt>
 
24622
<dt> <img src="images/st_break_bug.png" alt="images/st_break_bug"><p> <b>st_break_bug</b>: flavor=<code>&quot;bug&quot;</code>
 
24623
</p></dt>
 
24624
<dt> <img src="images/st_flat.png" alt="images/st_flat"><p> <b>st_break_laser</b>: flavor=<code>&quot;laser&quot;</code>
 
24625
</p></dt>
 
24626
</dl>
 
24627
 
 
24628
</dd>
 
24629
</dl>
 
24630
 
 
24631
<hr size="6">
 
24632
<a name="st_005fbrownpyramid"></a>
 
24633
<table cellpadding="1" cellspacing="1" border="0">
 
24634
<tr><td valign="middle" align="left">[<a href="#st_005fbreak" title="Previous section in reading order"> &lt; </a>]</td>
 
24635
<td valign="middle" align="left">[<a href="#st_005fchameleon" title="Next section in reading order"> &gt; </a>]</td>
 
24636
<td valign="middle" align="left"> &nbsp; </td>
 
24637
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
24638
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
24639
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
24640
<td valign="middle" align="left"> &nbsp; </td>
 
24641
<td valign="middle" align="left"> &nbsp; </td>
 
24642
<td valign="middle" align="left"> &nbsp; </td>
 
24643
<td valign="middle" align="left"> &nbsp; </td>
 
24644
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
24645
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
24646
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
24647
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
24648
</tr></table>
 
24649
<a name="st_005fbrownpyramid-1"></a>
 
24650
<h3 class="subsection">9.5.10 st_brownpyramid</h3>
 
24651
<a name="index-st_005fbrownpyramid"></a>
 
24652
 
 
24653
<p>A brown gray pyramid shaped stone. This stone is just standard stone besides
 
24654
the fact that it can be destroyed by an <a href="#ot_005fcannonball">ot_cannonball</a> emitted by an
 
24655
<a href="#st_005fspitter">st_spitter</a> that happens to fall on its top.
 
24656
</p>
 
24657
<dl compact="compact">
 
24658
<dt> <b>Variants:</b></dt>
 
24659
<dd><dl compact="compact">
 
24660
<dt> <img src="images/st_brownpyramid.png" alt="images/st_brownpyramid"><p> <b>st_brownpyramid</b>
 
24661
</p></dt>
 
24662
</dl>
 
24663
</dd>
 
24664
</dl>
 
24665
 
 
24666
<hr size="6">
 
24667
<a name="st_005fchameleon"></a>
 
24668
<table cellpadding="1" cellspacing="1" border="0">
 
24669
<tr><td valign="middle" align="left">[<a href="#st_005fbrownpyramid" title="Previous section in reading order"> &lt; </a>]</td>
 
24670
<td valign="middle" align="left">[<a href="#st_005fcharge" title="Next section in reading order"> &gt; </a>]</td>
 
24671
<td valign="middle" align="left"> &nbsp; </td>
 
24672
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
24673
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
24674
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
24675
<td valign="middle" align="left"> &nbsp; </td>
 
24676
<td valign="middle" align="left"> &nbsp; </td>
 
24677
<td valign="middle" align="left"> &nbsp; </td>
 
24678
<td valign="middle" align="left"> &nbsp; </td>
 
24679
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
24680
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
24681
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
24682
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
24683
</tr></table>
 
24684
<a name="st_005fchameleon-1"></a>
 
24685
<h3 class="subsection">9.5.11 st_chameleon</h3>
 
24686
<a name="index-st_005fchameleon"></a>
 
24687
 
 
24688
<p>A stone that has no own image but mimics the floor beneath. Thus it is fairly
 
24689
invisible. But as it shows the same image as the floor it hides items and even
 
24690
actors on the grid. The stone is hovering, thus it does not press any
 
24691
<a href="#it_005ftrigger">it_trigger</a> and lets pass any actors and laser light, too.
 
24692
</p>
 
24693
<p>Please make rare usage of this stone in Enigma 1.1* as the current display
 
24694
engine does not really support this stone. All dynamic floors and floor changes
 
24695
do cause faulty displays. Thus use it currently only in patterns without any
 
24696
floor dynamics.
 
24697
</p>
 
24698
<dl compact="compact">
 
24699
<dt> <b>Variants:</b></dt>
 
24700
<dd><dl compact="compact">
 
24701
<dt> <img src="images/fl_white.png" alt="images/fl_white"><p> <b>st_chameleon</b>
 
24702
</p></dt>
 
24703
</dl>
 
24704
</dd>
 
24705
</dl>
 
24706
 
 
24707
<hr size="6">
 
24708
<a name="st_005fcharge"></a>
 
24709
<table cellpadding="1" cellspacing="1" border="0">
 
24710
<tr><td valign="middle" align="left">[<a href="#st_005fchameleon" title="Previous section in reading order"> &lt; </a>]</td>
 
24711
<td valign="middle" align="left">[<a href="#st_005fchess" title="Next section in reading order"> &gt; </a>]</td>
 
24712
<td valign="middle" align="left"> &nbsp; </td>
 
24713
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
24714
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
24715
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
24716
<td valign="middle" align="left"> &nbsp; </td>
 
24717
<td valign="middle" align="left"> &nbsp; </td>
 
24718
<td valign="middle" align="left"> &nbsp; </td>
 
24719
<td valign="middle" align="left"> &nbsp; </td>
 
24720
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
24721
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
24722
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
24723
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
24724
</tr></table>
 
24725
<a name="st_005fcharge-1"></a>
 
24726
<h3 class="subsection">9.5.12 st_charge</h3>
 
24727
<a name="index-st_005fcharge"></a>
 
24728
 
 
24729
<p>An electrical charger for actors. The image reflects the sign of the
 
24730
&lsquo;<samp>charge</samp>&rsquo; attribute.
 
24731
</p>
 
24732
<p>Any actor hitting this stone will recharge its <a href="#charge">charge</a> attribute to the
 
24733
value given by the stone&rsquo;s &lsquo;<samp>charge</samp>&rsquo; attribute.
 
24734
</p>
 
24735
<p>The stone itself does not cause any electrical forces. It is neither attracting
 
24736
nor repelling for charged actors. Electrical forces applied to actors just
 
24737
depend on the charges of different actors and the global attribute
 
24738
<a href="#ElectricStrength">ElectricStrength</a>.
 
24739
</p>
 
24740
<dl compact="compact">
 
24741
<dt> <b>Attributes:</b></dt>
 
24742
<dd>
 
24743
<dl compact="compact">
 
24744
<dt> <b>charge</b> &nbsp;&nbsp;<i>values</i>: floating point numbers; &nbsp;&nbsp;<i>default</i>: <code>0.0</code></dt>
 
24745
<dd><p>The charge applied to hitting actors.
 
24746
</p></dd>
 
24747
</dl>
 
24748
 
 
24749
</dd>
 
24750
<dt> <b>Messages:</b> none</dt>
 
24751
<dt> <b>Action:</b>  none</dt>
 
24752
<dt> <b>Variants:</b></dt>
 
24753
<dd>
 
24754
<dl compact="compact">
 
24755
<dt> <img src="images/st_charge_zero.png" alt="images/st_charge_zero"><p> <b>st_charge</b>: charge = <code>0.0</code>
 
24756
</p></dt>
 
24757
<dt> <img src="images/st_charge_zero.png" alt="images/st_charge_zero"><p> <b>st_charge_zero</b>: charge = <code>0.0</code>
 
24758
</p></dt>
 
24759
<dt> <img src="images/st_charge_plus.png" alt="images/st_charge_plus"><p> <b>st_charge_plus</b>: charge = <code>+1.0</code>
 
24760
</p></dt>
 
24761
<dt> <img src="images/st_charge_minus.png" alt="images/st_charge_minus"><p> <b>st_charge_minus</b>: charge = <code>-1.0</code>
 
24762
</p></dt>
 
24763
</dl>
 
24764
 
 
24765
</dd>
 
24766
</dl>
 
24767
 
 
24768
<hr size="6">
 
24769
<a name="st_005fchess"></a>
 
24770
<table cellpadding="1" cellspacing="1" border="0">
 
24771
<tr><td valign="middle" align="left">[<a href="#st_005fcharge" title="Previous section in reading order"> &lt; </a>]</td>
 
24772
<td valign="middle" align="left">[<a href="#st_005fcoinslot" title="Next section in reading order"> &gt; </a>]</td>
 
24773
<td valign="middle" align="left"> &nbsp; </td>
 
24774
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
24775
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
24776
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
24777
<td valign="middle" align="left"> &nbsp; </td>
 
24778
<td valign="middle" align="left"> &nbsp; </td>
 
24779
<td valign="middle" align="left"> &nbsp; </td>
 
24780
<td valign="middle" align="left"> &nbsp; </td>
 
24781
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
24782
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
24783
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
24784
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
24785
</tr></table>
 
24786
<a name="st_005fchess-1"></a>
 
24787
<h3 class="subsection">9.5.13 st_chess</h3>
 
24788
<a name="index-st_005fchess"></a>
 
24789
 
 
24790
<p>A chess stone is like a chess knight. It exists in the two colors black and
 
24791
white, it can jump and make a chess knight move. It can even beat stones at
 
24792
the target position.
 
24793
</p>
 
24794
<p>A black chess can only be moved with a black marble, a white one with white
 
24795
marbles. The jump direction is given by the marble hit direction. It moves
 
24796
two grid steps into the direction, into which other movable stones move just one
 
24797
grid, plus one grid step vertical. The vertical direction is given by the
 
24798
marbles vertical velocity component.
 
24799
</p>
 
24800
<p>When there is a chess stone of opposite color or an <a href="#st_005fthief">st_thief</a> at the target
 
24801
position of a knight move, this stone is captured and destroyed.
 
24802
</p>
 
24803
<p>When hit with a revealed <a href="#it_005fmagicwand">it_magicwand</a>, a chess stone changes color.
 
24804
</p>
 
24805
<p>Chess stones fall into <a href="#fl_005fabyss">fl_abyss</a> and sink in <a href="#fl_005fswamp">fl_swamp</a>, but cross
 
24806
<a href="#fl_005fwater">fl_water</a> undamaged.
 
24807
</p>
 
24808
<p>A chess stone that jumps onto a <a href="#fl_005fthief">fl_thief</a> captures and inactivates the
 
24809
thief.
 
24810
</p>
 
24811
<p>Chess stones can&rsquo;t jump over or into fire (see <a href="#Fire-Spreading">Fire Spreading</a>). At least,
 
24812
a chess knight is brave enough not to panic when fire starts to burn beneath.
 
24813
Note that fire can&rsquo;t ignite the floor below a chess stone. In this
 
24814
context it acts like an immovable stone. In the same sense, they don&rsquo;t act on
 
24815
stone impulses of <a href="#st_005fstoneimpulse">st_stoneimpulse</a> or <a href="#it_005fpuller">it_puller</a>.
 
24816
</p>
 
24817
<dl compact="compact">
 
24818
<dt> <b>Attributes:</b></dt>
 
24819
<dd>
 
24820
<dl compact="compact">
 
24821
<dt> <b>color</b> &nbsp;&nbsp;<i>values</i>: <code>BLACK</code>, <code>WHITE</code>; &nbsp;&nbsp;<i>default</i>: <code>BLACK</code></dt>
 
24822
<dd><p>The color of the chess stone
 
24823
</p></dd>
 
24824
<dt> <b>movable</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code> &nbsp;&nbsp;See section <a href="#movable">movable</a></dt>
 
24825
<dd><p>Read only attribute that states the ability of a chess stone to move.
 
24826
</p></dd>
 
24827
</dl>
 
24828
 
 
24829
</dd>
 
24830
<dt> <b>Messages:</b></dt>
 
24831
<dd>
 
24832
<dl compact="compact">
 
24833
<dt> <b>flip</b></dt>
 
24834
<dd><p>Flip the color of the stone.
 
24835
</p></dd>
 
24836
<dt> <b>move</b>, &nbsp;&nbsp;<i>value type</i>: position; &nbsp;&nbsp;<i>values</i>: <code>NNE</code>, <code>NEE</code>, <code>SEE</code>, <code>SSE</code>, <code>SSW</code>, <code>SWW</code>, <code>NWW</code>, <code>NNW</code></dt>
 
24837
<dd><p>Jump into the given direction.
 
24838
</p></dd>
 
24839
</dl>
 
24840
 
 
24841
</dd>
 
24842
<dt> <b>Action:</b>  none</dt>
 
24843
<dt> <b>Variants:</b></dt>
 
24844
<dd>
 
24845
<dl compact="compact">
 
24846
<dt> <img src="images/st_chess_black.png" alt="images/st_chess_black"><p> <b>st_chess</b>: color = <code>BLACK</code>
 
24847
</p></dt>
 
24848
<dt> <img src="images/st_chess_black.png" alt="images/st_chess_black"><p> <b>st_chess_black</b>: color = <code>BLACK</code>
 
24849
</p></dt>
 
24850
<dt> <img src="images/st_chess_white.png" alt="images/st_chess_white"><p> <b>st_chess_white</b>: color = <code>WHITE</code>
 
24851
</p></dt>
 
24852
</dl>
 
24853
 
 
24854
</dd>
 
24855
</dl>
 
24856
 
 
24857
<hr size="6">
 
24858
<a name="st_005fcoinslot"></a>
 
24859
<table cellpadding="1" cellspacing="1" border="0">
 
24860
<tr><td valign="middle" align="left">[<a href="#st_005fchess" title="Previous section in reading order"> &lt; </a>]</td>
 
24861
<td valign="middle" align="left">[<a href="#st_005fdarkglass" title="Next section in reading order"> &gt; </a>]</td>
 
24862
<td valign="middle" align="left"> &nbsp; </td>
 
24863
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
24864
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
24865
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
24866
<td valign="middle" align="left"> &nbsp; </td>
 
24867
<td valign="middle" align="left"> &nbsp; </td>
 
24868
<td valign="middle" align="left"> &nbsp; </td>
 
24869
<td valign="middle" align="left"> &nbsp; </td>
 
24870
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
24871
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
24872
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
24873
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
24874
</tr></table>
 
24875
<a name="st_005fcoinslot-1"></a>
 
24876
<h3 class="subsection">9.5.14 st_coinslot</h3>
 
24877
<a name="index-st_005fcoinslot"></a>
 
24878
 
 
24879
<p>A switch that is activated by insertion of an <a href="#it_005fcoin">it_coin</a>. Just actors
 
24880
assigned to a player can insert coins out of their item inventory by hitting
 
24881
the coinslot with the coin being the first item. Depending on the coin type the
 
24882
coinslot remains in state &lsquo;<samp>ON</samp>&rsquo; for a given &lsquo;<samp>interval</samp>&rsquo; before switching
 
24883
back to state &lsquo;<samp>OFF</samp>&rsquo;. Multiple inserted coins do prolong the activity
 
24884
interval.
 
24885
</p>
 
24886
<p>Standard not &lsquo;<samp>instant</samp>&rsquo; coinslots do activate after the insertion process
 
24887
of the coin. No additional coins can be inserted while another coin is being
 
24888
inserted. This prevents unintended multiple coin insertions. On the other hand
 
24889
the player has to insert additional coins early enough to prolong the active
 
24890
state without temporarily switching back to &lsquo;<samp>OFF</samp>&rsquo; state. If the first
 
24891
interval runs off while the next coin did not yet finish its insertion the
 
24892
coinslot will first switch &lsquo;<samp>OFF</samp>&rsquo; and switch &lsquo;<samp>ON</samp>&rsquo; when the next coin
 
24893
is completely inserted.
 
24894
</p>
 
24895
<p>The activity interval of a coin insertion depends on the type of the coin. For
 
24896
each type you can set the interval by the &lsquo;<samp>interval_*</samp>&rsquo; attributes. You
 
24897
can reject the insertion of a coin type by setting its interval to
 
24898
&lsquo;<samp>COIN_REJECT</samp>&rsquo;. The coin will not be taken from the players inventory. By
 
24899
a value of &lsquo;<samp>COIN_IGNORE</samp>&rsquo; on the interval attribute the coinslot will fetch
 
24900
the coin but will not act at all.
 
24901
</p>
 
24902
<p>Coinslots configured as &lsquo;<samp>instant</samp>&rsquo; do activate immediately when the actor
 
24903
hits the stone. On every actor hit a coin is inserted independent of the last
 
24904
insertion.
 
24905
</p>
 
24906
<p>The &lsquo;<samp>state</samp>&rsquo; of a coinslot can be requested but it can not be set, neither
 
24907
by attribute nor by messages.
 
24908
</p>
 
24909
<dl compact="compact">
 
24910
<dt> <b>Attributes:</b></dt>
 
24911
<dd>
 
24912
<dl compact="compact">
 
24913
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>OFF</code>; <i>access</i>: <code>read only</code>  &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
24914
<dd><p>Current activity state of the coinslot.
 
24915
</p></dd>
 
24916
<dt> <b>instant</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
24917
<dd><p>A default coinslot switches to active state after insertion of a coin and allows
 
24918
the insertion of just one coin at a time.
 
24919
</p></dd>
 
24920
<dt> <b>interval_s</b> &nbsp;&nbsp;<i>values</i>: positive number, <code>COIN_REJECT</code>, <code>COIN_IGNORE</code>; &nbsp;&nbsp;<i>default</i>: <code>3.0</code></dt>
 
24921
<dd><p>Number of additional active seconds on insertion of a small <a href="#it_005fcoin">it_coin</a>.
 
24922
</p></dd>
 
24923
<dt> <b>interval_m</b> &nbsp;&nbsp;<i>values</i>: positive number, <code>COIN_REJECT</code>, <code>COIN_IGNORE</code>; &nbsp;&nbsp;<i>default</i>: <code>6.0</code></dt>
 
24924
<dd><p>Number of additional active seconds on insertion of a medium <a href="#it_005fcoin">it_coin</a>.
 
24925
</p></dd>
 
24926
<dt> <b>interval_l</b> &nbsp;&nbsp;<i>values</i>: positive number, <code>COIN_REJECT</code>, <code>COIN_IGNORE</code>; &nbsp;&nbsp;<i>default</i>: <code>12.0</code></dt>
 
24927
<dd><p>Number of additional active seconds on insertion of a large <a href="#it_005fcoin">it_coin</a>.
 
24928
</p></dd>
 
24929
</dl>
 
24930
 
 
24931
</dd>
 
24932
<dt> <b>Messages:</b> none</dt>
 
24933
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
24934
<dt> <b>Variants:</b></dt>
 
24935
<dd>
 
24936
<dl compact="compact">
 
24937
<dt> <img src="images/st_coinslot.png" alt="images/st_coinslot"><p> <b>st_coinslot</b>: instant = <code>false</code>
 
24938
</p></dt>
 
24939
<dt> <img src="images/st_coinslot.png" alt="images/st_coinslot"><p> <b>st_coinslot_instant</b>: instant = <code>true</code>
 
24940
</p></dt>
 
24941
</dl>
 
24942
 
 
24943
</dd>
 
24944
</dl>
 
24945
 
 
24946
<hr size="6">
 
24947
<a name="st_005fdarkglass"></a>
 
24948
<table cellpadding="1" cellspacing="1" border="0">
 
24949
<tr><td valign="middle" align="left">[<a href="#st_005fcoinslot" title="Previous section in reading order"> &lt; </a>]</td>
 
24950
<td valign="middle" align="left">[<a href="#st_005fdeath" title="Next section in reading order"> &gt; </a>]</td>
 
24951
<td valign="middle" align="left"> &nbsp; </td>
 
24952
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
24953
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
24954
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
24955
<td valign="middle" align="left"> &nbsp; </td>
 
24956
<td valign="middle" align="left"> &nbsp; </td>
 
24957
<td valign="middle" align="left"> &nbsp; </td>
 
24958
<td valign="middle" align="left"> &nbsp; </td>
 
24959
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
24960
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
24961
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
24962
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
24963
</tr></table>
 
24964
<a name="st_005fdarkglass-1"></a>
 
24965
<h3 class="subsection">9.5.15 st_darkglass</h3>
 
24966
<a name="index-st_005fdarkglass"></a>
 
24967
 
 
24968
<p>A metal framed semi transparent glass stone. It exists in static, movable and
 
24969
hollow variants and is just transparent to laser light in its hollow variant.
 
24970
Like other <a href="#Transparent-Stones">Transparent Stones</a> it is passable for invisible actors as long
 
24971
as it is not &lsquo;<samp>movable</samp>&rsquo;.
 
24972
</p>
 
24973
<p>A <a href="#st_005flightpassenger">st_lightpassenger</a> in state &lsquo;<samp>OFF</samp>&rsquo; looks identical to a darkglass
 
24974
stone
 
24975
</p>
 
24976
<dl compact="compact">
 
24977
<dt> <b>Attributes:</b></dt>
 
24978
<dd>
 
24979
<dl compact="compact">
 
24980
<dt> <b>hollow</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: read only &nbsp;&nbsp;See section <a href="#hollow">hollow</a></dt>
 
24981
<dt> <b>movable</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: read only &nbsp;&nbsp;See section <a href="#movable">movable</a></dt>
 
24982
</dl>
 
24983
 
 
24984
</dd>
 
24985
<dt> <b>Messages:</b> none</dt>
 
24986
<dt> <b>Variants:</b></dt>
 
24987
<dd><dl compact="compact">
 
24988
<dt> <img src="images/st_darkglass.png" alt="images/st_darkglass"><p> <b>st_darkglass</b>: hollow = <code>false</code>, movable = <code>false</code>
 
24989
</p></dt>
 
24990
<dt> <img src="images/st_darkglass.png" alt="images/st_darkglass"><p> <b>st_darkglass_hollow</b>: hollow = <code>true</code>, movable = <code>false</code>
 
24991
</p></dt>
 
24992
<dt> <img src="images/st_darkglass.png" alt="images/st_darkglass"><p> <b>st_darkglass_movable</b>: hollow = <code>false</code>, movable = <code>true</code>
 
24993
</p></dt>
 
24994
</dl>
 
24995
 
 
24996
</dd>
 
24997
</dl>
 
24998
 
 
24999
<hr size="6">
 
25000
<a name="st_005fdeath"></a>
 
25001
<table cellpadding="1" cellspacing="1" border="0">
 
25002
<tr><td valign="middle" align="left">[<a href="#st_005fdarkglass" title="Previous section in reading order"> &lt; </a>]</td>
 
25003
<td valign="middle" align="left">[<a href="#st_005fdisco" title="Next section in reading order"> &gt; </a>]</td>
 
25004
<td valign="middle" align="left"> &nbsp; </td>
 
25005
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
25006
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
25007
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
25008
<td valign="middle" align="left"> &nbsp; </td>
 
25009
<td valign="middle" align="left"> &nbsp; </td>
 
25010
<td valign="middle" align="left"> &nbsp; </td>
 
25011
<td valign="middle" align="left"> &nbsp; </td>
 
25012
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
25013
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
25014
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
25015
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
25016
</tr></table>
 
25017
<a name="st_005fdeath-1"></a>
 
25018
<h3 class="subsection">9.5.16 st_death</h3>
 
25019
<a name="index-st_005fdeath"></a>
 
25020
 
 
25021
<p>Shatters any <a href="#ac_005fmarble">ac_marble</a> and <a href="#ac_005fpearl">ac_pearl</a> that hits or even just touches
 
25022
it. Just marbles and pearls protected by an activated <a href="#it_005fumbrella">it_umbrella</a> will
 
25023
bounce unharmed as other actors do which will not die anyway.
 
25024
</p>
 
25025
<p>Death stones can be configured by the &lsquo;<samp>invisible</samp>&rsquo; attribute to
 
25026
be hidden while being idle. When hit by an actor any death stone becomes
 
25027
temporary visible. An actor with unbroken standard <a href="#it_005fglasses">it_glasses</a> in its
 
25028
inventory will be able to spot invisible death stones.
 
25029
</p>
 
25030
<p>The level author can configure <a href="#it_005fglasses">it_glasses</a> by elimination of
 
25031
&lsquo;<samp>SPOT_DEATH</samp>&rsquo; not to show invisible death stones. With the global attribute
 
25032
<a href="#ExtralifeGlasses">ExtralifeGlasses</a> even glasses generated by laser lighting an
 
25033
<a href="#it_005fextralife">it_extralife</a> can be configured not to show invisible actorimpulse stones.
 
25034
</p>
 
25035
<p>A death stone can also be movable. Of course ball like actors can not push it.
 
25036
But other actors can push it. A movable death stone can be connected by an
 
25037
<a href="#ot_005fwire">ot_wire</a> to another movable stone that allows to control it. Furtheron
 
25038
all stones emitting stone impulses like <a href="#st_005fstoneimpulse">st_stoneimpulse</a>, <a href="#st_005frotator">st_rotator</a>,
 
25039
<a href="#st_005flightpassenger">st_lightpassenger</a> can move it. And finally a pushing <a href="#st_005fboulder">st_boulder</a>
 
25040
will move it until an obstacle stops the death stone.
 
25041
</p>
 
25042
<p>A movable death stone looks identical to the static default version. But from
 
25043
time to time it will show its animation and can thus be identified by the user.
 
25044
The interval of the animations is determined by the attribute &lsquo;<samp>interval</samp>&rsquo;,
 
25045
but will randomly vary up to 20% from the given value. When the &lsquo;<samp>interval</samp>&rsquo;
 
25046
equals zero no animation will reveal the movable death. But any <a href="#it_005fglasses">it_glasses</a>
 
25047
capable of &lsquo;<samp>SPOT_DEATH</samp>&rsquo; will show the movable death in a lighter stone
 
25048
color than the static ones.
 
25049
</p>
 
25050
<p>A &lsquo;<samp>movable</samp>&rsquo; death can not be &lsquo;<samp>invisible</samp>&rsquo; at the same time. If you set
 
25051
both attributes the last attribute set wins and resets the first one.
 
25052
</p>
 
25053
<dl compact="compact">
 
25054
<dt> <b>Attributes:</b></dt>
 
25055
<dd><dl compact="compact">
 
25056
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>OFF</code>; <i>access</i>: <code>read only</code>  &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
25057
<dd><p>Current activity state of the death stone. A stone is usually activated by
 
25058
a hitting actor.
 
25059
</p></dd>
 
25060
<dt> <b>invisible</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
25061
<dd><p>Invisible death stones show only when hit by an actor or been toggled by a message.
 
25062
Setting this attribute to &lsquo;<samp>true</samp>&rsquo; sets &lsquo;<samp>movable</samp>&rsquo; to &lsquo;<samp>false</samp>&rsquo;.
 
25063
</p></dd>
 
25064
<dt> <b>movable</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;See section <a href="#movable">movable</a></dt>
 
25065
<dd><p>Movable death stone. Setting this attribute to &lsquo;<samp>true</samp>&rsquo; sets &lsquo;<samp>invisible</samp>&rsquo;
 
25066
to &lsquo;<samp>false</samp>&rsquo;.
 
25067
</p></dd>
 
25068
<dt> <b>interval</b> &nbsp;&nbsp;<i>values</i>: positive number; &nbsp;&nbsp;<i>default</i>: <code>10.0</code></dt>
 
25069
<dd><p>Number of seconds to show animation on movable death.
 
25070
</p></dd>
 
25071
</dl>
 
25072
 
 
25073
</dd>
 
25074
<dt> <b>Messages:</b></dt>
 
25075
<dd><dl compact="compact">
 
25076
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
25077
<dd><p>Temporarily activate the stone to show its animation and to get visible for this
 
25078
period.
 
25079
</p></dd>
 
25080
</dl>
 
25081
 
 
25082
</dd>
 
25083
<dt> <b>Action:</b> none</dt>
 
25084
<dt> <b>Variants:</b></dt>
 
25085
<dd><dl compact="compact">
 
25086
<dt> <img src="images/st_death.png" alt="images/st_death"><p> <b>st_death</b>: invisible = <code>false</code>
 
25087
</p></dt>
 
25088
<dt> <img src="images/fl_white.png" alt="images/fl_white"><p> <b>st_death_invisible</b>: invisible = <code>true</code>
 
25089
</p></dt>
 
25090
<dt> <img src="images/st_death_light.png" alt="images/st_death_light"><p> <b>st_death_movable</b>: movable = <code>true</code>
 
25091
</p></dt>
 
25092
</dl>
 
25093
 
 
25094
</dd>
 
25095
</dl>
 
25096
 
 
25097
<hr size="6">
 
25098
<a name="st_005fdisco"></a>
 
25099
<table cellpadding="1" cellspacing="1" border="0">
 
25100
<tr><td valign="middle" align="left">[<a href="#st_005fdeath" title="Previous section in reading order"> &lt; </a>]</td>
 
25101
<td valign="middle" align="left">[<a href="#st_005fdispenser" title="Next section in reading order"> &gt; </a>]</td>
 
25102
<td valign="middle" align="left"> &nbsp; </td>
 
25103
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
25104
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
25105
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
25106
<td valign="middle" align="left"> &nbsp; </td>
 
25107
<td valign="middle" align="left"> &nbsp; </td>
 
25108
<td valign="middle" align="left"> &nbsp; </td>
 
25109
<td valign="middle" align="left"> &nbsp; </td>
 
25110
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
25111
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
25112
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
25113
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
25114
</tr></table>
 
25115
<a name="st_005fdisco-1"></a>
 
25116
<h3 class="subsection">9.5.17 st_disco</h3>
 
25117
<a name="index-st_005fdisco"></a>
 
25118
 
 
25119
<p>A free passable stone, which darkens everything that is underneath the stone.
 
25120
It looks like a tinted glass that occurs in several shades. It likely got its
 
25121
name from the possibility to switch between the shade grades.
 
25122
</p>
 
25123
<p>The disco stone comes in three variants, &lsquo;<samp>LIGHT</samp>&rsquo;, &lsquo;<samp>MEDIUM</samp>&rsquo; and
 
25124
&lsquo;<samp>DARK</samp>&rsquo;. The dark variant is pure black, that shows neither actors, items or
 
25125
the floor. You can switch between these variants by messages and state attribute
 
25126
access. The messages <code>&quot;lighten&quot;</code> and <code>&quot;darken&quot;</code> change the shade
 
25127
by one degree. The message <code>&quot;signal&quot;</code> turns the disco light full on or off,
 
25128
independent of the previous state. The standard <code>&quot;toggle&quot;</code> switches from
 
25129
light -&gt; medium -&gt; dark -&gt; light.
 
25130
</p>
 
25131
<p>Note: unlike the old API versions of this stone, it does no longer support
 
25132
recursive shading of neighboring disco stones. Make use of object groups by
 
25133
<a href="#Object-Naming">Object Naming</a> to shade groups of arbitrary composition by a single message.
 
25134
</p>
 
25135
<dl compact="compact">
 
25136
<dt> <b>Attributes:</b></dt>
 
25137
<dd><dl compact="compact">
 
25138
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>LIGHT</code>, <code>MEDIUM</code>, <code>DARK</code>; &nbsp;&nbsp;<i>default</i>: <code>LIGHT</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
25139
<dd><p>The shading grade.
 
25140
</p></dd>
 
25141
</dl>
 
25142
 
 
25143
</dd>
 
25144
<dt> <b>Messages:</b></dt>
 
25145
<dd><dl compact="compact">
 
25146
<dt> <b>lighten</b></dt>
 
25147
<dd><p>Lighten by one degree.
 
25148
</p></dd>
 
25149
<dt> <b>darken</b></dt>
 
25150
<dd><p>Darken by one degree.
 
25151
</p></dd>
 
25152
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
25153
<dd><p>Switch to &lsquo;<samp>LIGHT</samp>&rsquo; on a value of <code>1</code>. Switch to &lsquo;<samp>DARK</samp>&rsquo; on a value
 
25154
of <code>0</code>.
 
25155
</p></dd>
 
25156
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
25157
<dd><p>Darken by degree or switch from &lsquo;<samp>DARK</samp>&rsquo; to &lsquo;<samp>LIGHT</samp>&rsquo;
 
25158
</p></dd>
 
25159
</dl>
 
25160
 
 
25161
</dd>
 
25162
<dt> <b>Action:</b> none</dt>
 
25163
<dt> <b>Variants:</b></dt>
 
25164
<dd><dl compact="compact">
 
25165
<dt> <img src="images/st_disco.png" alt="images/st_disco"><p> <b>st_disco</b>: state = <code>LIGHT</code>
 
25166
</p></dt>
 
25167
<dt> <img src="images/st_disco.png" alt="images/st_disco"><p> <b>st_disco_light</b>: state = <code>LIGHT</code>
 
25168
</p></dt>
 
25169
<dt> <img src="images/st_disco_2.png" alt="images/st_disco_2"><p> <b>st_disco_medium</b>: state = <code>MEDIUM</code>
 
25170
</p></dt>
 
25171
<dt> <img src="images/st_disco_3.png" alt="images/st_disco_3"><p> <b>st_disco_dark</b>: state = <code>DARK</code>
 
25172
</p></dt>
 
25173
</dl>
 
25174
 
 
25175
</dd>
 
25176
</dl>
 
25177
 
 
25178
<hr size="6">
 
25179
<a name="st_005fdispenser"></a>
 
25180
<table cellpadding="1" cellspacing="1" border="0">
 
25181
<tr><td valign="middle" align="left">[<a href="#st_005fdisco" title="Previous section in reading order"> &lt; </a>]</td>
 
25182
<td valign="middle" align="left">[<a href="#st_005fdoor" title="Next section in reading order"> &gt; </a>]</td>
 
25183
<td valign="middle" align="left"> &nbsp; </td>
 
25184
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
25185
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
25186
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
25187
<td valign="middle" align="left"> &nbsp; </td>
 
25188
<td valign="middle" align="left"> &nbsp; </td>
 
25189
<td valign="middle" align="left"> &nbsp; </td>
 
25190
<td valign="middle" align="left"> &nbsp; </td>
 
25191
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
25192
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
25193
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
25194
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
25195
</tr></table>
 
25196
<a name="st_005fdispenser-1"></a>
 
25197
<h3 class="subsection">9.5.18 st_dispenser</h3>
 
25198
<a name="index-st_005fdispenser"></a>
 
25199
 
 
25200
<p>An item dispenser in some item flavors.
 
25201
</p>
 
25202
<p>On every actor hit the dispenser adds a new item given by the attribute
 
25203
&lsquo;<samp>flavor</samp>&rsquo;, namely <a href="#it_005fbomb">it_bomb</a> in color black or white, <a href="#it_005fdynamite">it_dynamite</a>
 
25204
or <a href="#it_005fextralife">it_extralife</a> to the inventory of the actor&rsquo;s owner. Of course an item
 
25205
will just be added if the inventory is capable of adding a further item.
 
25206
Additionally the dispenser&rsquo;s &lsquo;<samp>stock</samp>&rsquo; must supply a further item. The
 
25207
default stock of 1000 items should be enough for usual demands. But you can
 
25208
limit the supply to just a few counted items. This &lsquo;<samp>stock</samp>&rsquo; attribute gets
 
25209
decremented every time an actor takes an item.
 
25210
</p>
 
25211
<p>The dispenser stone does break on adjacent <a href="#it_005fbomb">it_bomb</a> explosions and
 
25212
adjacent dispenser stone breaks. On its break it will itself cause adjacent
 
25213
<a href="#it_005fdynamite">it_dynamite</a> to ignite, <a href="#it_005fbomb">it_bomb</a> positioned beneath itself to
 
25214
explode, and of course neighboring dispensers to break. Dispenser stones will
 
25215
neither break on actor hits, even with a revealed hammer, nor on laser light
 
25216
beams.
 
25217
</p>
 
25218
<dl compact="compact">
 
25219
<dt> <b>Attributes:</b></dt>
 
25220
<dd>
 
25221
<dl compact="compact">
 
25222
<dt> <b>flavor</b> &nbsp;&nbsp;<i>values</i>: <code>&quot;bombblack&quot;</code>, <code>&quot;bombwhite&quot;</code>, <code>&quot;dynamite&quot;</code>, <code>&quot;extralife&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;bombblack&quot;</code>;</dt>
 
25223
<dt> <b>stock</b>, &nbsp;&nbsp;<i>values</i>: integer numbers; &nbsp;&nbsp;<i>default</i>: <code>1000</code>: &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
25224
</dl>
 
25225
 
 
25226
</dd>
 
25227
<dt> <b>Messages:</b> none</dt>
 
25228
<dt> <b>Action:</b> none</dt>
 
25229
<dt> <b>Variants:</b></dt>
 
25230
<dd>
 
25231
<dl compact="compact">
 
25232
<dt> <img src="images/st_dispenser_bombblack.png" alt="images/st_dispenser_bombblack"><p> <b>st_dispenser</b>: flavor=<code>&quot;bombblack&quot;</code>
 
25233
</p></dt>
 
25234
<dt> <img src="images/st_dispenser_bombblack.png" alt="images/st_dispenser_bombblack"><p> <b>st_dispenser_bombblack</b>: flavor=<code>&quot;bombblack&quot;</code>
 
25235
</p></dt>
 
25236
<dt> <img src="images/st_dispenser_bombwhite.png" alt="images/st_dispenser_bombwhite"><p> <b>st_dispenser_bombwhite</b>: flavor=<code>&quot;bombwhite&quot;</code>
 
25237
</p></dt>
 
25238
<dt> <img src="images/st_dispenser_dynamite.png" alt="images/st_dispenser_dynamite"><p> <b>st_dispenser_dynamite</b>: flavor=<code>&quot;dynamite&quot;</code>
 
25239
</p></dt>
 
25240
<dt> <img src="images/st_dispenser_extralife.png" alt="images/st_dispenser_extralife"><p> <b>st_dispenser_extralife</b>: flavor=<code>&quot;extralife&quot;</code>
 
25241
</p></dt>
 
25242
</dl>
 
25243
 
 
25244
</dd>
 
25245
</dl>
 
25246
 
 
25247
<hr size="6">
 
25248
<a name="st_005fdoor"></a>
 
25249
<table cellpadding="1" cellspacing="1" border="0">
 
25250
<tr><td valign="middle" align="left">[<a href="#st_005fdispenser" title="Previous section in reading order"> &lt; </a>]</td>
 
25251
<td valign="middle" align="left">[<a href="#st_005ffake" title="Next section in reading order"> &gt; </a>]</td>
 
25252
<td valign="middle" align="left"> &nbsp; </td>
 
25253
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
25254
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
25255
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
25256
<td valign="middle" align="left"> &nbsp; </td>
 
25257
<td valign="middle" align="left"> &nbsp; </td>
 
25258
<td valign="middle" align="left"> &nbsp; </td>
 
25259
<td valign="middle" align="left"> &nbsp; </td>
 
25260
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
25261
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
25262
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
25263
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
25264
</tr></table>
 
25265
<a name="st_005fdoor-1"></a>
 
25266
<h3 class="subsection">9.5.19 st_door</h3>
 
25267
<a name="index-st_005fdoor"></a>
 
25268
 
 
25269
<p>Doors are stones that let actors pass or block them to enter the grid, depending
 
25270
on their state. Doors can be opened and closed by the standard set of messages.
 
25271
Doors do not open or close instantly. They need a small amount of time. Actors
 
25272
can pass only doors that are completely open.
 
25273
</p>
 
25274
<p>There are several flavors of doors. The variants <code>&quot;a&quot;</code> to <code>&quot;c&quot;</code>
 
25275
represent grid filling block doors. Flavor <code>&quot;a&quot;</code> looks in the closed state
 
25276
like <a href="#st_005foxyd">st_oxyd</a> of flavor <code>&quot;a&quot;</code> and in the opened state like an
 
25277
<a href="#st_005fgrate">st_grate</a> of flavor <code>&quot;cross&quot;</code>. Flavor <code>&quot;b&quot;</code> looks in the closed
 
25278
state like <a href="#st_005fflat">st_flat</a> but opens to an invisible, free passable, but still
 
25279
existing and grid blocking stone. Flavor <code>&quot;c&quot;</code> looks in the closed state
 
25280
like <a href="#st_005fflat">st_flat</a> and in the opened state like an <a href="#st_005fgrate">st_grate</a> of flavor
 
25281
<code>&quot;framed&quot;</code>. The flavor <code>&quot;d&quot;</code> represents a faces based door, that
 
25282
opens or blocks just the given faces of the grid. Currently just the
 
25283
combinations of two parallel aligned door faces, aka horizontal and vertical
 
25284
doors, are supported.
 
25285
</p>
 
25286
<p>As door grids can be entered on unfaced sides you should block these faces by
 
25287
impassable stones. If you do not block these entries or even allow marbles to
 
25288
warp into a door, the actors will be free to leave the doors even if they are
 
25289
closed. But marbles will shatter on the door grid when doors are closed. This
 
25290
behaviour is a legacy Enigma feature.
 
25291
</p>
 
25292
<p>Doors are stones that are even present if they are not visible in the <code>OPEN</code>
 
25293
state. This means you can not push or move any other stone through an open door.
 
25294
The <a href="#st_005fblocker">st_blocker</a> is a quite compatible door alternative that allows stones
 
25295
to pass in its open state.
 
25296
</p>
 
25297
<p>All doors are hovering and will not press <a href="#it_005ftrigger">it_trigger</a>s. Thus you can detect
 
25298
passing actors by positioning a trigger beneath a door. Doors will neither press
 
25299
<a href="#fl_005fbridge">fl_bridge</a> and will thus take no influence on the bridge.
 
25300
</p>
 
25301
<p>Laser light will pass any open door, but will be blocked by closed faces. Closed
 
25302
doors of type <code>&quot;d&quot;</code> let light pass if the faces are parallel aligned to
 
25303
the light without intervening the light.
 
25304
</p>
 
25305
<p>Just doors of type <code>&quot;d&quot;</code> allow an actor to knock on its closed faces.
 
25306
This causes an action that might open the door or do anything else. A common
 
25307
target is <a href="#st_005fjamb">st_jamb</a> that evaluated the color of the knocking actor.
 
25308
</p>
 
25309
<p>Doors do support <a href="#Flood-Spreading">Flood Spreading</a> and <a href="#Fire-Spreading">Fire Spreading</a> through open
 
25310
faces and generally in &lsquo;<samp>OPEN</samp>&rsquo; state.
 
25311
</p>
 
25312
<dl compact="compact">
 
25313
<dt> <b>Attributes:</b></dt>
 
25314
<dd><dl compact="compact">
 
25315
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>OPEN</code>, <code>CLOSED</code>; &nbsp;&nbsp;<i>default</i>: <code>CLOSED</code>; &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
25316
<dd><p>The open state of the door. On read access it reports if the door is completely
 
25317
opened and passable for actors. Note that a door reaches the state &lsquo;<samp>OPEN</samp>&rsquo;
 
25318
after the finish of the opening animation, what is an essential amount of time
 
25319
after the initiating <code>&quot;open&quot;</code> message. But on a <code>&quot;close&quot;</code> message the
 
25320
state turns immediately to &lsquo;<samp>CLOSED</samp>&rsquo; as actors are blocked immediately. On
 
25321
write access a state change causes a proper message and may occur with a delay,
 
25322
too.
 
25323
</p>
 
25324
</dd>
 
25325
<dt> <b>flavor</b> &nbsp;&nbsp;<i>values</i>: <code>&quot;a&quot;</code>, <code>&quot;b&quot;</code>, <code>&quot;c&quot;</code>, <code>&quot;d&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;d&quot;</code></dt>
 
25326
<dd><p>Representing different door types as described above. Block based flavors
 
25327
<code>&quot;a&quot;</code>, <code>&quot;b&quot;</code>, <code>&quot;c&quot;</code> and the face based flavor <code>&quot;d&quot;</code>.
 
25328
</p>
 
25329
</dd>
 
25330
<dt> <b>faces</b> &nbsp;&nbsp;<i>values</i>: string; &nbsp;&nbsp;<i>default</i>: <code>&quot;nesw&quot;</code></dt>
 
25331
<dd><p>Describes the door faces of the stone. The string is a substring of
 
25332
<code>&quot;nesw&quot;</code> listing the faces. The sequence of the sides, north, east, south,
 
25333
west, is guaranteed on read access but arbitrary on write access. Note that
 
25334
the supported face combinations depend on the flavor. All but flavor <code>&quot;d&quot;</code>
 
25335
do always provide all 4 faces. Flavor <code>&quot;d&quot;</code> currently supports the face
 
25336
combinations <code>&quot;ns&quot;</code> and <code>&quot;ew&quot;</code>, in other words horizontal and
 
25337
vertical aligned door faces, with the first combination being the default.
 
25338
</p>
 
25339
</dd>
 
25340
</dl>
 
25341
 
 
25342
</dd>
 
25343
<dt> <b>Messages:</b></dt>
 
25344
<dd><dl compact="compact">
 
25345
<dt> <b>open</b> &nbsp;&nbsp;See section <a href="#open">open</a></dt>
 
25346
<dd><p>Opens a closed door or reverses the process of a closing door.
 
25347
</p></dd>
 
25348
<dt> <b>close</b> &nbsp;&nbsp;See section <a href="#close">close</a></dt>
 
25349
<dd><p>Closes an open door or reverses the process of an opening door.
 
25350
</p></dd>
 
25351
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
25352
<dd><p>Opens at value &lsquo;<samp>1</samp>&rsquo;, and closes at value &lsquo;<samp>0</samp>&rsquo;.
 
25353
</p></dd>
 
25354
</dl>
 
25355
 
 
25356
</dd>
 
25357
<dt> <b>Action:</b></dt>
 
25358
<dd><p>Just flavor <code>&quot;d&quot;</code> doors will perform an action on an actor touching a face
 
25359
of a closed door. The action value will be the actor object, which can be
 
25360
evaluated on its kind. This action value fits the &lsquo;<samp>hit</samp>&rsquo; messages of
 
25361
objects like <a href="#st_005fjamb">st_jamb</a>.
 
25362
</p>
 
25363
</dd>
 
25364
<dt> <b>Variants:</b></dt>
 
25365
<dd><table>
 
25366
<tr><td width="8%"><img src="images/st_oxyda.png" alt="images/st_oxyda"></td><td width="42%"><b>st_door_a</b>: flavor = <code>&quot;a&quot;</code>, state = <code>CLOSED</code></td><td width="8%"><img src="images/st_grate_cross.png" alt="images/st_grate_cross"></td><td width="42%"><b>st_door_a</b>: flavor = <code>&quot;a&quot;</code>, state = <code>OPEN</code></td></tr>
 
25367
<tr><td width="8%"><img src="images/st_flat.png" alt="images/st_flat"></td><td width="42%"><b>st_door_b</b>: flavor = <code>&quot;b&quot;</code>, state = <code>CLOSED</code></td><td width="8%"><img src="images/fl_white.png" alt="images/fl_white"></td><td width="42%"><b>st_door_b</b>: flavor = <code>&quot;b&quot;</code>, state = <code>OPEN</code></td></tr>
 
25368
<tr><td width="8%"><img src="images/st_flat.png" alt="images/st_flat"></td><td width="42%"><b>st_door_c</b>: flavor = <code>&quot;c&quot;</code>, state = <code>CLOSED</code></td><td width="8%"><img src="images/st_grate_framed.png" alt="images/st_grate_framed"></td><td width="42%"><b>st_door_c</b>: flavor = <code>&quot;c&quot;</code>, state = <code>OPEN</code></td></tr>
 
25369
<tr><td width="8%"><img src="images/st_door_d_ns_7.png" alt="images/st_door_d_ns_7"></td><td width="42%"><b>st_door_d</b>: flavor = <code>&quot;d&quot;</code>, faces = <code>&quot;ns&quot;</code>, state = <code>CLOSED</code></td><td width="8%"><img src="images/st_door_d_ns.png" alt="images/st_door_d_ns"></td><td width="42%"><b>st_door_d</b>: flavor = <code>&quot;d&quot;</code>, faces = <code>&quot;ns&quot;</code>, state = <code>OPEN</code></td></tr>
 
25370
<tr><td width="8%"><img src="images/st_door_d_ew_g.png" alt="images/st_door_d_ew_g"></td><td width="42%"><b>st_door_d</b>: flavor = <code>&quot;d&quot;</code>, faces = <code>&quot;ew&quot;</code>, state = <code>CLOSED</code></td><td width="8%"><img src="images/st_door_d_ew.png" alt="images/st_door_d_ew"></td><td width="42%"><b>st_door_d</b>: flavor = <code>&quot;d&quot;</code>, faces = <code>&quot;ew&quot;</code>, state = <code>OPEN</code></td></tr>
 
25371
</table>
 
25372
 
 
25373
</dd>
 
25374
</dl>
 
25375
 
 
25376
<hr size="6">
 
25377
<a name="st_005ffake"></a>
 
25378
<table cellpadding="1" cellspacing="1" border="0">
 
25379
<tr><td valign="middle" align="left">[<a href="#st_005fdoor" title="Previous section in reading order"> &lt; </a>]</td>
 
25380
<td valign="middle" align="left">[<a href="#st_005fflash" title="Next section in reading order"> &gt; </a>]</td>
 
25381
<td valign="middle" align="left"> &nbsp; </td>
 
25382
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
25383
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
25384
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
25385
<td valign="middle" align="left"> &nbsp; </td>
 
25386
<td valign="middle" align="left"> &nbsp; </td>
 
25387
<td valign="middle" align="left"> &nbsp; </td>
 
25388
<td valign="middle" align="left"> &nbsp; </td>
 
25389
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
25390
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
25391
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
25392
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
25393
</tr></table>
 
25394
<a name="st_005ffake-1"></a>
 
25395
<h3 class="subsection">9.5.20 st_fake</h3>
 
25396
<a name="index-st_005ffake"></a>
 
25397
 
 
25398
<p>A stone that mimics other stones, but does not act like them.
 
25399
</p>
 
25400
<p>In contrast to <a href="#st_005fmagic">st_magic</a> the fake stone does not transform but remains
 
25401
all time a passive variant of the stone that it models. The stone does look
 
25402
like another stone of the kind given by the attribute &lsquo;<samp>flavor</samp>&rsquo;. The fake
 
25403
stone may even mimic state dependent behaviour with state dependent models
 
25404
and animations.
 
25405
</p>
 
25406
<p>The flavor <code>&quot;quake&quot;</code> mimics a <a href="#st_005fquake">st_quake</a> including the pulsing
 
25407
animation on actor hits and state changes, but does not cause any <a href="#st_005foxyd">st_oxyd</a>
 
25408
to close.
 
25409
</p>
 
25410
<p>The flavors <code>&quot;oxyda&quot;</code>, <code>&quot;oxydb&quot;</code>, <code>&quot;oxydc&quot;</code>, <code>&quot;oxydd&quot;</code>,
 
25411
<code>&quot;oxyde&quot;</code> mimic <a href="#st_005foxyd">st_oxyd</a> of appropriate flavor, but they are just
 
25412
passive stones. Nevertheless they are aware of a state &lsquo;<samp>OPEN</samp>&rsquo; and will
 
25413
display the corresponding base image of the open oxyd stone, of course without
 
25414
any color spot.
 
25415
</p>
 
25416
<dl compact="compact">
 
25417
<dt> <b>Attributes:</b></dt>
 
25418
<dd>
 
25419
<dl compact="compact">
 
25420
<dt> <b>flavor</b> &nbsp;&nbsp;<i>values</i>: <code>&quot;quake&quot;</code>, <code>&quot;oxyda&quot;</code>, <code>&quot;oxydb&quot;</code>, <code>&quot;oxydc&quot;</code>, <code>&quot;oxydd&quot;</code>, <code>&quot;oxyde&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;quake&quot;</code>;</dt>
 
25421
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>CLOSED</code>, <code>OPEN</code>; &nbsp;&nbsp;<i>default</i>: <code>CLOSED</code>: &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
25422
</dl>
 
25423
 
 
25424
</dd>
 
25425
<dt> <b>Messages:</b> none</dt>
 
25426
<dt> <b>Action:</b> none</dt>
 
25427
<dt> <b>Variants:</b></dt>
 
25428
<dd><table>
 
25429
<tr><td width="8%"><img src="images/st_oxydb.png" alt="images/st_oxydb"> <b>st_fake_quake</b>: flavor=<code>&quot;quake&quot;</code>, state=<code>IDLE</code></td><td width="42%"><img src="images/st_quake_3.png" alt="images/st_quake_3"> <b>st_fake_quake</b>: flavor=<code>&quot;quake&quot;</code>, state=<code>ACTIVE</code></td></tr>
 
25430
<tr><td width="8%"><img src="images/st_oxyda.png" alt="images/st_oxyda"> <b>st_fake_oxyda</b>: flavor=<code>&quot;oxyda&quot;</code>, state=<code>CLOSED</code></td><td width="42%"><img src="images/st_oxyda_open.png" alt="images/st_oxyda_open"> <b>st_fake_oxyda</b>: flavor=<code>&quot;oxyda&quot;</code>, state=<code>OPEN</code></td></tr>
 
25431
<tr><td width="8%"><img src="images/st_oxydb.png" alt="images/st_oxydb"> <b>st_fake_oxydb</b>: flavor=<code>&quot;oxydb&quot;</code>, state=<code>CLOSED</code></td><td width="42%"><img src="images/st_oxydb_open.png" alt="images/st_oxydb_open"> <b>st_fake_oxydb</b>: flavor=<code>&quot;oxydb&quot;</code>, state=<code>OPEN</code></td></tr>
 
25432
<tr><td width="8%"><img src="images/st_oxydc.png" alt="images/st_oxydc"> <b>st_fake_oxydc</b>: flavor=<code>&quot;oxydc&quot;</code>, state=<code>CLOSED</code></td><td width="42%"><img src="images/st_oxydc_open.png" alt="images/st_oxydc_open"> <b>st_fake_oxydc</b>: flavor=<code>&quot;oxydc&quot;</code>, state=<code>OPEN</code></td></tr>
 
25433
<tr><td width="8%"><img src="images/st_oxydd.png" alt="images/st_oxydd"> <b>st_fake_oxydd</b>: flavor=<code>&quot;oxydd&quot;</code>, state=<code>CLOSED</code></td><td width="42%"><img src="images/st_oxydb_open.png" alt="images/st_oxydb_open"> <b>st_fake_oxydd</b>: flavor=<code>&quot;oxydd&quot;</code>, state=<code>OPEN</code></td></tr>
 
25434
<tr><td width="8%"><img src="images/st_oxydb.png" alt="images/st_oxydb"> <b>st_fake_oxyde</b>: flavor=<code>&quot;oxyde&quot;</code>, state=<code>CLOSED</code></td><td width="42%"><img src="images/st_oxydb_open.png" alt="images/st_oxydb_open"> <b>st_fake_oxyde</b>: flavor=<code>&quot;oxyde&quot;</code>, state=<code>OPEN</code></td></tr>
 
25435
</table>
 
25436
 
 
25437
</dd>
 
25438
</dl>
 
25439
 
 
25440
<hr size="6">
 
25441
<a name="st_005fflash"></a>
 
25442
<table cellpadding="1" cellspacing="1" border="0">
 
25443
<tr><td valign="middle" align="left">[<a href="#st_005ffake" title="Previous section in reading order"> &lt; </a>]</td>
 
25444
<td valign="middle" align="left">[<a href="#st_005fflat" title="Next section in reading order"> &gt; </a>]</td>
 
25445
<td valign="middle" align="left"> &nbsp; </td>
 
25446
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
25447
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
25448
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
25449
<td valign="middle" align="left"> &nbsp; </td>
 
25450
<td valign="middle" align="left"> &nbsp; </td>
 
25451
<td valign="middle" align="left"> &nbsp; </td>
 
25452
<td valign="middle" align="left"> &nbsp; </td>
 
25453
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
25454
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
25455
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
25456
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
25457
</tr></table>
 
25458
<a name="st_005fflash-1"></a>
 
25459
<h3 class="subsection">9.5.21 st_flash</h3>
 
25460
<a name="index-st_005fflash"></a>
 
25461
 
 
25462
<p>A stone symbolized by a yellow flash, that forwards actors hits as a force to
 
25463
matching partner actors.
 
25464
</p>
 
25465
<p>Just <a href="#ac_005fmarble">ac_marble</a> actors are affected. A black hitting marble will push
 
25466
the first white marble, and vice versa. The hitting marble&rsquo;s velocity is
 
25467
multiplied to a distortion matrix given by four single attributes. The default
 
25468
matrix does maintain the direction. The resulting vector is again multiplied
 
25469
by a linear strength factor. The resulting force vector is applied to the
 
25470
partner marble. If no matching marble exists no forces are applied. The hitting
 
25471
marble bounces on the flash stone as on any other standard stone.
 
25472
</p>
 
25473
<dl compact="compact">
 
25474
<dt> <b>Attributes:</b></dt>
 
25475
<dd>
 
25476
<dl compact="compact">
 
25477
<dt> <b>hit_strength</b> &nbsp;&nbsp;<i>values</i>: floating point numbers; &nbsp;&nbsp;<i>default</i>: <code>20.0</code>; &nbsp;&nbsp;See section <a href="#hit_005f_002a">hit_*</a></dt>
 
25478
<dt> <b>hit_distortion_xx</b> &nbsp;&nbsp;<i>values</i>: floating point numbers; &nbsp;&nbsp;<i>default</i>: <code>1.0</code>; &nbsp;&nbsp;See section <a href="#hit_005f_002a">hit_*</a></dt>
 
25479
<dt> <b>hit_distortion_xy</b> &nbsp;&nbsp;<i>values</i>: floating point numbers; &nbsp;&nbsp;<i>default</i>: <code>0.0</code>; &nbsp;&nbsp;See section <a href="#hit_005f_002a">hit_*</a></dt>
 
25480
<dt> <b>hit_distortion_yx</b> &nbsp;&nbsp;<i>values</i>: floating point numbers; &nbsp;&nbsp;<i>default</i>: <code>0.0</code>; &nbsp;&nbsp;See section <a href="#hit_005f_002a">hit_*</a></dt>
 
25481
<dt> <b>hit_distortion_yy</b> &nbsp;&nbsp;<i>values</i>: floating point numbers; &nbsp;&nbsp;<i>default</i>: <code>1.0</code>; &nbsp;&nbsp;See section <a href="#hit_005f_002a">hit_*</a></dt>
 
25482
</dl>
 
25483
 
 
25484
</dd>
 
25485
<dt> <b>Messages:</b> none</dt>
 
25486
<dt> <b>Action:</b>  none</dt>
 
25487
<dt> <b>Variants:</b></dt>
 
25488
<dd><dl compact="compact">
 
25489
<dt> <img src="images/st_flash.png" alt="images/st_flash"><p> <b>st_flash</b>:
 
25490
</p></dt>
 
25491
</dl>
 
25492
</dd>
 
25493
</dl>
 
25494
 
 
25495
<hr size="6">
 
25496
<a name="st_005fflat"></a>
 
25497
<table cellpadding="1" cellspacing="1" border="0">
 
25498
<tr><td valign="middle" align="left">[<a href="#st_005fflash" title="Previous section in reading order"> &lt; </a>]</td>
 
25499
<td valign="middle" align="left">[<a href="#st_005ffloppy" title="Next section in reading order"> &gt; </a>]</td>
 
25500
<td valign="middle" align="left"> &nbsp; </td>
 
25501
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
25502
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
25503
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
25504
<td valign="middle" align="left"> &nbsp; </td>
 
25505
<td valign="middle" align="left"> &nbsp; </td>
 
25506
<td valign="middle" align="left"> &nbsp; </td>
 
25507
<td valign="middle" align="left"> &nbsp; </td>
 
25508
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
25509
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
25510
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
25511
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
25512
</tr></table>
 
25513
<a name="st_005fflat-1"></a>
 
25514
<h3 class="subsection">9.5.22 st_flat</h3>
 
25515
<a name="index-st_005fflat"></a>
 
25516
 
 
25517
<p>A flat gypsum stone with many variants and features.
 
25518
</p>
 
25519
<p>Besides the standard features of a movable, hollow or breakable stone the flat
 
25520
stone provides some very special features and variant transformations.
 
25521
</p>
 
25522
<p>Movable and breakable flat stones will fall into <a href="#fl_005fabyss">fl_abyss</a>. But just the
 
25523
movable variant will fall into <a href="#fl_005fwater">fl_water</a> and <a href="#fl_005fswamp">fl_swamp</a>.
 
25524
</p>
 
25525
<p>A laser beam will shatter a breakable variant. Further on it transforms a plain flat
 
25526
stone, and just this variant, into a cracked variant, which is visually
 
25527
distinguishable by small cracks. But further laser light will not break a
 
25528
cracked variant. Ignitions and explosions will shatter breakable, cracked and
 
25529
movable variants. An actor with a revealed <a href="#it_005fhammer">it_hammer</a> is able to shatter
 
25530
both the breakable and the cracked variant. Note that the visually
 
25531
indistinguishable <a href="#st_005fbreak">st_break</a>_laser breaks on a laser hit, too, but without
 
25532
being breakable by actors.
 
25533
</p>
 
25534
<p>An actor with a revealed <a href="#it_005fpencil">it_pencil</a> will mark a plain or movable variant
 
25535
as burnable what is hinted for the player by a fire symbol on the flat stone
 
25536
surface. A burnable flat stone burns on fire, but just the immovable, burnable
 
25537
variant reacts on heating by self destruction. All burnable variants can be
 
25538
cleaned by an actor hit with an <a href="#it_005fbrush">it_brush</a>. The fire symbol vanishes and
 
25539
the stone does not longer react on fire and heating.
 
25540
</p>
 
25541
<p>Last but not least an <a href="#st_005fboulder">st_boulder</a> hitting a plain or hollow variant of the
 
25542
flat stone toggles the &lsquo;<samp>hollow</samp>&rsquo; attribute twice within a short period. The
 
25543
time is sufficient for a fast actor to pass an otherwise solid plain flat stone.
 
25544
By proper fast redirection of the boulder a user can enforce permanent changes
 
25545
of the hollow state.
 
25546
</p>
 
25547
<dl compact="compact">
 
25548
<dt> <b>Attributes:</b></dt>
 
25549
<dd>
 
25550
<dl compact="compact">
 
25551
<dt> <b>hollow</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: read only &nbsp;&nbsp;See section <a href="#hollow">hollow</a></dt>
 
25552
<dt> <b>movable</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: read only &nbsp;&nbsp;See section <a href="#movable">movable</a></dt>
 
25553
<dt> <b>breakable</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: read only &nbsp;&nbsp;See section <a href="#breakable">breakable</a></dt>
 
25554
<dt> <b>burnable</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: read only &nbsp;&nbsp;See section <a href="#burnable">burnable</a></dt>
 
25555
</dl>
 
25556
 
 
25557
</dd>
 
25558
<dt> <b>Messages:</b> none</dt>
 
25559
<dt> <b>Action:</b> none</dt>
 
25560
<dt> <b>Variants:</b></dt>
 
25561
<dd><dl compact="compact">
 
25562
<dt> <img src="images/st_flat.png" alt="images/st_flat"><p> <b>st_flat</b>:
 
25563
</p></dt>
 
25564
<dt> <img src="images/st_flat.png" alt="images/st_flat"><p> <b>st_flat_hollow</b>: hollow=<code>true</code>
 
25565
</p></dt>
 
25566
<dt> <img src="images/st_flat.png" alt="images/st_flat"><p> <b>st_flat_movable</b>: movable=<code>&quot;true&quot;</code>
 
25567
</p></dt>
 
25568
<dt> <img src="images/st_flat.png" alt="images/st_flat"><p> <b>st_flat_breakable</b>: breakable=<code>&quot;true&quot;</code>
 
25569
</p></dt>
 
25570
<dt> <img src="images/st_flat_cracked.png" alt="images/st_flat_cracked"><p> <b>st_flat_cracked</b>:
 
25571
</p></dt>
 
25572
<dt> <img src="images/st_flat_fire.png" alt="images/st_flat_fire"><p> <b>st_flat_burnable</b>: burnable=<code>&quot;true&quot;</code>
 
25573
</p></dt>
 
25574
<dt> <img src="images/st_flat_fire.png" alt="images/st_flat_fire"><p> <b>st_flat_moveburnable</b>: movable=<code>&quot;true&quot;</code>, burnable=<code>&quot;true&quot;</code>
 
25575
</p></dt>
 
25576
<dt> <img src="images/st_flat_break.png" alt="images/st_flat_break"><p> <b>st_flat_breaking</b>: breakable=<code>&quot;true&quot;</code>
 
25577
</p></dt>
 
25578
</dl>
 
25579
</dd>
 
25580
</dl>
 
25581
 
 
25582
<hr size="6">
 
25583
<a name="st_005ffloppy"></a>
 
25584
<table cellpadding="1" cellspacing="1" border="0">
 
25585
<tr><td valign="middle" align="left">[<a href="#st_005fflat" title="Previous section in reading order"> &lt; </a>]</td>
 
25586
<td valign="middle" align="left">[<a href="#st_005ffourswitch" title="Next section in reading order"> &gt; </a>]</td>
 
25587
<td valign="middle" align="left"> &nbsp; </td>
 
25588
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
25589
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
25590
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
25591
<td valign="middle" align="left"> &nbsp; </td>
 
25592
<td valign="middle" align="left"> &nbsp; </td>
 
25593
<td valign="middle" align="left"> &nbsp; </td>
 
25594
<td valign="middle" align="left"> &nbsp; </td>
 
25595
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
25596
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
25597
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
25598
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
25599
</tr></table>
 
25600
<a name="st_005ffloppy-1"></a>
 
25601
<h3 class="subsection">9.5.23 st_floppy</h3>
 
25602
<a name="index-st_005ffloppy"></a>
 
25603
 
 
25604
<p>A switch that is activated by insertion of an <a href="#it_005ffloppy">it_floppy</a>. Just actors
 
25605
assigned to a player can insert a floppy out of their item inventory by hitting
 
25606
the floppy switch with a floppy being the first item.
 
25607
</p>
 
25608
<p>On a second hit the switch is deactivated and the inserted floppy is returned
 
25609
to the players inventory.
 
25610
</p>
 
25611
<p>Floppy stones are often used as openers for an adjacent <a href="#st_005fdoor">st_door</a> that is
 
25612
declared as its &lsquo;<samp>target</samp>&rsquo;. But there is the inherent danger that an actor
 
25613
passing the door accidentially hits the neighboring floppy stone, causing the floppy
 
25614
to be pulled out again and the door to be closed immediately. Of couse this
 
25615
would shatter any <a href="#ac_005fmarble">ac_marble</a> or <a href="#ac_005fpearl">ac_pearl</a>. But a &lsquo;<samp>secure</samp>&rsquo; floppy
 
25616
stone checks that the hitting actor is not positioned on one of the floppy stones
 
25617
target positions. It refuses any actions caused by such critical hits. Note
 
25618
that in case the target is a callback function that closes the adjacent door,
 
25619
there will be still no protection. A floppy stone with &lsquo;<samp>secure</samp>&rsquo; value
 
25620
&lsquo;<samp>false</samp>&rsquo; would accept any hits and shatter marbles as it has been standard
 
25621
on older Enigma releases and is still in modes besides Enigma.
 
25622
</p>
 
25623
<dl compact="compact">
 
25624
<dt> <b>Attributes:</b></dt>
 
25625
<dd>
 
25626
<dl compact="compact">
 
25627
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>OFF</code>; &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
25628
<dd><p>Current activity state of the floppy stone.
 
25629
</p></dd>
 
25630
<dt> <b>secure</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
25631
<dd><p>Protect actors on target positions by neglecting their hits.
 
25632
</p></dd>
 
25633
</dl>
 
25634
 
 
25635
</dd>
 
25636
<dt> <b>Messages:</b></dt>
 
25637
<dd>
 
25638
<dl compact="compact">
 
25639
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
25640
<dd><p>Switches on at value &lsquo;<samp>1</samp>&rsquo;, and off at value &lsquo;<samp>0</samp>&rsquo;.
 
25641
</p></dd>
 
25642
<dt> <b>on</b> &nbsp;&nbsp;See section <a href="#on">on</a></dt>
 
25643
<dt> <b>off</b> &nbsp;&nbsp;See section <a href="#off">off</a></dt>
 
25644
</dl>
 
25645
 
 
25646
</dd>
 
25647
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
25648
<dt> <b>Variants:</b></dt>
 
25649
<dd><dl compact="compact">
 
25650
<dt> <img src="images/st_floppy_off.png" alt="images/st_floppy_off"><p> <b>st_floppy</b> with state=<code>OFF</code>
 
25651
</p></dt>
 
25652
<dt> <img src="images/st_floppy_on.png" alt="images/st_floppy_on"><p> <b>st_floppy</b> with state=<code>ON</code>
 
25653
</p></dt>
 
25654
</dl>
 
25655
</dd>
 
25656
</dl>
 
25657
 
 
25658
<hr size="6">
 
25659
<a name="st_005ffourswitch"></a>
 
25660
<table cellpadding="1" cellspacing="1" border="0">
 
25661
<tr><td valign="middle" align="left">[<a href="#st_005ffloppy" title="Previous section in reading order"> &lt; </a>]</td>
 
25662
<td valign="middle" align="left">[<a href="#st_005fghost" title="Next section in reading order"> &gt; </a>]</td>
 
25663
<td valign="middle" align="left"> &nbsp; </td>
 
25664
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
25665
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
25666
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
25667
<td valign="middle" align="left"> &nbsp; </td>
 
25668
<td valign="middle" align="left"> &nbsp; </td>
 
25669
<td valign="middle" align="left"> &nbsp; </td>
 
25670
<td valign="middle" align="left"> &nbsp; </td>
 
25671
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
25672
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
25673
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
25674
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
25675
</tr></table>
 
25676
<a name="st_005ffourswitch-1"></a>
 
25677
<h3 class="subsection">9.5.24 st_fourswitch</h3>
 
25678
<a name="index-st_005ffourswitch"></a>
 
25679
 
 
25680
<p>A switch that points into one of the four orientations and turning on every
 
25681
switching event. The most common event is an actor hitting this stone. But
 
25682
<a href="#st_005fboulder">st_boulder</a> will trigger this switch, too. Of course other objects can send
 
25683
messages on actions to make this switch turning.
 
25684
</p>
 
25685
<p>When turning its pointer on a switching event it performs the action given by
 
25686
the &lsquo;<samp>action/target</samp>&rsquo;-pair. This can be either a common pair or a
 
25687
state/orientation dependent pair allowing you to issue different messages
 
25688
dependent on the pointing orientation.
 
25689
</p>
 
25690
<dl compact="compact">
 
25691
<dt> <b>Attributes:</b></dt>
 
25692
<dd>
 
25693
<dl compact="compact">
 
25694
<dd><a name="index-state"></a>
 
25695
</dd>
 
25696
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>NORTH</code>, <code>EAST</code>, <code>SOUTH</code>, <code>WEST</code>; &nbsp;&nbsp;<i>default</i>: <code>NORTH</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
25697
<dt> <b>counterclock</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
25698
<dd><p>The standard turning direction is clockwise. Use this attribute to revert the
 
25699
direction.
 
25700
</p></dd>
 
25701
<dt> <b>inverse</b> &nbsp;&nbsp;See section <a href="#inverse">inverse</a></dt>
 
25702
<dd><p>Note that the action value is inverted in its boolean interpretation. This means
 
25703
that an inverted action value is <em>not</em> the reverse orientation and should
 
25704
not be used as an orientation value at all.
 
25705
</p></dd>
 
25706
</dl>
 
25707
 
 
25708
</dd>
 
25709
<dt> <b>Messages:</b></dt>
 
25710
<dd>
 
25711
<dl compact="compact">
 
25712
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
25713
<dd><p>Note that the fourswitch reacts just on value <code>1</code>. Values of <code>0</code> are
 
25714
simply ignored. Use message toggle if you need turns on any message value.
 
25715
</p></dd>
 
25716
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
25717
<dd><p>Note that a toggle turns the fourswitch independent of a message value.
 
25718
</p></dd>
 
25719
</dl>
 
25720
 
 
25721
</dd>
 
25722
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
25723
<dd><p>Performs an action on each turn. If just a pair of global &lsquo;<samp>target/action</samp>&rsquo;
 
25724
attributes are given, the action message is sent to the target with a value of
 
25725
the new orientation. This value suits any message of the target that expects
 
25726
an orientation value, and the <a href="#signal">signal</a> message, that translates the
 
25727
orientation value to a 1 for &lsquo;<samp>NORTH</samp>&rsquo;, &lsquo;<samp>SOUTH</samp>&rsquo; and a 0 for
 
25728
&lsquo;<samp>EAST</samp>&rsquo;, &lsquo;<samp>WEST</samp>&rsquo;.
 
25729
</p>
 
25730
<p>If state dependent target/action pairs are given instead, namely
 
25731
&lsquo;<samp>target_0/action_0</samp>&rsquo; for the state &lsquo;<samp>WEST</samp>&rsquo;,... , &lsquo;<samp>target_3/action_3</samp>&rsquo;
 
25732
for the state &lsquo;<samp>NORTH</samp>&rsquo;, two actions will be performed: first for the state
 
25733
representing the old orientation the given action messages will be sent with
 
25734
a value of 0, then for the state representing the new orientation the given
 
25735
action messages will be sent with a value of 1. This allows you to switch on
 
25736
and off alternative sources by a fourswitch.
 
25737
</p>
 
25738
</dd>
 
25739
<dt> <b>Variants:</b></dt>
 
25740
<dd><dl compact="compact">
 
25741
<dt> <img src="images/st_fourswitch.png" alt="images/st_fourswitch"><p> <b>st_fourswitch</b>
 
25742
</p></dt>
 
25743
</dl>
 
25744
</dd>
 
25745
</dl>
 
25746
 
 
25747
<hr size="6">
 
25748
<a name="st_005fghost"></a>
 
25749
<table cellpadding="1" cellspacing="1" border="0">
 
25750
<tr><td valign="middle" align="left">[<a href="#st_005ffourswitch" title="Previous section in reading order"> &lt; </a>]</td>
 
25751
<td valign="middle" align="left">[<a href="#st_005fgrate" title="Next section in reading order"> &gt; </a>]</td>
 
25752
<td valign="middle" align="left"> &nbsp; </td>
 
25753
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
25754
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
25755
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
25756
<td valign="middle" align="left"> &nbsp; </td>
 
25757
<td valign="middle" align="left"> &nbsp; </td>
 
25758
<td valign="middle" align="left"> &nbsp; </td>
 
25759
<td valign="middle" align="left"> &nbsp; </td>
 
25760
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
25761
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
25762
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
25763
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
25764
</tr></table>
 
25765
<a name="st_005fghost-1"></a>
 
25766
<h3 class="subsection">9.5.25 st_ghost</h3>
 
25767
<a name="index-st_005fghost"></a>
 
25768
 
 
25769
<p>An invisible stone that transforms into a visible stone on actor hits with
 
25770
properly revealed tools.
 
25771
</p>
 
25772
<p>Similar to <a href="#st_005fmagic">st_magic</a> this stone does transform to another kind, but it
 
25773
is initially always invisible, what gave it its name. Invisibility is not
 
25774
equal to laser transparency. In fact one flavor of this ghost stone is not
 
25775
laser transparent. And invisibility does not mean that an invisible actor can
 
25776
pass a ghost stone. (see section <a href="#Transparent-Stones">Transparent Stones</a>)
 
25777
</p>
 
25778
<p>The ghost stone transforms to another stone of the kind given by its
 
25779
attribute &lsquo;<samp>flavor</samp>&rsquo;. The tool necessary to cause this transformation depends
 
25780
on the flavor.
 
25781
</p>
 
25782
<p>The flavor <code>&quot;purplemarble&quot;</code> transforms to an <a href="#st_005fpurplemarble">st_purplemarble</a> on a hit
 
25783
with a revealed <a href="#it_005fbrush">it_brush</a>. This flavor is not laser transparent.
 
25784
</p>
 
25785
<p>The flavor <code>&quot;greenbrown&quot;</code> transforms to an <a href="#st_005fgreenbrown">st_greenbrown</a> on a hit
 
25786
with a revealed <a href="#it_005fmagicwand">it_magicwand</a>.
 
25787
</p>
 
25788
<p>The flavor <code>&quot;break&quot;</code> transforms to an <a href="#st_005fbreak">st_break</a> of variant
 
25789
&lsquo;<samp>st_break_oxydc</samp>&rsquo; on a hit with a revealed <a href="#it_005fbrush">it_brush</a>.
 
25790
</p>
 
25791
 
 
25792
<dl compact="compact">
 
25793
<dt> <b>Attributes:</b></dt>
 
25794
<dd>
 
25795
<dl compact="compact">
 
25796
<dt> <b>flavor</b> &nbsp;&nbsp;<i>values</i>: <code>&quot;purplemarble&quot;</code>, <code>&quot;greenbrown&quot;</code>, <code>&quot;break&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;purplemarble&quot;</code>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
25797
</dl>
 
25798
 
 
25799
</dd>
 
25800
<dt> <b>Messages:</b> none</dt>
 
25801
<dt> <b>Action:</b> none</dt>
 
25802
<dt> <b>Variants:</b></dt>
 
25803
<dd><table>
 
25804
<tr><td width="8%"><img src="images/fl_white.png" alt="images/fl_white"></td><td width="52%"><b>st_ghost</b>: flavor=<code>&quot;purplemarble&quot;</code></td><td width="40%"><img src="images/st_purplemarble.png" alt="images/st_purplemarble"></td></tr>
 
25805
<tr><td width="8%"><img src="images/fl_white.png" alt="images/fl_white"></td><td width="52%"><b>st_ghost_purplemarble</b>: flavor=<code>&quot;purplemarble&quot;</code></td><td width="40%"><img src="images/st_purplemarble.png" alt="images/st_purplemarble"></td></tr>
 
25806
<tr><td width="8%"><img src="images/fl_white.png" alt="images/fl_white"></td><td width="52%"><b>st_ghost_greenbrown</b>: flavor=<code>&quot;greenbrown&quot;</code></td><td width="40%"><img src="images/st_greenbrown.png" alt="images/st_greenbrown"></td></tr>
 
25807
<tr><td width="8%"><img src="images/fl_white.png" alt="images/fl_white"></td><td width="52%"><b>st_ghost_break</b>: flavor=<code>&quot;break&quot;</code></td><td width="40%"><img src="images/st_break_plain.png" alt="images/st_break_plain"></td></tr>
 
25808
</table>
 
25809
</dd>
 
25810
</dl>
 
25811
 
 
25812
<hr size="6">
 
25813
<a name="st_005fgrate"></a>
 
25814
<table cellpadding="1" cellspacing="1" border="0">
 
25815
<tr><td valign="middle" align="left">[<a href="#st_005fghost" title="Previous section in reading order"> &lt; </a>]</td>
 
25816
<td valign="middle" align="left">[<a href="#st_005fgreenbrown" title="Next section in reading order"> &gt; </a>]</td>
 
25817
<td valign="middle" align="left"> &nbsp; </td>
 
25818
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
25819
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
25820
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
25821
<td valign="middle" align="left"> &nbsp; </td>
 
25822
<td valign="middle" align="left"> &nbsp; </td>
 
25823
<td valign="middle" align="left"> &nbsp; </td>
 
25824
<td valign="middle" align="left"> &nbsp; </td>
 
25825
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
25826
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
25827
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
25828
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
25829
</tr></table>
 
25830
<a name="st_005fgrate-1"></a>
 
25831
<h3 class="subsection">9.5.26 st_grate</h3>
 
25832
<a name="index-st_005fgrate"></a>
 
25833
 
 
25834
<p>Hovering metal grate in different flavors that let all actors pass but block
 
25835
stones from moving over a grid position.
 
25836
</p>
 
25837
<p>The different flavors are just for decorative purposes, but <code>&quot;cross&quot;</code>
 
25838
variant looks identical to an open <a href="#st_005fdoor">st_door</a> of flavor <code>&quot;a&quot;</code>, whereas
 
25839
<code>&quot;framed&quot;</code> variant looks identical to an open <a href="#st_005fdoor">st_door</a> of flavor
 
25840
<code>&quot;b&quot;</code>.
 
25841
</p>
 
25842
<p>In contrast to opened doors grates do bounce actors that are flying due to a
 
25843
jump.
 
25844
</p>
 
25845
<p>As a hovering stone grates do not press <a href="#it_005ftrigger">it_trigger</a>s and let laser light
 
25846
pass. Grates allow <a href="#Flood-Spreading">Flood Spreading</a> and <a href="#Fire-Spreading">Fire Spreading</a>, too.
 
25847
</p>
 
25848
<dl compact="compact">
 
25849
<dt> <b>Attributes:</b></dt>
 
25850
<dd>
 
25851
<dl compact="compact">
 
25852
<dt> <b>flavor</b> &nbsp;&nbsp;<i>values</i>: <code>&quot;cross&quot;</code>, <code>&quot;framed&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;cross&quot;</code></dt>
 
25853
</dl>
 
25854
 
 
25855
</dd>
 
25856
<dt> <b>Messages:</b> none</dt>
 
25857
<dt> <b>Action:</b> none</dt>
 
25858
<dt> <b>Variants:</b></dt>
 
25859
<dd><dl compact="compact">
 
25860
<dt> <img src="images/st_grate_cross.png" alt="images/st_grate_cross"><p> <b>st_grate</b>: flavor=<code>&quot;cross&quot;</code>
 
25861
</p></dt>
 
25862
<dt> <img src="images/st_grate_cross.png" alt="images/st_grate_cross"><p> <b>st_grate_cross</b>: flavor=<code>&quot;cross&quot;</code>
 
25863
</p></dt>
 
25864
<dt> <img src="images/st_grate_framed.png" alt="images/st_grate_framed"><p> <b>st_grate_framed</b>: flavor=<code>&quot;framed&quot;</code>
 
25865
</p></dt>
 
25866
</dl>
 
25867
 
 
25868
</dd>
 
25869
</dl>
 
25870
 
 
25871
<hr size="6">
 
25872
<a name="st_005fgreenbrown"></a>
 
25873
<table cellpadding="1" cellspacing="1" border="0">
 
25874
<tr><td valign="middle" align="left">[<a href="#st_005fgrate" title="Previous section in reading order"> &lt; </a>]</td>
 
25875
<td valign="middle" align="left">[<a href="#st_005fice" title="Next section in reading order"> &gt; </a>]</td>
 
25876
<td valign="middle" align="left"> &nbsp; </td>
 
25877
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
25878
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
25879
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
25880
<td valign="middle" align="left"> &nbsp; </td>
 
25881
<td valign="middle" align="left"> &nbsp; </td>
 
25882
<td valign="middle" align="left"> &nbsp; </td>
 
25883
<td valign="middle" align="left"> &nbsp; </td>
 
25884
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
25885
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
25886
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
25887
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
25888
</tr></table>
 
25889
<a name="st_005fgreenbrown-1"></a>
 
25890
<h3 class="subsection">9.5.27 st_greenbrown</h3>
 
25891
<a name="index-st_005fgreenbrown"></a>
 
25892
 
 
25893
<p>A mainly brown stone that is just a standard stone besides
 
25894
the fact that it can originate from two other objects.
 
25895
</p>
 
25896
<p>On one hand an <a href="#it_005fseed">it_seed</a> of flavor <code>&quot;fake&quot;</code> will grow to a standard,
 
25897
unmovable greenbrown. Just for level initialization purpose you can even set
 
25898
a variant &lsquo;<samp>st_greenbrown_growing</samp>&rsquo; due to the <a href="#Snapshot-Principle">Snapshot Principle</a>.
 
25899
</p>
 
25900
<p>On the other hand a <a href="#st_005fghost">st_ghost</a> of flavor <code>&quot;greenbrown&quot;</code> will transform
 
25901
to standard, unmovable greenbrown on an actor hit with a revealed
 
25902
<a href="#it_005fmagicwand">it_magicwand</a>.
 
25903
</p>
 
25904
<dl compact="compact">
 
25905
<dt> <b>Variants:</b></dt>
 
25906
<dd><dl compact="compact">
 
25907
<dt> <img src="images/st_greenbrown.png" alt="images/st_greenbrown"><p> <b>st_greenbrown</b>
 
25908
</p></dt>
 
25909
<dt> <img src="images/st_greenbrown.png" alt="images/st_greenbrown"><p> <b>st_greenbrown_hollow</b>
 
25910
</p></dt>
 
25911
<dt> <img src="images/st_greenbrown.png" alt="images/st_greenbrown"><p> <b>st_greenbrown_movable</b>
 
25912
</p></dt>
 
25913
<dt> <img src="images/st_greenbrown_4.png" alt="images/st_greenbrown_4"><p> <b>st_greenbrown_growing</b>
 
25914
</p></dt>
 
25915
</dl>
 
25916
</dd>
 
25917
</dl>
 
25918
 
 
25919
<hr size="6">
 
25920
<a name="st_005fice"></a>
 
25921
<table cellpadding="1" cellspacing="1" border="0">
 
25922
<tr><td valign="middle" align="left">[<a href="#st_005fgreenbrown" title="Previous section in reading order"> &lt; </a>]</td>
 
25923
<td valign="middle" align="left">[<a href="#st_005fjamb" title="Next section in reading order"> &gt; </a>]</td>
 
25924
<td valign="middle" align="left"> &nbsp; </td>
 
25925
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
25926
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
25927
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
25928
<td valign="middle" align="left"> &nbsp; </td>
 
25929
<td valign="middle" align="left"> &nbsp; </td>
 
25930
<td valign="middle" align="left"> &nbsp; </td>
 
25931
<td valign="middle" align="left"> &nbsp; </td>
 
25932
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
25933
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
25934
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
25935
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
25936
</tr></table>
 
25937
<a name="st_005fice-1"></a>
 
25938
<h3 class="subsection">9.5.28 st_ice</h3>
 
25939
<a name="index-st_005fice"></a>
 
25940
 
 
25941
<p>A block of ice is a movable stone that freezes some items when being pushed
 
25942
over them. Of course a floor of <a href="#fl_005fwater">fl_water</a> will freeze, too, when ice is
 
25943
being pushed over it. But a block of ice can be destroyed by explosions and by
 
25944
heating fire leaving either <a href="#fl_005fice">fl_ice</a> or <a href="#fl_005fwater">fl_water</a>.
 
25945
</p>
 
25946
<p>When an ice block without frozen item is pushed onto a grid with a
 
25947
<a href="#freezable">freezable</a> item, the ice will freeze the item and will move it beneath
 
25948
itself on subsequent pushes. All items that the user can carry in his inventory
 
25949
are <a href="#freezable">freezable</a> and even some <a href="#Static-Items">Static Items</a> like <a href="#it_005fmagnet">it_magnet</a>,
 
25950
<a href="#it_005fspringboard">it_springboard</a>, etc. But a few items react in a special manner when an
 
25951
ice block is pushed onto them:
 
25952
</p><ul>
 
25953
<li> <a href="#it_005fsquashed">it_squashed</a> and <a href="#it_005fburnable">it_burnable</a>, with the exception of
 
25954
&lsquo;<samp>it_burnable_oil</samp>&rsquo;, dissolve to nothing.
 
25955
</li><li> <a href="#it_005fcrack">it_crack</a> will vanish as the ice is putty for the cracked floors
 
25956
</li><li> <a href="#it_005fseed">it_seed</a> will not start growing, even though the ice is pushed as a
 
25957
solid stone on top.
 
25958
</li><li> <a href="#it_005fbomb">it_bomb</a> will explode and destroy the ice block as well as the floor.
 
25959
</li><li> <a href="#it_005fdynamite">it_dynamite</a> is very special - a burning dynamite gets extinguished
 
25960
by an ice block and becomes frozen in its idle state.
 
25961
</li></ul>
 
25962
 
 
25963
<p>But what happens when an ice block with a frozen item gets pushed onto a grid
 
25964
with another item? The stronger item wins and survives beneath the ice block
 
25965
on the new position while the weaker item will be killed. The sequence from
 
25966
weak to strong is quite simple:
 
25967
</p><ul>
 
25968
<li> static items that get anyway wiped out by an ice block
 
25969
</li><li> <a href="#Liftable-Items">Liftable Items</a>
 
25970
</li><li> <a href="#portable">portable</a> items that are not <a href="#liftable">liftable</a>
 
25971
</li><li> <a href="#freezable">freezable</a> items that are not <a href="#portable">portable</a>
 
25972
</li><li> <a href="#Static-Items">Static Items</a> that are not <a href="#freezable">freezable</a>
 
25973
</li></ul>
 
25974
<p>When the two items are of the same category the already frozen item wins. This
 
25975
last rule ensures that the user can not free frozen items by dropping a liftable
 
25976
item out of his inventory in front of an ice block before pushing it.
 
25977
</p>
 
25978
<p>An ice block looks like a bluish version of <a href="#st_005frawglass">st_rawglass</a>. But it has just
 
25979
one feature in common. It is transparent to laser light. Of course you can not
 
25980
freeze laser beams, even though they are implemented in the item layer. Laser
 
25981
light will interact even with frozen items and can ignite <a href="#it_005fdynamite">it_dynamite</a> or
 
25982
<a href="#it_005fbomb">it_bomb</a>. Even though being light transparent invisible actors can not
 
25983
pass it (see section <a href="#Transparent-Stones">Transparent Stones</a>).
 
25984
</p>
 
25985
<p>Ice blocks shatter on nearby <a href="#it_005fbomb">it_bomb</a> and <a href="#it_005fdynamite">it_dynamite</a> explosions and
 
25986
on <a href="#ot_005fcannonball">ot_cannonball</a> hits. The ice will spread to the four direct neighboring
 
25987
grid positions and will cover these and the originating position with
 
25988
<a href="#fl_005fice">fl_ice</a>. Just <a href="#fl_005fabyss">fl_abyss</a> will not be covered by this ice floor and
 
25989
remains unchanged. Thus an exploding bomb leaves an <a href="#fl_005fabyss">fl_abyss</a> at its
 
25990
position, even when an ice blocks shatters nearby.
 
25991
</p>
 
25992
<p>A fire starting to burn on a direct neighbor position will eventually melt the
 
25993
ice block by its <a href="#Heat_002dTransformation">Heat-Transformation</a>. The ice will melt to an
 
25994
<a href="#fl_005fwater">fl_water</a>. Just in case the ice block melts over an <a href="#fl_005fabyss">fl_abyss</a> the
 
25995
floor remains unchanged. The ice heating is no secure feature, as the heat burst
 
25996
occurs just once for each fire. Thus a user may be able to push an ice block
 
25997
aside a fire without heat transformation. Furtheron the melting takes time.
 
25998
Any intermediate nearby explosion can still shatter the melting ice block.
 
25999
</p>
 
26000
<dl compact="compact">
 
26001
<dt> <b>Messages:</b></dt>
 
26002
<dd>
 
26003
<dl compact="compact">
 
26004
<dt> <b>ignite</b> &nbsp;&nbsp;See section <a href="#ignite">ignite</a></dt>
 
26005
<dd><p>Shatter the ice block.
 
26006
</p></dd>
 
26007
<dt> <b>heat</b> &nbsp;&nbsp;See section <a href="#heat">heat</a></dt>
 
26008
<dd><p>Melt the ice block
 
26009
</p></dd>
 
26010
</dl>
 
26011
 
 
26012
</dd>
 
26013
<dt> <b>Variants:</b></dt>
 
26014
<dd><dl compact="compact">
 
26015
<dt> <img src="images/st_ice.png" alt="images/st_ice"><p> <b>st_ice</b>
 
26016
</p></dt>
 
26017
</dl>
 
26018
</dd>
 
26019
</dl>
 
26020
 
 
26021
<hr size="6">
 
26022
<a name="st_005fjamb"></a>
 
26023
<table cellpadding="1" cellspacing="1" border="0">
 
26024
<tr><td valign="middle" align="left">[<a href="#st_005fice" title="Previous section in reading order"> &lt; </a>]</td>
 
26025
<td valign="middle" align="left">[<a href="#st_005fkey" title="Next section in reading order"> &gt; </a>]</td>
 
26026
<td valign="middle" align="left"> &nbsp; </td>
 
26027
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
26028
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
26029
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
26030
<td valign="middle" align="left"> &nbsp; </td>
 
26031
<td valign="middle" align="left"> &nbsp; </td>
 
26032
<td valign="middle" align="left"> &nbsp; </td>
 
26033
<td valign="middle" align="left"> &nbsp; </td>
 
26034
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
26035
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
26036
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
26037
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
26038
</tr></table>
 
26039
<a name="st_005fjamb-1"></a>
 
26040
<h3 class="subsection">9.5.29 st_jamb</h3>
 
26041
<a name="index-st_005fjamb"></a>
 
26042
 
 
26043
<p>A colored door jamb that allows coupled opening and closing on adjacent
 
26044
<a href="#st_005fdoor">st_door</a>s. Especially doors of flavor <code>&quot;d&quot;</code> can be opened by proper
 
26045
colored actors by door knocking.
 
26046
</p>
 
26047
<p>The stone looks like 4 brown door jambs each with a colored ball on top. It fits
 
26048
to the 2 faced <code>&quot;d&quot;</code> variant of <a href="#st_005fdoor">st_door</a>. These doors can be
 
26049
configured to send the message <code>&quot;hit&quot;</code> to the adjacent jambs as their
 
26050
targets. Whenever an actor knocks the door, the jamb receives the message and
 
26051
checks the actor for matching color. On success it sends opening signals to
 
26052
the door being knocked and to a door being located on the opposite side of the
 
26053
jamb. Additionally doors located on the remaining two adjacent positions of the
 
26054
jamb will receive a closing signal. E.g.:
 
26055
</p>
 
26056
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;n&quot;] = {&quot;st_door_d&quot;, &quot;north&quot;, target=&quot;jamb&quot;, action=&quot;hit&quot;}
 
26057
ti[&quot;e&quot;] = {&quot;st_door_d&quot;, &quot;east&quot;, target=&quot;jamb&quot;, action=&quot;hit&quot;}
 
26058
ti[&quot;s&quot;] = {&quot;st_door_d&quot;, &quot;south&quot;, target=&quot;jamb&quot;, action=&quot;hit&quot;}
 
26059
ti[&quot;w&quot;] = {&quot;st_door_d&quot;, &quot;west&quot;, target=&quot;jamb&quot;, action=&quot;hit&quot;}
 
26060
ti[&quot;J&quot;] = {&quot;st_jamb&quot;, &quot;jamb&quot;}
 
26061
ti[&quot;@&quot;] = {&quot;st_marble&quot;}
 
26062
wo(ti, &quot; &quot;, {
 
26063
  &quot; n &quot;,
 
26064
  &quot;wJe&quot;,
 
26065
  &quot; s@&quot;
 
26066
}
 
26067
</pre></td></tr></table>
 
26068
 
 
26069
<p>The black marble touching the east door will open the east and the west door,
 
26070
and will close the north and south door at the same time. The black marble
 
26071
touching the south door will open the south and the north door, and will close
 
26072
the west and east door.
 
26073
</p>
 
26074
<dl compact="compact">
 
26075
<dt> <b>Attributes:</b></dt>
 
26076
<dd>
 
26077
<dl compact="compact">
 
26078
<dt> <b>color</b> &nbsp;&nbsp;<i>values</i>: <code>BLACK</code>, <code>WHITE</code>; &nbsp;&nbsp;<i>default</i>: <code>BLACK</code></dt>
 
26079
</dl>
 
26080
 
 
26081
</dd>
 
26082
<dt> <b>Messages:</b></dt>
 
26083
<dd>
 
26084
<dl compact="compact">
 
26085
<dt> <b>hit</b></dt>
 
26086
<dd><p>The message value must be an object reference of an actor. The color of the
 
26087
actor must match the jamb color to cause an action. The sender&rsquo;s position must
 
26088
either match the x or the y coordinate of the jamb, too.
 
26089
</p>
 
26090
</dd>
 
26091
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
26092
<dd><p>This message is just kept for backward compatibility issues. Do not use it in
 
26093
new API levels as it depends on other internal attributes not set for new API
 
26094
levels.
 
26095
</p></dd>
 
26096
</dl>
 
26097
 
 
26098
</dd>
 
26099
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
26100
<dt> <b>Variants:</b></dt>
 
26101
<dd>
 
26102
<dl compact="compact">
 
26103
<dt> <img src="images/st_jamb_black.png" alt="images/st_jamb_black"><p> <b>st_jamb</b>: color=<code>BLACK</code>
 
26104
</p></dt>
 
26105
<dt> <img src="images/st_jamb_black.png" alt="images/st_jamb_black"><p> <b>st_jamb_black</b>: color=<code>BLACK</code>
 
26106
</p></dt>
 
26107
<dt> <img src="images/st_jamb_white.png" alt="images/st_jamb_white"><p> <b>st_jamb_white</b>: color=<code>WHITE</code>
 
26108
</p></dt>
 
26109
</dl>
 
26110
 
 
26111
</dd>
 
26112
</dl>
 
26113
 
 
26114
<hr size="6">
 
26115
<a name="st_005fkey"></a>
 
26116
<table cellpadding="1" cellspacing="1" border="0">
 
26117
<tr><td valign="middle" align="left">[<a href="#st_005fjamb" title="Previous section in reading order"> &lt; </a>]</td>
 
26118
<td valign="middle" align="left">[<a href="#st_005fknight" title="Next section in reading order"> &gt; </a>]</td>
 
26119
<td valign="middle" align="left"> &nbsp; </td>
 
26120
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
26121
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
26122
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
26123
<td valign="middle" align="left"> &nbsp; </td>
 
26124
<td valign="middle" align="left"> &nbsp; </td>
 
26125
<td valign="middle" align="left"> &nbsp; </td>
 
26126
<td valign="middle" align="left"> &nbsp; </td>
 
26127
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
26128
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
26129
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
26130
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
26131
</tr></table>
 
26132
<a name="st_005fkey-1"></a>
 
26133
<h3 class="subsection">9.5.30 st_key</h3>
 
26134
<a name="index-st_005fkey"></a>
 
26135
 
 
26136
<p>A switch that is activated by insertion of an <a href="#it_005fkey">it_key</a>. Just actors
 
26137
assigned to a player can insert a key out of their item inventory by hitting
 
26138
the key switch with a key being the first item. Just keys with a matching
 
26139
&lsquo;<samp>code</samp>&rsquo; are accepted.
 
26140
</p>
 
26141
<p>On a second hit the switch is deactivated and the inserted key is returned
 
26142
to the player&rsquo;s inventory.
 
26143
</p>
 
26144
<p>Key stones are often used as openers for an adjacent <a href="#st_005fdoor">st_door</a> that is
 
26145
declared as its &lsquo;<samp>target</samp>&rsquo;. But there is the inherent danger that an actor
 
26146
passing the door accidentially hits the neighboring key stone, causing the key
 
26147
to be pulled out again and the door to be closed immediately. Of couse this
 
26148
would shatter any <a href="#ac_005fmarble">ac_marble</a> or <a href="#ac_005fpearl">ac_pearl</a>. But a &lsquo;<samp>secure</samp>&rsquo; key
 
26149
stone checks that the hitting actor is not positioned on one of the key stones
 
26150
target positions. It refuses any actions caused by such critical hits. Note
 
26151
that in case the target is a callback function that closes the adjacent door,
 
26152
there will be still no protection. A key stone with &lsquo;<samp>secure</samp>&rsquo; value
 
26153
&lsquo;<samp>false</samp>&rsquo; would accept any hits and shatter marbles as it has been standard
 
26154
on older Enigma releases and is still in modes besides Enigma.
 
26155
</p>
 
26156
<p>Usually the &lsquo;<samp>code</samp>&rsquo; of the key stone is not visually unveiled. But if you
 
26157
set &lsquo;<samp>invisible</samp>&rsquo; to the value &lsquo;<samp>false</samp>&rsquo; the code becomes visible for
 
26158
number code values &lsquo;<samp>1</samp>&rsquo; to &lsquo;<samp>8</samp>&rsquo;. This helps the user to distinguish
 
26159
the stones and to assign the correct <a href="#it_005fkey">it_key</a> when multiple instances are
 
26160
present.
 
26161
</p>
 
26162
<p>An &lsquo;<samp>invisible</samp>&rsquo; key stone reveals its code when a matching, unveiled
 
26163
<a href="#it_005fkey">it_key</a> gets inserted.
 
26164
</p>
 
26165
<dl compact="compact">
 
26166
<dt> <b>Attributes:</b></dt>
 
26167
<dd>
 
26168
<dl compact="compact">
 
26169
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>OFF</code>; &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
26170
<dd><p>Current activity state of the key stone.
 
26171
</p></dd>
 
26172
<dt> <b>code</b>, &nbsp;&nbsp;<i>values</i>: number or string; &nbsp;&nbsp;<i>default</i>: <code>1</code>:</dt>
 
26173
<dd><p>The code that is required to activate this switch.
 
26174
</p></dd>
 
26175
<dt> <b>secure</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
26176
<dd><p>Protect actors on target positions by neglecting their hits.
 
26177
</p></dd>
 
26178
<dt> <b>invisible</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
26179
<dd><p>A visible key stone unveils its &lsquo;<samp>code</samp>&rsquo; by a color spot.
 
26180
</p></dd>
 
26181
</dl>
 
26182
 
 
26183
</dd>
 
26184
<dt> <b>Messages:</b></dt>
 
26185
<dd>
 
26186
<dl compact="compact">
 
26187
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
26188
<dd><p>Switches on at value &lsquo;<samp>1</samp>&rsquo;, and off at values &lsquo;<samp>0</samp>&rsquo;.
 
26189
</p></dd>
 
26190
<dt> <b>on</b> &nbsp;&nbsp;See section <a href="#on">on</a></dt>
 
26191
<dt> <b>off</b> &nbsp;&nbsp;See section <a href="#off">off</a></dt>
 
26192
</dl>
 
26193
 
 
26194
</dd>
 
26195
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
26196
<dt> <b>Variants:</b></dt>
 
26197
<dd><dl compact="compact">
 
26198
<dt> <img src="images/st_key_off.png" alt="images/st_key_off"><p> <b>st_key</b> with state=<code>OFF</code>
 
26199
</p></dt>
 
26200
<dt> <img src="images/st_key_on.png" alt="images/st_key_on"><p> <b>st_key</b> with state=<code>ON</code>
 
26201
</p></dt>
 
26202
</dl>
 
26203
</dd>
 
26204
</dl>
 
26205
<hr size="6">
 
26206
<a name="st_005fknight"></a>
 
26207
<table cellpadding="1" cellspacing="1" border="0">
 
26208
<tr><td valign="middle" align="left">[<a href="#st_005fkey" title="Previous section in reading order"> &lt; </a>]</td>
 
26209
<td valign="middle" align="left">[<a href="#st_005flaser" title="Next section in reading order"> &gt; </a>]</td>
 
26210
<td valign="middle" align="left"> &nbsp; </td>
 
26211
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
26212
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
26213
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
26214
<td valign="middle" align="left"> &nbsp; </td>
 
26215
<td valign="middle" align="left"> &nbsp; </td>
 
26216
<td valign="middle" align="left"> &nbsp; </td>
 
26217
<td valign="middle" align="left"> &nbsp; </td>
 
26218
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
26219
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
26220
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
26221
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
26222
</tr></table>
 
26223
<a name="st_005fknight-1"></a>
 
26224
<h3 class="subsection">9.5.31 st_knight</h3>
 
26225
<a name="index-st_005fknight"></a>
 
26226
 
 
26227
<p>A sword bearing knight stone that shatters all marbles that hit it, as long as
 
26228
they are not protected by an activated <a href="#it_005fumbrella">it_umbrella</a> or wield an
 
26229
<a href="#it_005fsword">it_sword</a>.
 
26230
</p>
 
26231
<p>By hitting &lsquo;<samp>st_knight</samp>&rsquo; with an <a href="#it_005fsword">it_sword</a> four times, the knight stone
 
26232
spits out a cheeky remark and can be passed thereafter, even without a sword.
 
26233
</p>
 
26234
<p>A beaten knight stone is transparent to laser light.
 
26235
</p>
 
26236
<dl compact="compact">
 
26237
<dt> <b>Attributes:</b></dt>
 
26238
<dd>
 
26239
<dl compact="compact">
 
26240
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>0</code> to <code>4</code>; &nbsp;&nbsp;<i>default</i>: <code>0</code>; <i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
26241
<dd><p>Current hit count of the knight stone. Starting uninjured at state &lsquo;<samp>0</samp>&rsquo;
 
26242
the knight is beaten after 4 hits.
 
26243
</p></dd>
 
26244
</dl>
 
26245
 
 
26246
</dd>
 
26247
<dt> <b>Messages:</b> none</dt>
 
26248
<dt> <b>Action:</b> none</dt>
 
26249
<dt> <b>Variants:</b></dt>
 
26250
<dd><dl compact="compact">
 
26251
<dt> <img src="images/st_knight.png" alt="images/st_knight"><p> <b>st_knight</b>
 
26252
</p></dt>
 
26253
</dl>
 
26254
 
 
26255
</dd>
 
26256
</dl>
 
26257
 
 
26258
<hr size="6">
 
26259
<a name="st_005flaser"></a>
 
26260
<table cellpadding="1" cellspacing="1" border="0">
 
26261
<tr><td valign="middle" align="left">[<a href="#st_005fknight" title="Previous section in reading order"> &lt; </a>]</td>
 
26262
<td valign="middle" align="left">[<a href="#st_005flaserflop" title="Next section in reading order"> &gt; </a>]</td>
 
26263
<td valign="middle" align="left"> &nbsp; </td>
 
26264
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
26265
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
26266
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
26267
<td valign="middle" align="left"> &nbsp; </td>
 
26268
<td valign="middle" align="left"> &nbsp; </td>
 
26269
<td valign="middle" align="left"> &nbsp; </td>
 
26270
<td valign="middle" align="left"> &nbsp; </td>
 
26271
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
26272
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
26273
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
26274
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
26275
</tr></table>
 
26276
<a name="st_005flaser-1"></a>
 
26277
<h3 class="subsection">9.5.32 st_laser</h3>
 
26278
<a name="index-st_005flaser"></a>
 
26279
 
 
26280
<p>The laser stone is the only object that is capable of emitting light beams.
 
26281
Per default laser stones are switched off. The &lsquo;<samp>state</samp>&rsquo; attribute represents
 
26282
the activity of the laser and can be set initially to &lsquo;<samp>ON</samp>&rsquo;. A laser is
 
26283
orientated to one direction into which the light will be emitted.
 
26284
</p>
 
26285
<p>Lasers have a latency that protect them from infinite fast switching cycles. This
 
26286
allows you to toggle a laser with an <a href="#st_005flaserswitch">st_laserswitch</a> that is illuminated
 
26287
by the laser itself. During the latency period pending switch requests will be
 
26288
registered but will be executed with a certain small delay. Note that several
 
26289
pending requests may even neutralize are revoke each other.
 
26290
</p>
 
26291
<p>An initially switched on laser will not cause actions with its light beam due
 
26292
to the <a href="#Snapshot-Principle">Snapshot Principle</a>. If you have need of the actions you may switch
 
26293
on the laser by a message in the &lsquo;<samp>postinit</samp>&rsquo; function
 
26294
(See section <a href="#Level-Initialization">Level Initialization</a>). E.g. a flickering laser caused by a laser that
 
26295
illuminates a <a href="#st_005flaserswitch">st_laserswitch</a> which toggles the laser needs to be switched
 
26296
on by a message.
 
26297
</p>
 
26298
<dl compact="compact">
 
26299
<dt> <b>Attributes:</b></dt>
 
26300
<dd>
 
26301
<dl compact="compact">
 
26302
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>OFF</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
26303
<dt> <b>orientation</b>, &nbsp;&nbsp;<i>values</i>: <code>NORTH</code>, <code>EAST</code>, <code>SOUTH</code>, <code>WEST</code>; &nbsp;&nbsp;<i>default</i>: <code>NORTH</code></dt>
 
26304
<dd><p>The orientation of the laser. It determines the direction that the laser will
 
26305
emit light if it is switched on.
 
26306
</p></dd>
 
26307
<dt> <b>counterclock</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
26308
<dd><p>The standard turning direction is clockwise. Use this attribute to revert the
 
26309
direction.
 
26310
</p></dd>
 
26311
</dl>
 
26312
 
 
26313
</dd>
 
26314
<dt> <b>Messages:</b></dt>
 
26315
<dd>
 
26316
<dl compact="compact">
 
26317
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
26318
<dd><p>Switch the laser on at value &lsquo;<samp>1</samp>&rsquo; and off at value &lsquo;<samp>0</samp>&rsquo;.
 
26319
</p></dd>
 
26320
<dt> <b>on</b> &nbsp;&nbsp;See section <a href="#on">on</a></dt>
 
26321
<dt> <b>off</b> &nbsp;&nbsp;See section <a href="#off">off</a></dt>
 
26322
<dt> <b>turn</b></dt>
 
26323
<dd><p>Turn orientation in turning direction as defined by attribute
 
26324
&lsquo;<samp>counterclock</samp>&rsquo;.
 
26325
</p></dd>
 
26326
<dt> <b>turnback</b></dt>
 
26327
<dd><p>Turn orientation in opposite turning direction as defined by attribute
 
26328
&lsquo;<samp>counterclock</samp>&rsquo;.
 
26329
</p></dd>
 
26330
</dl>
 
26331
 
 
26332
</dd>
 
26333
<dt> <b>Action:</b> none</dt>
 
26334
<dt> <b>Variants:</b></dt>
 
26335
<dd><table>
 
26336
<tr><td width="8%"><img src="images/st_laser_d.png" alt="images/st_laser_d"></td><td width="42%"><b>st_laser_w</b>: orientation = <code>WEST</code>, state = <code>OFF</code></td><td width="8%"><img src="images/st_laser_d6.png" alt="images/st_laser_d6"></td><td width="42%"><b>st_laser_w</b>: orientation = <code>WEST</code>, state = <code>ON</code></td></tr>
 
26337
<tr><td width="8%"><img src="images/st_laser_c.png" alt="images/st_laser_c"></td><td width="42%"><b>st_laser_s</b>: orientation = <code>SOUTH</code>, state = <code>OFF</code></td><td width="8%"><img src="images/st_laser_c6.png" alt="images/st_laser_c6"></td><td width="42%"><b>st_laser_s</b>: orientation = <code>SOUTH</code>, state = <code>ON</code></td></tr>
 
26338
<tr><td width="8%"><img src="images/st_laser_b.png" alt="images/st_laser_b"></td><td width="42%"><b>st_laser_e</b>: orientation = <code>EAST</code>, state = <code>OFF</code></td><td width="8%"><img src="images/st_laser_b6.png" alt="images/st_laser_b6"></td><td width="42%"><b>st_laser_e</b>: orientation = <code>EAST</code>, state = <code>ON</code></td></tr>
 
26339
<tr><td width="8%"><img src="images/st_laser.png" alt="images/st_laser"></td><td width="42%"><b>st_laser_n</b>: orientation = <code>NORTH</code>, state = <code>OFF</code></td><td width="8%"><img src="images/st_laser_6.png" alt="images/st_laser_6"></td><td width="42%"><b>st_laser_n</b>: orientation = <code>NORTH</code>, state = <code>ON</code></td></tr>
 
26340
</table>
 
26341
</dd>
 
26342
</dl>
 
26343
 
 
26344
<hr size="6">
 
26345
<a name="st_005flaserflop"></a>
 
26346
<table cellpadding="1" cellspacing="1" border="0">
 
26347
<tr><td valign="middle" align="left">[<a href="#st_005flaser" title="Previous section in reading order"> &lt; </a>]</td>
 
26348
<td valign="middle" align="left">[<a href="#st_005flaserswitch" title="Next section in reading order"> &gt; </a>]</td>
 
26349
<td valign="middle" align="left"> &nbsp; </td>
 
26350
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
26351
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
26352
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
26353
<td valign="middle" align="left"> &nbsp; </td>
 
26354
<td valign="middle" align="left"> &nbsp; </td>
 
26355
<td valign="middle" align="left"> &nbsp; </td>
 
26356
<td valign="middle" align="left"> &nbsp; </td>
 
26357
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
26358
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
26359
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
26360
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
26361
</tr></table>
 
26362
<a name="st_005flaserflop-1"></a>
 
26363
<h3 class="subsection">9.5.33 st_laserflop</h3>
 
26364
<a name="index-st_005flaserflop"></a>
 
26365
 
 
26366
<p>A switch that is triggered by actor hits and laser light. It switches instantly
 
26367
to state &lsquo;<samp>ON</samp>&rsquo; and when it is no longer illuminated it switches back to
 
26368
state &lsquo;<samp>OFF</samp>&rsquo; after a given &lsquo;<samp>interval</samp>&rsquo;. Repetitive actor hits and
 
26369
continuing laser light will prolong the &lsquo;<samp>ON</samp>&rsquo; state until a trailing
 
26370
&lsquo;<samp>interval</samp>&rsquo; after the last hit has been expired. A similar object without
 
26371
light sensitiveness is the <a href="#st_005fmonoflop">st_monoflop</a>.
 
26372
</p>
 
26373
<p>The single state cycle, called monoflop, can be initiated by &lsquo;<samp>on</samp>&rsquo; and
 
26374
&lsquo;<samp>signal</samp>&rsquo; messages. But an activated monoflop cannot be stopped by
 
26375
messages or state setting.
 
26376
</p>
 
26377
<p>At initialization a laserflop that is exposed to laser light will start in state
 
26378
&lsquo;<samp>ON</samp>&rsquo; without sending actions due to the <a href="#Snapshot-Principle">Snapshot Principle</a>.
 
26379
</p>
 
26380
<p>A laserflop that is moved or swapped in or out of a laser beam will act on
 
26381
the light change with proper actions.
 
26382
</p>
 
26383
<dl compact="compact">
 
26384
<dt> <b>Attributes:</b></dt>
 
26385
<dd>
 
26386
<dl compact="compact">
 
26387
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>OFF</code>; &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
26388
<dd><p>Represents the activity state. The state of a new object can be set, but an
 
26389
active laserflop cannot be set to state &lsquo;<samp>OFF</samp>&rsquo;.
 
26390
</p></dd>
 
26391
<dt> <b>interval</b> &nbsp;&nbsp;<i>values</i>: positive number; &nbsp;&nbsp;<i>default</i>: <code>1.8</code></dt>
 
26392
<dd><p>Number of seconds to return to state &lsquo;<samp>OFF</samp>&rsquo; after the last hit.
 
26393
</p>
 
26394
</dd>
 
26395
</dl>
 
26396
 
 
26397
</dd>
 
26398
<dt> <b>Messages:</b></dt>
 
26399
<dd>
 
26400
<dl compact="compact">
 
26401
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
26402
<dd><p>Switches on at value &lsquo;<samp>1</samp>&rsquo;. A value of &lsquo;<samp>0</samp>&rsquo; is ignored.
 
26403
</p></dd>
 
26404
<dt> <b>on</b> &nbsp;&nbsp;See section <a href="#on">on</a></dt>
 
26405
<dd><p>Switches the laserflop on like on an actor hit.
 
26406
</p></dd>
 
26407
</dl>
 
26408
 
 
26409
</dd>
 
26410
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
26411
<dt> <b>Variants:</b></dt>
 
26412
<dd><dl compact="compact">
 
26413
<dt> <img src="images/st_monoflop.png" alt="images/st_monoflop"><p> <b>st_laserflop</b>: state = <code>OFF</code>
 
26414
</p></dt>
 
26415
<dt> <img src="images/st_monoflop_2.png" alt="images/st_monoflop_2"><p> <b>st_laserflop</b>: state = <code>ON</code>
 
26416
</p></dt>
 
26417
</dl>
 
26418
 
 
26419
</dd>
 
26420
</dl>
 
26421
 
 
26422
<hr size="6">
 
26423
<a name="st_005flaserswitch"></a>
 
26424
<table cellpadding="1" cellspacing="1" border="0">
 
26425
<tr><td valign="middle" align="left">[<a href="#st_005flaserflop" title="Previous section in reading order"> &lt; </a>]</td>
 
26426
<td valign="middle" align="left">[<a href="#st_005flightglass" title="Next section in reading order"> &gt; </a>]</td>
 
26427
<td valign="middle" align="left"> &nbsp; </td>
 
26428
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
26429
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
26430
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
26431
<td valign="middle" align="left"> &nbsp; </td>
 
26432
<td valign="middle" align="left"> &nbsp; </td>
 
26433
<td valign="middle" align="left"> &nbsp; </td>
 
26434
<td valign="middle" align="left"> &nbsp; </td>
 
26435
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
26436
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
26437
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
26438
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
26439
</tr></table>
 
26440
<a name="st_005flaserswitch-1"></a>
 
26441
<h3 class="subsection">9.5.34 st_laserswitch</h3>
 
26442
<a name="index-st_005flaserswitch"></a>
 
26443
 
 
26444
<p>A switch that is exclusively triggered by laser light. It switches instantly to
 
26445
state &lsquo;<samp>ON</samp>&rsquo; when a laser beam hits the stone from any direction. It switches
 
26446
instantly back to state &lsquo;<samp>OFF</samp>&rsquo; when it is no longer illuminated.
 
26447
</p>
 
26448
<p>There is no way to set the state of this stone manually. But the state
 
26449
can nevertheless be read. At initialization a laserswitch that is exposed to
 
26450
laser light will start in state &lsquo;<samp>ON</samp>&rsquo; without sending actions due to the
 
26451
<a href="#Snapshot-Principle">Snapshot Principle</a>.
 
26452
</p>
 
26453
<p>A laserswitch that is moved or swapped in or out of a laser beam will act on
 
26454
the light change with proper actions.
 
26455
</p>
 
26456
<dl compact="compact">
 
26457
<dt> <b>Attributes:</b></dt>
 
26458
<dd>
 
26459
<dl compact="compact">
 
26460
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>OFF</code>; <i>access</i>: <code>read only</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
26461
</dl>
 
26462
 
 
26463
</dd>
 
26464
<dt> <b>Messages:</b> none</dt>
 
26465
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
26466
<dd>
 
26467
<dl compact="compact">
 
26468
<dt> <img src="images/st_oxydb.png" alt="images/st_oxydb"><p> <b>st_laserswitch</b>: state = <code>OFF</code>
 
26469
</p></dt>
 
26470
<dt> <img src="images/st_quake_3.png" alt="images/st_quake_3"><p> <b>st_laserswitch</b>: state = <code>ON</code>
 
26471
</p></dt>
 
26472
</dl>
 
26473
</dd>
 
26474
</dl>
 
26475
 
 
26476
<hr size="6">
 
26477
<a name="st_005flightglass"></a>
 
26478
<table cellpadding="1" cellspacing="1" border="0">
 
26479
<tr><td valign="middle" align="left">[<a href="#st_005flaserswitch" title="Previous section in reading order"> &lt; </a>]</td>
 
26480
<td valign="middle" align="left">[<a href="#st_005flightpassenger" title="Next section in reading order"> &gt; </a>]</td>
 
26481
<td valign="middle" align="left"> &nbsp; </td>
 
26482
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
26483
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
26484
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
26485
<td valign="middle" align="left"> &nbsp; </td>
 
26486
<td valign="middle" align="left"> &nbsp; </td>
 
26487
<td valign="middle" align="left"> &nbsp; </td>
 
26488
<td valign="middle" align="left"> &nbsp; </td>
 
26489
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
26490
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
26491
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
26492
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
26493
</tr></table>
 
26494
<a name="st_005flightglass-1"></a>
 
26495
<h3 class="subsection">9.5.35 st_lightglass</h3>
 
26496
<a name="index-st_005flightglass"></a>
 
26497
 
 
26498
<p>A metal framed transparent glass stone. It exists in static, movable and
 
26499
hollow variants and is by its very nature transparent to laser light. Like other
 
26500
<a href="#Transparent-Stones">Transparent Stones</a> it is passable for invisible actors as long as it is
 
26501
not &lsquo;<samp>movable</samp>&rsquo;.
 
26502
</p>
 
26503
<p>A <a href="#st_005fmagic">st_magic</a> of variant <code>st_magic_oxyda</code> transforms on actor hits to
 
26504
a movable lightglass stone
 
26505
</p>
 
26506
<dl compact="compact">
 
26507
<dt> <b>Attributes:</b></dt>
 
26508
<dd>
 
26509
<dl compact="compact">
 
26510
<dt> <b>hollow</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: read only &nbsp;&nbsp;See section <a href="#hollow">hollow</a></dt>
 
26511
<dt> <b>movable</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: read only &nbsp;&nbsp;See section <a href="#movable">movable</a></dt>
 
26512
</dl>
 
26513
 
 
26514
</dd>
 
26515
<dt> <b>Messages:</b> none</dt>
 
26516
<dt> <b>Variants:</b></dt>
 
26517
<dd>
 
26518
<dl compact="compact">
 
26519
<dt> <img src="images/st_lightglass.png" alt="images/st_lightglass"><p> <b>st_lightglass</b>: hollow = <code>false</code>, movable = <code>false</code>
 
26520
</p></dt>
 
26521
<dt> <img src="images/st_lightglass.png" alt="images/st_lightglass"><p> <b>st_lightglass_hollow</b>: hollow = <code>true</code>, movable = <code>false</code>
 
26522
</p></dt>
 
26523
<dt> <img src="images/st_lightglass.png" alt="images/st_lightglass"><p> <b>st_lightglass_movable</b>: hollow = <code>false</code>, movable = <code>true</code>
 
26524
</p></dt>
 
26525
</dl>
 
26526
 
 
26527
</dd>
 
26528
</dl>
 
26529
 
 
26530
 
 
26531
<hr size="6">
 
26532
<a name="st_005flightpassenger"></a>
 
26533
<table cellpadding="1" cellspacing="1" border="0">
 
26534
<tr><td valign="middle" align="left">[<a href="#st_005flightglass" title="Previous section in reading order"> &lt; </a>]</td>
 
26535
<td valign="middle" align="left">[<a href="#st_005fmagic" title="Next section in reading order"> &gt; </a>]</td>
 
26536
<td valign="middle" align="left"> &nbsp; </td>
 
26537
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
26538
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
26539
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
26540
<td valign="middle" align="left"> &nbsp; </td>
 
26541
<td valign="middle" align="left"> &nbsp; </td>
 
26542
<td valign="middle" align="left"> &nbsp; </td>
 
26543
<td valign="middle" align="left"> &nbsp; </td>
 
26544
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
26545
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
26546
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
26547
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
26548
</tr></table>
 
26549
<a name="st_005flightpassenger-1"></a>
 
26550
<h3 class="subsection">9.5.36 st_lightpassenger</h3>
 
26551
<a name="index-st_005flightpassenger"></a>
 
26552
 
 
26553
<p>The light passenger skates on a laser beam, and may push up to one
 
26554
movable stone in front of it. Opposing laser beams are ignored.
 
26555
When another laser beam crosses the actual laser beam on which the
 
26556
passenger skates, the passenger switches beams. If it is initially
 
26557
lighted by two rectangular beams, one of them will be chosen by
 
26558
random. The light passenger&rsquo;s skating ability can be turned off
 
26559
and on.
 
26560
</p>
 
26561
<p>When a stone is in its way, the passenger sends an impulse to the
 
26562
blocking stone, which may move it, but it may also have other effects;
 
26563
e.g., a turnstile turns around and an impulse-stone starts pulsing,
 
26564
but it does not open oxyds (this is intended).
 
26565
</p>
 
26566
<p>The light passenger can&rsquo;t be pushed by actors, but, e.g., by
 
26567
<a href="#st_005fstoneimpulse">st_stoneimpulse</a>.
 
26568
</p>
 
26569
<p>The speed of the light passenger can be changed with the
 
26570
&lsquo;<samp>interval</samp>&rsquo;-attribute (default 50 ms, which is quite fast) and may
 
26571
include the floor friction and local gradient via
 
26572
&lsquo;<samp>friction</samp>&rsquo; and &lsquo;<samp>gradient</samp>&rsquo;. The resulting interval results as
 
26573
</p>
 
26574
<table><tr><td>&nbsp;</td><td><pre class="example">interval  =  base * (1 + stone_friction * floor_friction) / (1 + stone_gradient * floor_gradient)
 
26575
</pre></td></tr></table>
 
26576
 
 
26577
<p>with &lsquo;<samp>base</samp>&rsquo; the value of the &lsquo;<samp>interval</samp>&rsquo;-attribute,
 
26578
&lsquo;<samp>floor_friction</samp>&rsquo; the friction of the floor below the light passenger,
 
26579
and &lsquo;<samp>floor_gradient</samp>&rsquo; the parallel part of the force of the floor,
 
26580
i.e., the sum of gradient-force and <code>force_x/y</code>-attributes.
 
26581
</p>
 
26582
<p>The light passenger can be switched on and off by messages (see below), and
 
26583
appears as &lsquo;<samp>st_darkglass</samp>&rsquo; when inactive. A player with an <a href="#it_005fglasses">it_glasses</a>
 
26584
in his inventory that includes the &lsquo;<samp>SPOT_LIGHTPASSENGER</samp>&rsquo; feature is able
 
26585
to distinguish the switched off lightpassenger from an &lsquo;<samp>st_darkglass</samp>&rsquo;.
 
26586
The variant &lsquo;<samp>st_lightpassenger_off</samp>&rsquo; is deactivated from the beginning.
 
26587
A lightpassenger that moves onto an <a href="#it_005fcross">it_cross</a> switches off immediately. A
 
26588
switched off lightpassenger can be switched on by an actor hit with a revealed
 
26589
<a href="#it_005fbrush">it_brush</a> in the inventory. Such a touch with a brush does wipe out a
 
26590
cross beneath the lightpassenger, too.
 
26591
</p>
 
26592
<p>An <a href="#st_005fboulder">st_boulder</a> hitting a lightpassenger toggles the lightpassenger&rsquo;s state
 
26593
for a short period.
 
26594
</p>
 
26595
<p>When an active &lsquo;<samp>st_lightpassenger</samp>&rsquo; is trapped between exactly two
 
26596
opposing light beams or light beams from all four directions, it
 
26597
starts blinking.  In this state, it can be destroyed with
 
26598
<a href="#it_005fhammer">it_hammer</a>.
 
26599
</p>
 
26600
<dl compact="compact">
 
26601
<dt> <b>Attributes:</b></dt>
 
26602
<dd>
 
26603
<dl compact="compact">
 
26604
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>ON</code>; &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
26605
<dd><p>Represents the activity state.
 
26606
</p></dd>
 
26607
<dt> <b>interval</b> &nbsp;&nbsp;<i>values</i>: positive number; &nbsp;&nbsp;<i>default</i>: <code>0.05</code></dt>
 
26608
<dd><p>The base interval for movements.
 
26609
</p></dd>
 
26610
<dt> <b>friction</b> &nbsp;&nbsp;<i>values</i>: positive number; &nbsp;&nbsp;<i>default</i>: <code>0.0</code></dt>
 
26611
<dd><p>Stone friction of the speed of the light passenger.
 
26612
</p></dd>
 
26613
<dt> <b>gradient</b> &nbsp;&nbsp;<i>values</i>: positive number; &nbsp;&nbsp;<i>default</i>: <code>0.0</code></dt>
 
26614
<dd><p>Stone gradient of the speed of the light passenger.
 
26615
</p>
 
26616
</dd>
 
26617
</dl>
 
26618
 
 
26619
</dd>
 
26620
<dt> <b>Messages:</b></dt>
 
26621
<dd>
 
26622
<dl compact="compact">
 
26623
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
26624
<dd><p>Switches on at value &lsquo;<samp>1</samp>&rsquo;. A values of &lsquo;<samp>0</samp>&rsquo; is ignored.
 
26625
</p></dd>
 
26626
<dt> <b>on</b> &nbsp;&nbsp;See section <a href="#on">on</a></dt>
 
26627
<dd><p>Switch the lightpassenger on.
 
26628
</p></dd>
 
26629
<dt> <b>off</b> &nbsp;&nbsp;See section <a href="#off">off</a></dt>
 
26630
<dd><p>Switch the lightpassenger off.
 
26631
</p></dd>
 
26632
</dl>
 
26633
 
 
26634
</dd>
 
26635
<dt> <b>Variants:</b></dt>
 
26636
<dd>
 
26637
<dl compact="compact">
 
26638
<dt> <img src="images/st_lightpassenger.png" alt="images/st_lightpassenger"><p> <b>st_lightpassenger</b>: state = <code>ON</code>
 
26639
</p></dt>
 
26640
<dt> <img src="images/st_lightpassenger.png" alt="images/st_lightpassenger"><p> <b>st_lightpassenger_on</b>: state = <code>ON</code>
 
26641
</p></dt>
 
26642
<dt> <img src="images/st_darkglass.png" alt="images/st_darkglass"><p> <b>st_lightpassenger_off</b>: state = <code>OFF</code>
 
26643
</p></dt>
 
26644
</dl>
 
26645
 
 
26646
</dd>
 
26647
</dl>
 
26648
 
 
26649
<hr size="6">
 
26650
<a name="st_005fmagic"></a>
 
26651
<table cellpadding="1" cellspacing="1" border="0">
 
26652
<tr><td valign="middle" align="left">[<a href="#st_005flightpassenger" title="Previous section in reading order"> &lt; </a>]</td>
 
26653
<td valign="middle" align="left">[<a href="#st_005fmail" title="Next section in reading order"> &gt; </a>]</td>
 
26654
<td valign="middle" align="left"> &nbsp; </td>
 
26655
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
26656
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
26657
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
26658
<td valign="middle" align="left"> &nbsp; </td>
 
26659
<td valign="middle" align="left"> &nbsp; </td>
 
26660
<td valign="middle" align="left"> &nbsp; </td>
 
26661
<td valign="middle" align="left"> &nbsp; </td>
 
26662
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
26663
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
26664
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
26665
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
26666
</tr></table>
 
26667
<a name="st_005fmagic-1"></a>
 
26668
<h3 class="subsection">9.5.37 st_magic</h3>
 
26669
<a name="index-st_005fmagic"></a>
 
26670
 
 
26671
<p>A stone that mimics one stone, but transforms on actor hits into another stone.
 
26672
</p>
 
26673
<p>Like <a href="#st_005ffake">st_fake</a> this stone does initially look like another stone of a kind
 
26674
given by the attribute &lsquo;<samp>flavor</samp>&rsquo;. But on an actor hit with or without tool
 
26675
it transforms to another stone, which provides its own set of features.
 
26676
</p>
 
26677
<p>The flavor <code>&quot;brick&quot;</code> just transforms on a hit with a revealed
 
26678
<a href="#it_005fmagicwand">it_magicwand</a> into a static <a href="#st_005frawglass">st_rawglass</a>.
 
26679
</p>
 
26680
<p>The flavor <code>&quot;oxyda&quot;</code> transforms on any hit into a movable
 
26681
<a href="#st_005flightglass">st_lightglass</a>.
 
26682
</p>
 
26683
<p>The flavor <code>&quot;oxydc&quot;</code> transforms on any hit into a movable
 
26684
<a href="#st_005frawglass">st_rawglass</a>.
 
26685
</p>
 
26686
<dl compact="compact">
 
26687
<dt> <b>Attributes:</b></dt>
 
26688
<dd>
 
26689
<dl compact="compact">
 
26690
<dt> <b>flavor</b> &nbsp;&nbsp;<i>values</i>: <code>&quot;brick&quot;</code>, <code>&quot;oxyda&quot;</code>, <code>&quot;oxydc&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;brick&quot;</code>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
26691
</dl>
 
26692
 
 
26693
</dd>
 
26694
<dt> <b>Messages:</b> none</dt>
 
26695
<dt> <b>Action:</b> none</dt>
 
26696
<dt> <b>Variants:</b></dt>
 
26697
<dd>
 
26698
<dl compact="compact">
 
26699
<dt> <img src="images/st_brick.png" alt="images/st_brick"><p> <b>st_magic</b>: flavor=<code>&quot;brick&quot;</code>
 
26700
</p></dt>
 
26701
<dt> <img src="images/st_brick.png" alt="images/st_brick"><p> <b>st_magic_brick</b>: flavor=<code>&quot;brick&quot;</code>
 
26702
</p></dt>
 
26703
<dt> <img src="images/st_oxyda.png" alt="images/st_oxyda"><p> <b>st_magic_oxyda</b>: flavor=<code>&quot;oxyda&quot;</code>
 
26704
</p></dt>
 
26705
<dt> <img src="images/st_oxydc.png" alt="images/st_oxydc"><p> <b>st_magic_oxydc</b>: flavor=<code>&quot;oxydc&quot;</code>
 
26706
</p></dt>
 
26707
</dl>
 
26708
 
 
26709
</dd>
 
26710
</dl>
 
26711
 
 
26712
<hr size="6">
 
26713
<a name="st_005fmail"></a>
 
26714
<table cellpadding="1" cellspacing="1" border="0">
 
26715
<tr><td valign="middle" align="left">[<a href="#st_005fmagic" title="Previous section in reading order"> &lt; </a>]</td>
 
26716
<td valign="middle" align="left">[<a href="#st_005fmirror" title="Next section in reading order"> &gt; </a>]</td>
 
26717
<td valign="middle" align="left"> &nbsp; </td>
 
26718
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
26719
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
26720
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
26721
<td valign="middle" align="left"> &nbsp; </td>
 
26722
<td valign="middle" align="left"> &nbsp; </td>
 
26723
<td valign="middle" align="left"> &nbsp; </td>
 
26724
<td valign="middle" align="left"> &nbsp; </td>
 
26725
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
26726
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
26727
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
26728
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
26729
</tr></table>
 
26730
<a name="st_005fmail-1"></a>
 
26731
<h3 class="subsection">9.5.38 st_mail</h3>
 
26732
<a name="index-st_005fmail"></a>
 
26733
 
 
26734
<p>When hit by an actor, a mail stone takes the first item out of the player&rsquo;s
 
26735
inventory and drops it at its exit, or the exit of the appending <a href="#it_005fpipe">it_pipe</a>.
 
26736
If this position is blocked (e.g., by another item), no item is taken from
 
26737
inventory. The <a href="#it_005fbrake">it_brake</a> is the only item that gets delivered even if
 
26738
another item is positioned at the end of the pipe as it emerges the pipe as an
 
26739
<a href="#st_005fbrake">st_brake</a> stone. An <a href="#it_005fpipe">it_pipe</a> end piece with just one fitting connection
 
26740
closes a mail pipe completely, rejecting any item insertion.
 
26741
</p>
 
26742
<dl compact="compact">
 
26743
<dt> <b>Attributes:</b></dt>
 
26744
<dd>
 
26745
<dl compact="compact">
 
26746
<dt> <b>orientation</b>, &nbsp;&nbsp;<i>values</i>: <code>NORTH</code>, <code>EAST</code>, <code>SOUTH</code>, <code>WEST</code>; &nbsp;&nbsp;<i>default</i>: <code>NORTH</code></dt>
 
26747
<dd><p>The orientation of the mail stone. It determines the neighbors grid position
 
26748
onto which the item will be dropped, or where the pipe starts.
 
26749
</p></dd>
 
26750
</dl>
 
26751
 
 
26752
</dd>
 
26753
<dt> <b>Messages:</b> none</dt>
 
26754
<dt> <b>Action:</b> none</dt>
 
26755
<dt> <b>Variants:</b></dt>
 
26756
<dd>
 
26757
<dl compact="compact">
 
26758
<dt> <img src="images/st_mail.png" alt="images/st_mail"><p> <b>st_mail</b>: orientation = <code>NORTH</code>
 
26759
</p></dt>
 
26760
<dt> <img src="images/st_mail_3.png" alt="images/st_mail_3"><p> <b>st_mail_w</b>: orientation = <code>WEST</code>
 
26761
</p></dt>
 
26762
<dt> <img src="images/st_mail_4.png" alt="images/st_mail_4"><p> <b>st_mail_s</b>: orientation = <code>SOUTH</code>
 
26763
</p></dt>
 
26764
<dt> <img src="images/st_mail_2.png" alt="images/st_mail_2"><p> <b>st_mail_e</b>: orientation = <code>EAST</code>
 
26765
</p></dt>
 
26766
<dt> <img src="images/st_mail.png" alt="images/st_mail"><p> <b>st_mail_n</b>: orientation = <code>NORTH</code>
 
26767
</p></dt>
 
26768
</dl>
 
26769
 
 
26770
</dd>
 
26771
</dl>
 
26772
 
 
26773
<hr size="6">
 
26774
<a name="st_005fmirror"></a>
 
26775
<table cellpadding="1" cellspacing="1" border="0">
 
26776
<tr><td valign="middle" align="left">[<a href="#st_005fmail" title="Previous section in reading order"> &lt; </a>]</td>
 
26777
<td valign="middle" align="left">[<a href="#st_005fmonoflop" title="Next section in reading order"> &gt; </a>]</td>
 
26778
<td valign="middle" align="left"> &nbsp; </td>
 
26779
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
26780
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
26781
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
26782
<td valign="middle" align="left"> &nbsp; </td>
 
26783
<td valign="middle" align="left"> &nbsp; </td>
 
26784
<td valign="middle" align="left"> &nbsp; </td>
 
26785
<td valign="middle" align="left"> &nbsp; </td>
 
26786
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
26787
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
26788
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
26789
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
26790
</tr></table>
 
26791
<a name="st_005fmirror-1"></a>
 
26792
<h3 class="subsection">9.5.39 st_mirror</h3>
 
26793
<a name="index-st_005fmirror"></a>
 
26794
 
 
26795
<p>Mirror stones redirect and fork laser beams. They exist in different shapes.
 
26796
You can set the shape by the attribute &lsquo;<samp>flavor</samp>&rsquo; or by using the
 
26797
appropriate subkind. There are two planar versions called &lsquo;<samp>slab</samp>&rsquo; and
 
26798
&lsquo;<samp>sheets</samp>&rsquo;, and a &lsquo;<samp>triangle</samp>&rsquo; version.
 
26799
</p>
 
26800
<p>The mirror panes can either be non-transparent or semi-transparent. Even though
 
26801
you set this feature with the attribute &lsquo;<samp>transparent</samp>&rsquo; you should be aware
 
26802
that even with a value of &lsquo;<samp>true</samp>&rsquo; the mirror is not fully transparent. E.g.
 
26803
a &lsquo;<samp>slab</samp>&rsquo; mirror will block any laser light that is parallel to its shape
 
26804
as the short ends are no mirrors at all. For this reason we provide the second
 
26805
planar version called &lsquo;<samp>sheets</samp>&rsquo;, which lets light parallel to its sheets
 
26806
pass.
 
26807
</p>
 
26808
<p>Mirrors hit by an actor or impulsed by an <a href="#st_005fstoneimpulse">st_stoneimpulse</a> will move if
 
26809
their attribute &lsquo;<samp>movable</samp>&rsquo; is set to true. Mirrors that are not movable
 
26810
will differ slightly in a darker color.
 
26811
</p>
 
26812
<p>Mirrors hit or just touched will turn their mirror panes by 90 degrees. The
 
26813
standard turning direction is clockwise. But this standard can be changed
 
26814
by the attribute &lsquo;<samp>counterclock</samp>&rsquo;. An <a href="#st_005fboulder">st_boulder</a> hitting a mirror
 
26815
will turn it in its standard direction, too.
 
26816
</p>
 
26817
<p>A mirror can be turned into the opposite direction either by a message
 
26818
&lsquo;<samp>turnback</samp>&rsquo; or by an actor with a revealed <a href="#it_005fwrench">it_wrench</a> in its
 
26819
inventory.
 
26820
</p>
 
26821
<p>Mirrors moved by stone pushing impulses issued by <a href="#it_005fpuller">it_puller</a>,
 
26822
<a href="#st_005fstoneimpulse">st_stoneimpulse</a>,... or send by <a href="#ot_005fwire">ot_wire</a> will move without being turned.
 
26823
</p>
 
26824
<dl compact="compact">
 
26825
<dt> <b>Attributes:</b></dt>
 
26826
<dd>
 
26827
<dl compact="compact">
 
26828
<dt> <b>flavor</b> &nbsp;&nbsp;<i>values</i>: <code>&quot;slab&quot;</code>, <code>&quot;sheets&quot;</code>, <code>&quot;triangle&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;slab&quot;</code></dt>
 
26829
<dd><p>Mirror panes either set up as a triangle or as a side opaque slab or
 
26830
as a mandatory semi-transparent pair of sheets.
 
26831
</p></dd>
 
26832
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>NORTH</code>, <code>EAST</code>, <code>SOUTH</code>, <code>WEST</code>; &nbsp;&nbsp;<i>default</i>: <code>NORTH</code>; &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
26833
<dd><p>The orientation of the mirror. For a triangular mirror it is the triangle&rsquo;s
 
26834
pointing direction. For a planar mirror it is the reflection direction of an
 
26835
incoming northbound beam.
 
26836
</p></dd>
 
26837
<dt> <b>orientation</b>, &nbsp;&nbsp;<i>values</i>: <code>NORTH</code>, <code>EAST</code>, <code>SOUTH</code>, <code>WEST</code>, <code>RANDOMDIR</code>; &nbsp;&nbsp;<i>default</i>: <code>NORTH</code></dt>
 
26838
<dd><p>The orientation of the mirror. For a triangular mirror it is the triangle&rsquo;s
 
26839
pointing direction. For a planar mirror it is the reflection direction of an
 
26840
incoming northbound beam. The value <code>RANDOMDIR</code> is just evaluated when the
 
26841
mirror is being set. From this point of time the mirror will report a random
 
26842
orientation out of the other 4 real orientations.
 
26843
</p></dd>
 
26844
<dt> <b>transparent</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
26845
<dd><p>Semitransparency of the mirror panes.
 
26846
</p></dd>
 
26847
<dt> <b>movable</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code> &nbsp;&nbsp;See section <a href="#movable">movable</a></dt>
 
26848
<dd><p>Movability on actor hits and stone impulses.
 
26849
</p></dd>
 
26850
<dt> <b>counterclock</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
26851
<dd><p>The standard turning direction is clockwise. Use this attribute to revert the
 
26852
direction.
 
26853
</p></dd>
 
26854
</dl>
 
26855
 
 
26856
</dd>
 
26857
<dt> <b>Messages:</b></dt>
 
26858
<dd>
 
26859
<dl compact="compact">
 
26860
<dd><a name="index-orientate-1"></a>
 
26861
</dd>
 
26862
<dt> <b>orientate</b>, &nbsp;&nbsp;<i>value type</i>: orientation</dt>
 
26863
<dd><p>Change the orientation to the given orientation value. The <a href="#st_005ffourswitch">st_fourswitch</a>
 
26864
provides a compatible action which allows you to set a mirror as
 
26865
target and this message as action.
 
26866
</p></dd>
 
26867
<dt> <b>turn</b></dt>
 
26868
<dd><p>Turn the orientation in turning direction as defined by attribute
 
26869
&lsquo;<samp>counterclock</samp>&rsquo;.
 
26870
</p></dd>
 
26871
<dt> <b>turnback</b></dt>
 
26872
<dd><p>Turn the orientation in opposite turning direction as defined by attribute
 
26873
&lsquo;<samp>counterclock</samp>&rsquo;.
 
26874
</p></dd>
 
26875
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
26876
<dd><p>Turn the orientation in turning direction as defined by attribute
 
26877
&lsquo;<samp>counterclock</samp>&rsquo; on value &lsquo;<samp>1</samp>&rsquo;. A value of &lsquo;<samp>0</samp>&rsquo; is ignored.
 
26878
</p>
 
26879
</dd>
 
26880
</dl>
 
26881
 
 
26882
</dd>
 
26883
<dt> <b>Action:</b> none</dt>
 
26884
<dt> <b>Variants:</b></dt>
 
26885
<dd><table>
 
26886
<tr><td width="8%"><img src="images/st_mirror_static.png" alt="images/st_mirror_static"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>NORTH</code>, transparent = <code>false</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable.png" alt="images/st_mirror_movable"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>NORTH</code>, transparent = <code>false</code>, movable = <code>true</code></td></tr>
 
26887
<tr><td width="8%"><img src="images/st_mirror_static_2.png" alt="images/st_mirror_static_2"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>EAST</code>, transparent = <code>false</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_2.png" alt="images/st_mirror_movable_2"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>EAST</code>, transparent = <code>false</code>, movable = <code>true</code></td></tr>
 
26888
<tr><td width="8%"><img src="images/st_mirror_static_3.png" alt="images/st_mirror_static_3"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>SOUTH</code>, transparent = <code>false</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_3.png" alt="images/st_mirror_movable_3"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>SOUTH</code>, transparent = <code>false</code>, movable = <code>true</code></td></tr>
 
26889
<tr><td width="8%"><img src="images/st_mirror_static_4.png" alt="images/st_mirror_static_4"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>WEST</code>, transparent = <code>false</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_4.png" alt="images/st_mirror_movable_4"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>WEST</code>, transparent = <code>false</code>, movable = <code>true</code></td></tr>
 
26890
<tr><td width="8%"><img src="images/st_mirror_static_b.png" alt="images/st_mirror_static_b"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>NORTH</code>, transparent = <code>true</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_b.png" alt="images/st_mirror_movable_b"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>NORTH</code>, transparent = <code>true</code>, movable = <code>true</code></td></tr>
 
26891
<tr><td width="8%"><img src="images/st_mirror_static_b2.png" alt="images/st_mirror_static_b2"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>EAST</code>, transparent = <code>true</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_b2.png" alt="images/st_mirror_movable_b2"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>EAST</code>, transparent = <code>true</code>, movable = <code>true</code></td></tr>
 
26892
<tr><td width="8%"><img src="images/st_mirror_static_b3.png" alt="images/st_mirror_static_b3"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>SOUTH</code>, transparent = <code>true</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_b3.png" alt="images/st_mirror_movable_b3"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>SOUTH</code>, transparent = <code>true</code>, movable = <code>true</code></td></tr>
 
26893
<tr><td width="8%"><img src="images/st_mirror_static_b4.png" alt="images/st_mirror_static_b4"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>WEST</code>, transparent = <code>true</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_b4.png" alt="images/st_mirror_movable_b4"></td><td width="42%"><b>st_mirror_triangle</b>: flavor=<code>triangle</code>, state = <code>WEST</code>, transparent = <code>true</code>, movable = <code>true</code></td></tr>
 
26894
<tr><td width="8%"><img src="images/st_mirror_static_c.png" alt="images/st_mirror_static_c"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>NORTH</code>, transparent = <code>false</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_c.png" alt="images/st_mirror_movable_c"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>NORTH</code>, transparent = <code>false</code>, movable = <code>true</code></td></tr>
 
26895
<tr><td width="8%"><img src="images/st_mirror_static_c2.png" alt="images/st_mirror_static_c2"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>EAST</code>, transparent = <code>false</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_c2.png" alt="images/st_mirror_movable_c2"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>EAST</code>, transparent = <code>false</code>, movable = <code>true</code></td></tr>
 
26896
<tr><td width="8%"><img src="images/st_mirror_static_c3.png" alt="images/st_mirror_static_c3"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>SOUTH</code>, transparent = <code>false</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_c3.png" alt="images/st_mirror_movable_c3"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>SOUTH</code>, transparent = <code>false</code>, movable = <code>true</code></td></tr>
 
26897
<tr><td width="8%"><img src="images/st_mirror_static_c4.png" alt="images/st_mirror_static_c4"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>WEST</code>, transparent = <code>false</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_c4.png" alt="images/st_mirror_movable_c4"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>WEST</code>, transparent = <code>false</code>, movable = <code>true</code></td></tr>
 
26898
<tr><td width="8%"><img src="images/st_mirror_static_d.png" alt="images/st_mirror_static_d"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>NORTH</code>, transparent = <code>true</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_d.png" alt="images/st_mirror_movable_d"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>NORTH</code>, transparent = <code>true</code>, movable = <code>true</code></td></tr>
 
26899
<tr><td width="8%"><img src="images/st_mirror_static_d2.png" alt="images/st_mirror_static_d2"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>EAST</code>, transparent = <code>true</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_d2.png" alt="images/st_mirror_movable_d2"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>EAST</code>, transparent = <code>true</code>, movable = <code>true</code></td></tr>
 
26900
<tr><td width="8%"><img src="images/st_mirror_static_d3.png" alt="images/st_mirror_static_d3"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>SOUTH</code>, transparent = <code>true</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_d3.png" alt="images/st_mirror_movable_d3"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>SOUTH</code>, transparent = <code>true</code>, movable = <code>true</code></td></tr>
 
26901
<tr><td width="8%"><img src="images/st_mirror_static_d4.png" alt="images/st_mirror_static_d4"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>WEST</code>, transparent = <code>true</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_d4.png" alt="images/st_mirror_movable_d4"></td><td width="42%"><b>st_mirror_slab</b>: flavor=<code>slab</code>, state = <code>WEST</code>, transparent = <code>true</code>, movable = <code>true</code></td></tr>
 
26902
<tr><td width="8%"><img src="images/st_mirror_static_e.png" alt="images/st_mirror_static_e"></td><td width="42%"><b>st_mirror_sheets</b>: flavor=<code>sheets</code>, state = <code>NORTH</code>, transparent = <code>true</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_e.png" alt="images/st_mirror_movable_e"></td><td width="42%"><b>st_mirror_sheets</b>: flavor=<code>sheets</code>, state = <code>NORTH</code>, transparent = <code>true</code>, movable = <code>true</code></td></tr>
 
26903
<tr><td width="8%"><img src="images/st_mirror_static_e2.png" alt="images/st_mirror_static_e2"></td><td width="42%"><b>st_mirror_sheets</b>: flavor=<code>sheets</code>, state = <code>EAST</code>, transparent = <code>true</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_e2.png" alt="images/st_mirror_movable_e2"></td><td width="42%"><b>st_mirror_sheets</b>: flavor=<code>sheets</code>, state = <code>EAST</code>, transparent = <code>true</code>, movable = <code>true</code></td></tr>
 
26904
<tr><td width="8%"><img src="images/st_mirror_static_e3.png" alt="images/st_mirror_static_e3"></td><td width="42%"><b>st_mirror_sheets</b>: flavor=<code>sheets</code>, state = <code>SOUTH</code>, transparent = <code>true</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_e3.png" alt="images/st_mirror_movable_e3"></td><td width="42%"><b>st_mirror_sheets</b>: flavor=<code>sheets</code>, state = <code>SOUTH</code>, transparent = <code>true</code>, movable = <code>true</code></td></tr>
 
26905
<tr><td width="8%"><img src="images/st_mirror_static_e4.png" alt="images/st_mirror_static_e4"></td><td width="42%"><b>st_mirror_sheets</b>: flavor=<code>sheets</code>, state = <code>WEST</code>, transparent = <code>true</code>, movable = <code>false</code></td><td width="8%"><img src="images/st_mirror_movable_e4.png" alt="images/st_mirror_movable_e4"></td><td width="42%"><b>st_mirror_sheets</b>: flavor=<code>sheets</code>, state = <code>WEST</code>, transparent = <code>true</code>, movable = <code>true</code></td></tr>
 
26906
</table>
 
26907
 
 
26908
</dd>
 
26909
</dl>
 
26910
 
 
26911
<hr size="6">
 
26912
<a name="st_005fmonoflop"></a>
 
26913
<table cellpadding="1" cellspacing="1" border="0">
 
26914
<tr><td valign="middle" align="left">[<a href="#st_005fmirror" title="Previous section in reading order"> &lt; </a>]</td>
 
26915
<td valign="middle" align="left">[<a href="#st_005foneway" title="Next section in reading order"> &gt; </a>]</td>
 
26916
<td valign="middle" align="left"> &nbsp; </td>
 
26917
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
26918
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
26919
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
26920
<td valign="middle" align="left"> &nbsp; </td>
 
26921
<td valign="middle" align="left"> &nbsp; </td>
 
26922
<td valign="middle" align="left"> &nbsp; </td>
 
26923
<td valign="middle" align="left"> &nbsp; </td>
 
26924
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
26925
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
26926
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
26927
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
26928
</tr></table>
 
26929
<a name="st_005fmonoflop-1"></a>
 
26930
<h3 class="subsection">9.5.40 st_monoflop</h3>
 
26931
<a name="index-st_005fmonoflop"></a>
 
26932
 
 
26933
<p>A switch that is triggered by actor hits. It switches instantly to
 
26934
state &lsquo;<samp>ON</samp>&rsquo; and after a given &lsquo;<samp>interval</samp>&rsquo; back to state &lsquo;<samp>OFF</samp>&rsquo;.
 
26935
Repetitive actor hits will prolong the &lsquo;<samp>ON</samp>&rsquo; state until a trailing
 
26936
&lsquo;<samp>interval</samp>&rsquo; after the last hit has been expired. A switch similar to
 
26937
the monoflop is the <a href="#st_005flaserflop">st_laserflop</a>, which is additionally light sensitive.
 
26938
</p>
 
26939
<p>The single state cycle, called monoflop, can be initiated by &lsquo;<samp>on</samp>&rsquo; and
 
26940
&lsquo;<samp>signal</samp>&rsquo; messages. But an activated monoflop cannot be stopped by
 
26941
messages or state setting.
 
26942
</p>
 
26943
<dl compact="compact">
 
26944
<dt> <b>Attributes:</b></dt>
 
26945
<dd>
 
26946
<dl compact="compact">
 
26947
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>OFF</code>; &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
26948
<dd><p>Represents the activity state. The state of a new object can be set, but an
 
26949
active monoflop cannot be set to state &lsquo;<samp>OFF</samp>&rsquo;.
 
26950
</p></dd>
 
26951
<dt> <b>interval</b> &nbsp;&nbsp;<i>values</i>: positive number; &nbsp;&nbsp;<i>default</i>: <code>1.8</code></dt>
 
26952
<dd><p>Number of seconds to return to state &lsquo;<samp>OFF</samp>&rsquo; after the last hit.
 
26953
</p>
 
26954
</dd>
 
26955
</dl>
 
26956
 
 
26957
</dd>
 
26958
<dt> <b>Messages:</b></dt>
 
26959
<dd>
 
26960
<dl compact="compact">
 
26961
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
26962
<dd><p>Switches on at value &lsquo;<samp>1</samp>&rsquo;. A values of &lsquo;<samp>0</samp>&rsquo; is ignored.
 
26963
</p></dd>
 
26964
<dt> <b>on</b> &nbsp;&nbsp;See section <a href="#on">on</a></dt>
 
26965
<dd><p>Switch the monoflop on like on an actor hit.
 
26966
</p></dd>
 
26967
</dl>
 
26968
 
 
26969
</dd>
 
26970
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
26971
<dt> <b>Variants:</b></dt>
 
26972
<dd><dl compact="compact">
 
26973
<dt> <img src="images/st_monoflop.png" alt="images/st_monoflop"><p> <b>st_monoflop</b>: state = <code>OFF</code>
 
26974
</p></dt>
 
26975
<dt> <img src="images/st_monoflop_2.png" alt="images/st_monoflop_2"><p> <b>st_monoflop</b>: state = <code>ON</code>
 
26976
</p></dt>
 
26977
</dl>
 
26978
</dd>
 
26979
</dl>
 
26980
 
 
26981
<hr size="6">
 
26982
<a name="st_005foneway"></a>
 
26983
<table cellpadding="1" cellspacing="1" border="0">
 
26984
<tr><td valign="middle" align="left">[<a href="#st_005fmonoflop" title="Previous section in reading order"> &lt; </a>]</td>
 
26985
<td valign="middle" align="left">[<a href="#st_005foxyd" title="Next section in reading order"> &gt; </a>]</td>
 
26986
<td valign="middle" align="left"> &nbsp; </td>
 
26987
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
26988
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
26989
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
26990
<td valign="middle" align="left"> &nbsp; </td>
 
26991
<td valign="middle" align="left"> &nbsp; </td>
 
26992
<td valign="middle" align="left"> &nbsp; </td>
 
26993
<td valign="middle" align="left"> &nbsp; </td>
 
26994
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
26995
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
26996
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
26997
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
26998
</tr></table>
 
26999
<a name="st_005foneway-1"></a>
 
27000
<h3 class="subsection">9.5.41 st_oneway</h3>
 
27001
<a name="index-st_005foneway"></a>
 
27002
 
 
27003
<p>A stone with one special face, that allows actors just to pass from inside
 
27004
to outside but not vice versa. The other faces can generally be passed in both
 
27005
directions. As most times it is more important to be aware of the passages that
 
27006
are blocked, you may remember that the oneway&rsquo;s arrow points to the side that
 
27007
can not be entered.
 
27008
</p>
 
27009
<p>Three variants of the oneway do exist. A neutral, green-grey colored one that
 
27010
lets any actor pass according to the above rules, and additionally a black and
 
27011
a white colored oneway. These last oneways will let pass only marbles of
 
27012
matching color. All other actors will reflect from all four sides.
 
27013
</p>
 
27014
<p>All oneways can only be passed by actors moving on the floor. Jumping actors
 
27015
will bounce on every side.
 
27016
</p>
 
27017
<p>The &lsquo;<samp>orientation</samp>&rsquo; of a neutral oneway can be flipped to the opposite
 
27018
direction by an actor hitting it with a revealed <a href="#it_005fmagicwand">it_magicwand</a>. All
 
27019
oneway variations will change their orientation on messages &lsquo;<samp>signal</samp>&rsquo; and
 
27020
&lsquo;<samp>flip</samp>&rsquo;.
 
27021
</p>
 
27022
<dl compact="compact">
 
27023
<dt> <b>Attributes:</b></dt>
 
27024
<dd>
 
27025
<dl compact="compact">
 
27026
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>NORTH</code>, <code>EAST</code>, <code>SOUTH</code>, <code>WEST</code>; &nbsp;&nbsp;<i>default</i>: <code>NORTH</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
27027
<dd><p>The orientation of the oneway as shown by the arrow.
 
27028
</p></dd>
 
27029
<dt> <b>orientation</b>, &nbsp;&nbsp;<i>values</i>: <code>NORTH</code>, <code>EAST</code>, <code>SOUTH</code>, <code>WEST</code>; &nbsp;&nbsp;<i>default</i>: <code>NORTH</code></dt>
 
27030
<dd><p>The orientation of the oneway as shown by the arrow.
 
27031
</p></dd>
 
27032
<dt> <b>color</b> &nbsp;&nbsp;<i>values</i>: <code>nil</code>, <code>BLACK</code>, <code>WHITE</code>; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
27033
<dd><p>The color of the oneway that needs to match the actor&rsquo;s color to allow passing.
 
27034
The default &lsquo;<samp>nil</samp>&rsquo; color is a greengrey oneway that matches all actors,
 
27035
marbles of any color as well as all other actors.
 
27036
</p></dd>
 
27037
</dl>
 
27038
 
 
27039
</dd>
 
27040
<dt> <b>Messages:</b></dt>
 
27041
<dd>
 
27042
<dl compact="compact">
 
27043
<dt> <b>orientate</b>, &nbsp;&nbsp;<i>value type</i>: orientation</dt>
 
27044
<dd><p>Change the orientation to the given orientation value. The <a href="#st_005ffourswitch">st_fourswitch</a>
 
27045
provides a compatible action which allows you to set a oneway as
 
27046
target and this message as action.
 
27047
</p></dd>
 
27048
<dt> <b>flip</b>,</dt>
 
27049
<dd><p>Flip the orientation to the opposite direction.
 
27050
</p></dd>
 
27051
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
27052
<dd><p>Flip the orientation to the opposite direction.
 
27053
</p></dd>
 
27054
</dl>
 
27055
 
 
27056
</dd>
 
27057
<dt> <b>Action:</b> none</dt>
 
27058
<dt> <b>Variants:</b></dt>
 
27059
<dd><table>
 
27060
<tr><td width="8%"><img src="images/st_oneway.png" alt="images/st_oneway"></td><td width="42%"><b>st_oneway</b>: orientation = <code>EAST</code></td><td width="8%"><img src="images/st_oneway_2.png" alt="images/st_oneway_2"></td><td width="42%"><b>st_oneway</b>: orientation = <code>NORTH</code></td></tr>
 
27061
<tr><td width="8%"><img src="images/st_oneway_3.png" alt="images/st_oneway_3"></td><td width="42%"><b>st_oneway</b>: orientation = <code>SOUTH</code></td><td width="8%"><img src="images/st_oneway_4.png" alt="images/st_oneway_4"></td><td width="42%"><b>st_oneway</b>: orientation = <code>WEST</code></td></tr>
 
27062
<tr><td width="8%"><img src="images/st_oneway_b.png" alt="images/st_oneway_b"></td><td width="42%"><b>st_oneway_black</b>: color = <code>BLACK</code>; orientation = <code>EAST</code></td><td width="8%"><img src="images/st_oneway_b2.png" alt="images/st_oneway_b2"></td><td width="42%"><b>st_oneway_black</b>: color = <code>BLACK</code>; orientation = <code>NORTH</code></td></tr>
 
27063
<tr><td width="8%"><img src="images/st_oneway_b3.png" alt="images/st_oneway_b3"></td><td width="42%"><b>st_oneway_black</b>: color = <code>BLACK</code>; orientation = <code>SOUTH</code></td><td width="8%"><img src="images/st_oneway_b4.png" alt="images/st_oneway_b4"></td><td width="42%"><b>st_oneway_black</b>: color = <code>BLACK</code>; orientation = <code>WEST</code></td></tr>
 
27064
<tr><td width="8%"><img src="images/st_oneway_c.png" alt="images/st_oneway_c"></td><td width="42%"><b>st_oneway_white</b>: color = <code>WHITE</code>; orientation = <code>EAST</code></td><td width="8%"><img src="images/st_oneway_c2.png" alt="images/st_oneway_c2"></td><td width="42%"><b>st_oneway_white</b>: color = <code>WHITE</code>; orientation = <code>NORTH</code></td></tr>
 
27065
<tr><td width="8%"><img src="images/st_oneway_c3.png" alt="images/st_oneway_c3"></td><td width="42%"><b>st_oneway_white</b>: color = <code>WHITE</code>; orientation = <code>SOUTH</code></td><td width="8%"><img src="images/st_oneway_c4.png" alt="images/st_oneway_c4"></td><td width="42%"><b>st_oneway_white</b>: color = <code>WHITE</code>; orientation = <code>WEST</code></td></tr>
 
27066
</table>
 
27067
</dd>
 
27068
</dl>
 
27069
 
 
27070
<hr size="6">
 
27071
<a name="st_005foxyd"></a>
 
27072
<table cellpadding="1" cellspacing="1" border="0">
 
27073
<tr><td valign="middle" align="left">[<a href="#st_005foneway" title="Previous section in reading order"> &lt; </a>]</td>
 
27074
<td valign="middle" align="left">[<a href="#st_005fpassage" title="Next section in reading order"> &gt; </a>]</td>
 
27075
<td valign="middle" align="left"> &nbsp; </td>
 
27076
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
27077
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
27078
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
27079
<td valign="middle" align="left"> &nbsp; </td>
 
27080
<td valign="middle" align="left"> &nbsp; </td>
 
27081
<td valign="middle" align="left"> &nbsp; </td>
 
27082
<td valign="middle" align="left"> &nbsp; </td>
 
27083
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
27084
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
27085
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
27086
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
27087
</tr></table>
 
27088
<a name="st_005foxyd-1"></a>
 
27089
<h3 class="subsection">9.5.42 st_oxyd</h3>
 
27090
<a name="index-st_005foxyd"></a>
 
27091
 
 
27092
<p>The main target stones of the game. Opening all regular oxyd stones is the
 
27093
standard goal of the existing <a href="#Ending-Conditions">Ending Conditions</a>. Regular oxyds stones show
 
27094
a color spot when opening. Pairs of same colored stones have to be opened in
 
27095
sequence, otherwise the first one closes again.
 
27096
</p>
 
27097
<p>Even though most levels make use of just a single pair of each color, there
 
27098
is no limit on a single color. If you like you can define 3 pairs of blue oxyds
 
27099
together with 2 yellow pairs. You do this by setting explicit &lsquo;<samp>oxydcolor</samp>&rsquo;
 
27100
attributes to the oxyds.
 
27101
</p>
 
27102
<p>For standard levels the &lsquo;<samp>oxydcolor</samp>&rsquo; can be set to its default &lsquo;<samp>OXYD_AUTO</samp>&rsquo;.
 
27103
This causes an automatic coloring by pairs of colors in the standard color
 
27104
sequence.
 
27105
</p>
 
27106
<p>There is no limit on the number of used oxyd pairs. There exist 12 different
 
27107
regular colors for oxyds. But per default just the first 8 colors will be
 
27108
assigned to &lsquo;<samp>OXYD_AUTO</samp>&rsquo; colored oxyds. The colors will repeat from the
 
27109
9th pair giving the user the possibility to build arbitrary couples within a
 
27110
single color. With the world attribute <a href="#MaxOxydColor">MaxOxydColor</a> you can lower or
 
27111
increase this limit. By setting this attribute to &lsquo;<samp>OXYD_GREEN</samp>&rsquo; you can
 
27112
enforce the engine to assign just the first three colors. Be careful in usage
 
27113
of more than 8 colors as levels can get incredibly difficult.
 
27114
</p>
 
27115
<p>The number of auto colored oxyds should usually be even as a single remaining
 
27116
oxyd of a color keeps a level from being solvable. In case of an uneven number
 
27117
one oxyd stone gets colored to &lsquo;<samp>OXYD_FAKE</samp>&rsquo; and does not participate in the
 
27118
stone opening procedure. But still you can set uneven number of oxyds of a given
 
27119
color if you do not use auto coloring but use explicit color values. Same thing
 
27120
happens if you delete a single oxyd during the running game. In both cases
 
27121
Enigma reacts with an error message by default. You can suppress this exception
 
27122
by setting <a href="#AllowSingleOxyds">AllowSingleOxyds</a> to <code>true</code>. In this case it is the authors
 
27123
responsibility to guarantee that the level can be solved.
 
27124
</p>
 
27125
<p>Usually oxyds are shuffled by a &lsquo;<samp>wo:shuffleOxyd()</samp>&rsquo; statement after setting
 
27126
of all oxyds. All &lsquo;<samp>CLOSED</samp>&rsquo; oxyds that are not explicitly excluded by the
 
27127
&lsquo;<samp>noshuffle</samp>&rsquo; attribute take place in shuffling. But you can define
 
27128
arbitrary rules to limit and influence the shuffling process to guarantee
 
27129
solvability and fairness (see section <a href="#shuffleOxyd">shuffleOxyd</a>).
 
27130
</p>
 
27131
<p>Oxyds are opened either by an actor hit, an additional laser beam, an
 
27132
<a href="#st_005fboulder">st_boulder</a> triggering, an <a href="#ot_005fcannonball">ot_cannonball</a> emitted from an
 
27133
<a href="#st_005fspitter">st_spitter</a> or a message call. A single opened oxyd is in the
 
27134
state &lsquo;<samp>OPEN</samp>&rsquo;. If a matching second oxyd is opened both switch to the state
 
27135
&lsquo;<samp>OXYDPAIR</samp>&rsquo;. Note that this state can be requested, but it can not be set
 
27136
directly.
 
27137
</p>
 
27138
<p>Single opened oxyds close on a not matching partner oxyd being opened and on
 
27139
&lsquo;<samp>close</samp>&rsquo; messages and state setting operations. But oxyds being part of
 
27140
an opened pair will not be closed this way.
 
27141
</p>
 
27142
<p>All oxyds including pairs will close on the &lsquo;<samp>closeall</samp>&rsquo; messages that is
 
27143
issued by <a href="#st_005fquake">st_quake</a> and oxyds colored &lsquo;<samp>OXYD_QUAKE</samp>&rsquo; on actor hits.
 
27144
</p>
 
27145
<p>Closed oxyds can have different looks. Their visual representation is defined
 
27146
by their &lsquo;<samp>flavor</samp>&rsquo;. Most flavors do hide the oxyd color in the closed state.
 
27147
Only flavor <code>&quot;e&quot;</code> starts with hidden color, but once opened returns to
 
27148
a closed image with a peep hole that lets the player still see the color.
 
27149
</p>
 
27150
<p>For each flavor exists an identical looking simple stone: &lsquo;<samp>st_fake_oxyda</samp>&rsquo;,
 
27151
&lsquo;<samp>st_fake_oxydb</samp>&rsquo;, &lsquo;<samp>st_fake_oxydc</samp>&rsquo;, &lsquo;<samp>st_fake_oxydd</samp>&rsquo;,
 
27152
&lsquo;<samp>st_fake_oxyde</samp>&rsquo; (see section <a href="#st_005ffake">st_fake</a>). If you like an identical looking pseudo
 
27153
stone that takes part in the oxyd shuffling you can use an oxyd of color
 
27154
&lsquo;<samp>OXYD_FAKE</samp>&rsquo;.
 
27155
</p>
 
27156
<p>During the game oxyds can be reshuffled. Just those oxyds that are still closed
 
27157
will take part in the new shuffle process. Oxyd shuffling rules will still be
 
27158
guaranteed for these partial in game reshuffles. It can be initiated either
 
27159
by a &lsquo;<samp>shuffle</samp>&rsquo; message that is send to any of the oxyd objects, or by
 
27160
usage of an oxyd of color &lsquo;<samp>OXYD_BOLD</samp>&rsquo;. If such a special oxyd is opened,
 
27161
e.g. by an actor hit, it shuffles all remaining oxyds including itself.
 
27162
</p>
 
27163
<p>At initialization an oxyd that is exposed to laser light will start in state
 
27164
&lsquo;<samp>CLOSED</samp>&rsquo;. As it is the gaming target it is a certain exception to the
 
27165
<a href="#Snapshot-Principle">Snapshot Principle</a>.
 
27166
</p>
 
27167
<p>An oxyd that is swapped in or out of a laser beam will act on the light change
 
27168
with proper actions.
 
27169
</p>
 
27170
<p>Every opened oxyd causes an action call. The action call for an opened oxyd pair
 
27171
occurs just once when the second oxyd starts opening, whereas the bold and quake
 
27172
oxyd will perform the action after completion of their task and animation. Thus
 
27173
you are allowed to kill quake and bold oxyds within their action as long as you
 
27174
properly set <a href="#safeaction">safeaction</a> to <code>true</code>.
 
27175
</p>
 
27176
<p>For a replacement of an opened pair of oxyd stones, what can be seen in the
 
27177
&quot;opal&quot; levels, the action call is not directly suitable, because the second
 
27178
oxyd did not yet show its matching color. Furtheron you would have to keep track
 
27179
of the oxyds to find the matching partner for the second oxyd. For this reason
 
27180
you can directly declare replacements that should be set when an oxyd pair
 
27181
is opened. The replacement takes place as soon as the second oxyd finishes the
 
27182
opening animation. Like the <a href="#st_005fsurprise">st_surprise</a> the oxyd allows you to set
 
27183
the &lsquo;<samp>selection</samp>&rsquo; attribute with tokens of strings. Every string needs either
 
27184
to be an <a href="#Object-Kind">Object Kind</a> or a tile key prefixed by an equal sign &lsquo;<samp>=</samp>&rsquo;.
 
27185
</p>
 
27186
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;n&quot;] = {&quot;st_nil&quot;}
 
27187
ti[&quot;g&quot;] = {&quot;st_granite&quot;}
 
27188
ti[&quot;s&quot;] = {&quot;st_oxyd_e&quot;, selection={&quot;=n&quot;, &quot;=g&quot;}}
 
27189
</pre></td></tr></table>
 
27190
 
 
27191
<p>The first token defines the replacement for the oxyd stone that has been opened
 
27192
first, the last token defines the replacement for the matching oxyd stone that
 
27193
has been opened afterwards. In case of a single token both oxyd stones are being
 
27194
replaced by equivalent stones.
 
27195
</p>
 
27196
<p>The tile declarations referenced by a key may even contain objects besides
 
27197
stone. But you should make rare and proper usage of this feature.
 
27198
</p>
 
27199
<p>The oxyd stone is killed by any replacement stone set to the grid position.
 
27200
If your selection does not resolve to a stone you may need to add <code>&quot;st_nil&quot;</code>
 
27201
to the replacement tile declaration.
 
27202
</p>
 
27203
<dl compact="compact">
 
27204
<dt> <b>Attributes:</b></dt>
 
27205
<dd>
 
27206
<dl compact="compact">
 
27207
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>CLOSED</code>, <code>OPEN</code>, <code>OXYDPAIR</code>; &nbsp;&nbsp;<i>default</i>: <code>CLOSED</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
27208
<dt> <b>flavor</b>, &nbsp;&nbsp;<i>values</i>: <code>&quot;a&quot;</code>, <code>&quot;b&quot;</code>, <code>&quot;c&quot;</code>, <code>&quot;d&quot;</code>, <code>&quot;e&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;b&quot;</code></dt>
 
27209
<dd><p>The flavor only affects the visual representation of the stone. Mainly the
 
27210
closed state and the way of opening differ in the following way:
 
27211
</p><dl compact="compact">
 
27212
<dt> <code>&quot;a&quot;</code> bronze, pyramid like stone that opens like a flower</dt>
 
27213
<dt> <code>&quot;b&quot;</code> black, flat stone that opens by a fade animation</dt>
 
27214
<dt> <code>&quot;c&quot;</code> blue, flat stone that opens by a concentric animation</dt>
 
27215
<dt> <code>&quot;d&quot;</code> dark blue, pyramid like stone that opens like a flower</dt>
 
27216
<dt> <code>&quot;e&quot;</code> black, flat stone that provides a peep hole after closing</dt>
 
27217
</dl>
 
27218
</dd>
 
27219
<dt> <b>oxydcolor</b>, &nbsp;&nbsp;<i>values</i>: <code>OXYD_AUTO</code>, <code>OXYD_FAKE</code>, <code>OXYD_QUAKE</code>, <code>OXYD_BOLD</code>, <code>OXYD_BLUE</code>, <code>OXYD_RED</code>, <code>OXYD_GREEN</code>, <code>OXYD_YELLOW</code>, <code>OXYD_CYAN</code>, <code>OXYD_PURPLE</code>, <code>OXYD_WHITE</code>, <code>OXYD_BLACK</code>, <code>OXYD_GRAY</code>, <code>OXYD_ORANGE</code>, <code>OXYD_PINE</code>, <code>OXYD_BROWN</code>; &nbsp;&nbsp;<i>default</i>: <code>OXYD_AUTO</code></dt>
 
27220
<dd><table>
 
27221
<tr><td width="8%"><img src="images/st_oxyd_colordots.png" alt="images/st_oxyd_colordots"></td><td width="17%"><code>OXYD_BLUE</code></td><td width="8%"><img src="images/st_oxyd_colordots_2.png" alt="images/st_oxyd_colordots_2"></td><td width="17%"><code>OXYD_RED</code></td><td width="8%"><img src="images/st_oxyd_colordots_3.png" alt="images/st_oxyd_colordots_3"></td><td width="17%"><code>OXYD_GREEN</code></td><td width="8%"><img src="images/st_oxyd_colordots_4.png" alt="images/st_oxyd_colordots_4"></td><td width="17%"><code>OXYD_YELLOW</code></td></tr>
 
27222
<tr><td width="8%"><img src="images/st_oxyd_colordots_b.png" alt="images/st_oxyd_colordots_b"></td><td width="17%"><code>OXYD_CYAN</code></td><td width="8%"><img src="images/st_oxyd_colordots_b2.png" alt="images/st_oxyd_colordots_b2"></td><td width="17%"><code>OXYD_PURPLE</code></td><td width="8%"><img src="images/st_oxyd_colordots_b3.png" alt="images/st_oxyd_colordots_b3"></td><td width="17%"><code>OXYD_WHITE</code></td><td width="8%"><img src="images/st_oxyd_colordots_b4.png" alt="images/st_oxyd_colordots_b4"></td><td width="17%"><code>OXYD_BLACK</code></td></tr>
 
27223
<tr><td width="8%"><img src="images/st_oxyd_colordots_c.png" alt="images/st_oxyd_colordots_c"></td><td width="17%"><code>OXYD_GRAY</code></td><td width="8%"><img src="images/st_oxyd_colordots_c2.png" alt="images/st_oxyd_colordots_c2"></td><td width="17%"><code>OXYD_ORANGE</code></td><td width="8%"><img src="images/st_oxyd_colordots_c3.png" alt="images/st_oxyd_colordots_c3"></td><td width="17%"><code>OXYD_PINE</code></td><td width="8%"><img src="images/st_oxyd_colordots_c4.png" alt="images/st_oxyd_colordots_c4"></td><td width="17%"><code>OXYD_BROWN</code></td></tr>
 
27224
<tr><td width="8%"><img src="images/st_oxyd_colordots_d3.png" alt="images/st_oxyd_colordots_d3"></td><td width="17%"><code>OXYD_BOLD</code></td><td width="8%"><img src="images/st_oxyd_colordots_d4.png" alt="images/st_oxyd_colordots_d4"></td><td width="17%"><code>OXYD_QUAKE</code></td></tr>
 
27225
</table>
 
27226
</dd>
 
27227
<dt> <b>noshuffle</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
27228
<dt> <b>static</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
27229
<dd><p>Static oxyds are neither swappable nor pullable.
 
27230
</p></dd>
 
27231
<dt> <b>selection</b>, &nbsp;&nbsp;<i>values</i>: tokens of stone kinds and tile keys; &nbsp;&nbsp;<i>default</i>: no replacement</dt>
 
27232
</dl>
 
27233
 
 
27234
</dd>
 
27235
<dt> <b>Messages:</b></dt>
 
27236
<dd>
 
27237
<dl compact="compact">
 
27238
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
27239
<dd><p>Try open at value &lsquo;<samp>1</samp>&rsquo;, and close at values &lsquo;<samp>0</samp>&rsquo;.
 
27240
</p></dd>
 
27241
<dt> <b>open</b> &nbsp;&nbsp;See section <a href="#open">open</a></dt>
 
27242
<dt> <b>close</b> &nbsp;&nbsp;See section <a href="#close">close</a></dt>
 
27243
<dt> <b>closeall</b></dt>
 
27244
<dd><p>Closes all opened oxyds if send to any object instance.
 
27245
</p></dd>
 
27246
<dt> <b>peepall</b></dt>
 
27247
<dd><p>All closed oxyds of flavor <code>&quot;e&quot;</code> will show a peep hole if this message is
 
27248
sent to any oxyd object instance.
 
27249
</p></dd>
 
27250
<dt> <b>shuffle</b></dt>
 
27251
<dd><p>Reshuffles all closed oxyds if send to any object instance.
 
27252
</p></dd>
 
27253
</dl>
 
27254
 
 
27255
</dd>
 
27256
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
27257
<dd><p>Whenever a <code>CLOSED</code> oxyd gets opened an action with value <code>true</code> is
 
27258
performed. The action is performed directly after the oxyds own reaction on being
 
27259
opened, like checking gaming ending conditions, reshuffling or closing all oxyds,
 
27260
did finish. Additionally an action with value <code>false</code> is performed after
 
27261
an oxyd changes from an open state to <code>CLOSED</code>. Note that no action is
 
27262
performed on state changes form <code>OPEN</code> to <code>OXYDPAIR</code>.
 
27263
</p>
 
27264
</dd>
 
27265
<dt> <b>Variants:</b></dt>
 
27266
<dd>
 
27267
<dl compact="compact">
 
27268
<dt> <img src="images/st_oxydb.png" alt="images/st_oxydb"><p> <b>st_oxyd</b>: flavor = <code>&quot;b&quot;</code>
 
27269
</p></dt>
 
27270
<dt> <img src="images/st_oxyda.png" alt="images/st_oxyda"><p> <b>st_oxyd_a</b>: flavor = <code>&quot;a&quot;</code>
 
27271
</p></dt>
 
27272
<dt> <img src="images/st_oxydb.png" alt="images/st_oxydb"><p> <b>st_oxyd_b</b>: flavor = <code>&quot;b&quot;</code>
 
27273
</p></dt>
 
27274
<dt> <img src="images/st_oxydc.png" alt="images/st_oxydc"><p> <b>st_oxyd_c</b>: flavor = <code>&quot;c&quot;</code>
 
27275
</p></dt>
 
27276
<dt> <img src="images/st_oxydd.png" alt="images/st_oxydd"><p> <b>st_oxyd_d</b>: flavor = <code>&quot;d&quot;</code>
 
27277
</p></dt>
 
27278
<dt> <img src="images/st_oxyde.png" alt="images/st_oxyde"><p> <b>st_oxyd_e</b>: flavor = <code>&quot;e&quot;</code>
 
27279
</p></dt>
 
27280
</dl>
 
27281
 
 
27282
</dd>
 
27283
</dl>
 
27284
 
 
27285
<hr size="6">
 
27286
<a name="st_005fpassage"></a>
 
27287
<table cellpadding="1" cellspacing="1" border="0">
 
27288
<tr><td valign="middle" align="left">[<a href="#st_005foxyd" title="Previous section in reading order"> &lt; </a>]</td>
 
27289
<td valign="middle" align="left">[<a href="#st_005fplaster" title="Next section in reading order"> &gt; </a>]</td>
 
27290
<td valign="middle" align="left"> &nbsp; </td>
 
27291
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
27292
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
27293
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
27294
<td valign="middle" align="left"> &nbsp; </td>
 
27295
<td valign="middle" align="left"> &nbsp; </td>
 
27296
<td valign="middle" align="left"> &nbsp; </td>
 
27297
<td valign="middle" align="left"> &nbsp; </td>
 
27298
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
27299
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
27300
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
27301
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
27302
</tr></table>
 
27303
<a name="st_005fpassage-1"></a>
 
27304
<h3 class="subsection">9.5.43 st_passage</h3>
 
27305
<a name="index-st_005fpassage"></a>
 
27306
 
 
27307
<p>A black or white colored stone of different shapes that lets pass only actors of
 
27308
matching color.
 
27309
</p>
 
27310
<p>The shape is described by the attribute &lsquo;<samp>flavor</samp>&rsquo;. The shape does not
 
27311
affect the behaviour, but may be important for the visibility of actors and
 
27312
items beneath.
 
27313
</p>
 
27314
<p>Passage stones react on &lsquo;<samp>signal</samp>&rsquo; and &lsquo;<samp>toggle</samp>&rsquo; messages and
 
27315
<a href="#st_005fboulder">st_boulder</a> arriving on one of its sides. In both cases the passage stone
 
27316
recolors to the opposite color. In case of a boulder the recoloring is of a
 
27317
quite short period, as this stone recolors the passage twice. The period in
 
27318
between is long enough for an actor to pass or to redirect the boulder before
 
27319
sending the second recoloring message.
 
27320
</p>
 
27321
<dl compact="compact">
 
27322
<dt> <b>Attributes:</b></dt>
 
27323
<dd>
 
27324
<dl compact="compact">
 
27325
<dt> <b>color</b> &nbsp;&nbsp;<i>values</i>: <code>BLACK</code>, <code>WHITE</code>; &nbsp;&nbsp;<i>default</i>: <code>BLACK</code></dt>
 
27326
<dd><p>The color of the passage that determines which actors can pass.
 
27327
</p></dd>
 
27328
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>BLACK</code>, <code>WHITE</code>; &nbsp;&nbsp;<i>default</i>: <code>BLACK</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
27329
<dd><p>The state is a synonym for color.
 
27330
</p></dd>
 
27331
<dt> <b>flavor</b> &nbsp;&nbsp;<i>values</i>: <code>&quot;square&quot;</code>, <code>&quot;slash&quot;</code>, <code>&quot;cross&quot;</code>, <code>&quot;frame&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;square&quot;</code></dt>
 
27332
<dd><p>The passage shape.
 
27333
</p></dd>
 
27334
</dl>
 
27335
 
 
27336
</dd>
 
27337
<dt> <b>Messages:</b></dt>
 
27338
<dd><dl compact="compact">
 
27339
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
27340
<dd><p>Switch color of the passage.
 
27341
</p></dd>
 
27342
</dl>
 
27343
 
 
27344
</dd>
 
27345
<dt> <b>Action:</b> none</dt>
 
27346
<dt> <b>Variants:</b></dt>
 
27347
<dd>
 
27348
<dl compact="compact">
 
27349
<dt> <img src="images/st_passage_black_square.png" alt="images/st_passage_black_square"><p> <b>st_passage</b>: color = <code>BLACK</code>, flavor = <code>&quot;square&quot;</code>
 
27350
</p></dt>
 
27351
<dt> <img src="images/st_passage_black_square.png" alt="images/st_passage_black_square"><p> <b>st_passage_black</b>: color = <code>BLACK</code>, flavor = <code>&quot;square&quot;</code>
 
27352
</p></dt>
 
27353
<dt> <img src="images/st_passage_black_slash.png" alt="images/st_passage_black_slash"><p> <b>st_passage_black</b>: color = <code>BLACK</code>, flavor = <code>&quot;slash&quot;</code>
 
27354
</p></dt>
 
27355
<dt> <img src="images/st_passage_black_cross.png" alt="images/st_passage_black_cross"><p> <b>st_passage_black</b>: color = <code>BLACK</code> - flavor = <code>&quot;cross&quot;</code>
 
27356
</p></dt>
 
27357
<dt> <img src="images/st_passage_black_frame.png" alt="images/st_passage_black_frame"><p> <b>st_passage_black</b>: color = <code>BLACK</code> - flavor = <code>&quot;frame&quot;</code>
 
27358
</p></dt>
 
27359
<dt> <img src="images/st_passage_white_square.png" alt="images/st_passage_white_square"><p> <b>st_passage_white</b>: color = <code>WHITE</code>, flavor = <code>&quot;square&quot;</code>
 
27360
</p></dt>
 
27361
<dt> <img src="images/st_passage_white_slash.png" alt="images/st_passage_white_slash"><p> <b>st_passage_white</b>: color = <code>WHITE</code> - flavor = <code>&quot;slash&quot;</code>
 
27362
</p></dt>
 
27363
<dt> <img src="images/st_passage_white_cross.png" alt="images/st_passage_white_cross"><p> <b>st_passage_white</b>: color = <code>WHITE</code> - flavor = <code>&quot;cross&quot;</code>
 
27364
</p></dt>
 
27365
<dt> <img src="images/st_passage_white_frame.png" alt="images/st_passage_white_frame"><p> <b>st_passage_white</b>: color = <code>WHITE</code> - flavor = <code>&quot;frame&quot;</code>
 
27366
</p></dt>
 
27367
</dl>
 
27368
 
 
27369
</dd>
 
27370
</dl>
 
27371
 
 
27372
<hr size="6">
 
27373
<a name="st_005fplaster"></a>
 
27374
<table cellpadding="1" cellspacing="1" border="0">
 
27375
<tr><td valign="middle" align="left">[<a href="#st_005fpassage" title="Previous section in reading order"> &lt; </a>]</td>
 
27376
<td valign="middle" align="left">[<a href="#st_005fplop" title="Next section in reading order"> &gt; </a>]</td>
 
27377
<td valign="middle" align="left"> &nbsp; </td>
 
27378
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
27379
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
27380
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
27381
<td valign="middle" align="left"> &nbsp; </td>
 
27382
<td valign="middle" align="left"> &nbsp; </td>
 
27383
<td valign="middle" align="left"> &nbsp; </td>
 
27384
<td valign="middle" align="left"> &nbsp; </td>
 
27385
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
27386
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
27387
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
27388
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
27389
</tr></table>
 
27390
<a name="st_005fplaster-1"></a>
 
27391
<h3 class="subsection">9.5.44 st_plaster</h3>
 
27392
<a name="index-st_005fplaster"></a>
 
27393
 
 
27394
<p>A sculptured gypsum stone that exists in various variations of basic stone
 
27395
attributes.
 
27396
</p>
 
27397
<p>Unlike the similar looking <a href="#st_005fflat">st_flat</a> has no special features and behaves
 
27398
like a standard stone.
 
27399
</p>
 
27400
<p>But it provides breakable variants. Like <a href="#st_005fbreak">st_break</a> it is breakable by
 
27401
laser light, neighboring ignitions like those caused by an exploding
 
27402
<a href="#it_005fdynamite">it_dynamite</a> on a direct neighboring position or an exploding black
 
27403
<a href="#it_005fbomb">it_bomb</a> on a diagonal neighboring position. It breaks on actor hits with
 
27404
a revealed <a href="#it_005fhammer">it_hammer</a>, too. But unlike <a href="#st_005fbreak">st_break</a> it offers a
 
27405
variant that is breakable and movable at the same time. Of course a possible
 
27406
break supersedes a possible push condition.
 
27407
</p>
 
27408
<dl compact="compact">
 
27409
<dt> <b>Attributes:</b></dt>
 
27410
<dd>
 
27411
<dl compact="compact">
 
27412
<dt> <b>hollow</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: read only &nbsp;&nbsp;See section <a href="#hollow">hollow</a></dt>
 
27413
<dt> <b>movable</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: read only &nbsp;&nbsp;See section <a href="#movable">movable</a></dt>
 
27414
<dt> <b>breakable</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: read only &nbsp;&nbsp;See section <a href="#breakable">breakable</a></dt>
 
27415
</dl>
 
27416
 
 
27417
</dd>
 
27418
<dt> <b>Messages:</b> none</dt>
 
27419
<dt> <b>Action:</b> none</dt>
 
27420
<dt> <b>Variants:</b></dt>
 
27421
<dd>
 
27422
<dl compact="compact">
 
27423
<dt> <img src="images/st_plaster.png" alt="images/st_plaster"><p> <b>st_plaster</b>:
 
27424
</p></dt>
 
27425
<dt> <img src="images/st_plaster.png" alt="images/st_plaster"><p> <b>st_plaster_hollow</b>: hollow=<code>true</code>
 
27426
</p></dt>
 
27427
<dt> <img src="images/st_plaster.png" alt="images/st_plaster"><p> <b>st_plaster_movable</b>: movable=<code>&quot;true&quot;</code>
 
27428
</p></dt>
 
27429
<dt> <img src="images/st_plaster.png" alt="images/st_plaster"><p> <b>st_plaster_breakable</b>: breakable=<code>&quot;true&quot;</code>
 
27430
</p></dt>
 
27431
<dt> <img src="images/st_plaster.png" alt="images/st_plaster"><p> <b>st_plaster_movebreakable</b>: movable=<code>&quot;true&quot;</code>, breakable=<code>&quot;true&quot;</code>
 
27432
</p></dt>
 
27433
</dl>
 
27434
 
 
27435
</dd>
 
27436
</dl>
 
27437
 
 
27438
<hr size="6">
 
27439
<a name="st_005fplop"></a>
 
27440
<table cellpadding="1" cellspacing="1" border="0">
 
27441
<tr><td valign="middle" align="left">[<a href="#st_005fplaster" title="Previous section in reading order"> &lt; </a>]</td>
 
27442
<td valign="middle" align="left">[<a href="#st_005fpolarswitch" title="Next section in reading order"> &gt; </a>]</td>
 
27443
<td valign="middle" align="left"> &nbsp; </td>
 
27444
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
27445
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
27446
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
27447
<td valign="middle" align="left"> &nbsp; </td>
 
27448
<td valign="middle" align="left"> &nbsp; </td>
 
27449
<td valign="middle" align="left"> &nbsp; </td>
 
27450
<td valign="middle" align="left"> &nbsp; </td>
 
27451
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
27452
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
27453
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
27454
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
27455
</tr></table>
 
27456
<a name="st_005fplop-1"></a>
 
27457
<h3 class="subsection">9.5.45 st_plop</h3>
 
27458
<a name="index-st_005fplop"></a>
 
27459
 
 
27460
<p>A movable stone that ceases to exist with a plop.
 
27461
</p>
 
27462
<p>This stone behaves like any other standard movable stone. But unlike other
 
27463
stones it can cease under some conditions. And if it ceases it does it with
 
27464
a plop and some sparkles.
 
27465
</p>
 
27466
<p>Currently there is just one flavor called <code>&quot;slate&quot;</code> according to its
 
27467
dark blue grey color. It falls and ceases to exist if pushed on <a href="#fl_005fwater">fl_water</a>,
 
27468
<a href="#fl_005fabyss">fl_abyss</a> or <a href="#fl_005fswamp">fl_swamp</a>. Unlike <a href="#st_005fbox">st_box</a> it does not build a floor.
 
27469
</p>
 
27470
<dl compact="compact">
 
27471
<dt> <b>Variants:</b></dt>
 
27472
<dd><dl compact="compact">
 
27473
<dt> <img src="images/st_plop_slate.png" alt="images/st_plop_slate"><p> <b>st_plop</b>
 
27474
</p></dt>
 
27475
<dt> <img src="images/st_plop_slate.png" alt="images/st_plop_slate"><p> <b>st_plop_slate</b>
 
27476
</p></dt>
 
27477
</dl>
 
27478
</dd>
 
27479
</dl>
 
27480
 
 
27481
<hr size="6">
 
27482
<a name="st_005fpolarswitch"></a>
 
27483
<table cellpadding="1" cellspacing="1" border="0">
 
27484
<tr><td valign="middle" align="left">[<a href="#st_005fplop" title="Previous section in reading order"> &lt; </a>]</td>
 
27485
<td valign="middle" align="left">[<a href="#st_005fportal" title="Next section in reading order"> &gt; </a>]</td>
 
27486
<td valign="middle" align="left"> &nbsp; </td>
 
27487
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
27488
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
27489
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
27490
<td valign="middle" align="left"> &nbsp; </td>
 
27491
<td valign="middle" align="left"> &nbsp; </td>
 
27492
<td valign="middle" align="left"> &nbsp; </td>
 
27493
<td valign="middle" align="left"> &nbsp; </td>
 
27494
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
27495
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
27496
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
27497
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
27498
</tr></table>
 
27499
<a name="st_005fpolarswitch-1"></a>
 
27500
<h3 class="subsection">9.5.46 st_polarswitch</h3>
 
27501
<a name="index-st_005fpolarswitch"></a>
 
27502
 
 
27503
<p>A special on/off switch that toggles its state on actors hitting the stone.
 
27504
Of course other objects can send messages on actions to make this switch turning.
 
27505
</p>
 
27506
<p>The main purpose of this switch is its ability to switch crossing laser beams.
 
27507
While the switch is not transparent in its default off state, it switches to
 
27508
a transparent on state.
 
27509
</p>
 
27510
<p>The switch looks like an <a href="#st_005fdarkglass">st_darkglass</a> in its opaque off state and like
 
27511
an <a href="#st_005flightglass">st_lightglass</a> in its transparent on state. Like other
 
27512
<a href="#Transparent-Stones">Transparent Stones</a> it is passable for invisible actors.
 
27513
</p>
 
27514
<dl compact="compact">
 
27515
<dt> <b>Attributes:</b></dt>
 
27516
<dd>
 
27517
<dl compact="compact">
 
27518
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>OFF</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
27519
<dd><p>An &lsquo;<samp>OFF</samp>&rsquo; state is not transparent, an &lsquo;<samp>ON</samp>&rsquo; state is transparent.
 
27520
</p></dd>
 
27521
</dl>
 
27522
 
 
27523
</dd>
 
27524
<dt> <b>Messages:</b></dt>
 
27525
<dd>
 
27526
<dl compact="compact">
 
27527
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
27528
<dd><p>Switches on at value &lsquo;<samp>1</samp>&rsquo;, and off at values &lsquo;<samp>0</samp>&rsquo;.
 
27529
</p></dd>
 
27530
<dt> <b>on</b> &nbsp;&nbsp;See section <a href="#on">on</a></dt>
 
27531
<dt> <b>off</b> &nbsp;&nbsp;See section <a href="#off">off</a></dt>
 
27532
</dl>
 
27533
 
 
27534
</dd>
 
27535
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
27536
<dt> <b>Variants:</b></dt>
 
27537
<dd><dl compact="compact">
 
27538
<dt> <img src="images/st_darkglass.png" alt="images/st_darkglass"><p> <b>st_polarswitch</b>: state = <code>OFF</code>
 
27539
</p></dt>
 
27540
<dt> <img src="images/st_lightglass.png" alt="images/st_lightglass"><p> <b>st_polarswitch</b>: state = <code>ON</code>
 
27541
</p></dt>
 
27542
</dl>
 
27543
</dd>
 
27544
</dl>
 
27545
 
 
27546
<hr size="6">
 
27547
<a name="st_005fportal"></a>
 
27548
<table cellpadding="1" cellspacing="1" border="0">
 
27549
<tr><td valign="middle" align="left">[<a href="#st_005fpolarswitch" title="Previous section in reading order"> &lt; </a>]</td>
 
27550
<td valign="middle" align="left">[<a href="#st_005fpull" title="Next section in reading order"> &gt; </a>]</td>
 
27551
<td valign="middle" align="left"> &nbsp; </td>
 
27552
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
27553
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
27554
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
27555
<td valign="middle" align="left"> &nbsp; </td>
 
27556
<td valign="middle" align="left"> &nbsp; </td>
 
27557
<td valign="middle" align="left"> &nbsp; </td>
 
27558
<td valign="middle" align="left"> &nbsp; </td>
 
27559
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
27560
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
27561
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
27562
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
27563
</tr></table>
 
27564
<a name="st_005fportal-1"></a>
 
27565
<h3 class="subsection">9.5.47 st_portal</h3>
 
27566
<a name="index-st_005fportal"></a>
 
27567
 
 
27568
<p>A gate that is just passable for some special kind of actors. Like
 
27569
<a href="#st_005fgrate">st_grate</a> it uses metallic frames but it does not let pass actors of all
 
27570
kinds.
 
27571
</p>
 
27572
<p>The portal stone lets just pass actors of the kind given by its attribute
 
27573
&lsquo;<samp>flavor</samp>&rsquo;.
 
27574
</p>
 
27575
<p>The flavor <code>&quot;horse&quot;</code> lets just pass an <a href="#ac_005fhorse">ac_horse</a>.
 
27576
</p>
 
27577
<p>The flavor <code>&quot;pearl&quot;</code> lets just pass an <a href="#ac_005fpearl">ac_pearl</a>.
 
27578
</p>
 
27579
 
 
27580
<dl compact="compact">
 
27581
<dt> <b>Attributes:</b></dt>
 
27582
<dd>
 
27583
<dl compact="compact">
 
27584
<dt> <b>flavor</b> &nbsp;&nbsp;<i>values</i>: <code>&quot;horse&quot;</code>, <code>&quot;pearl&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;horse&quot;</code>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
27585
</dl>
 
27586
 
 
27587
</dd>
 
27588
<dt> <b>Messages:</b> none</dt>
 
27589
<dt> <b>Action:</b> none</dt>
 
27590
<dt> <b>Variants:</b></dt>
 
27591
<dd><dl compact="compact">
 
27592
<dt> <img src="images/st_portal_horse.png" alt="images/st_portal_horse"><p> <b>st_portal</b>: flavor=<code>&quot;horse&quot;</code>
 
27593
</p></dt>
 
27594
<dt> <img src="images/st_portal_horse.png" alt="images/st_portal_horse"><p> <b>st_portal_horse</b>: flavor=<code>&quot;horse&quot;</code>
 
27595
</p></dt>
 
27596
<dt> <img src="images/st_portal_horse.png" alt="images/st_portal_horse"><p> <b>st_portal_pearl</b>: flavor=<code>&quot;pearl&quot;</code>
 
27597
</p></dt>
 
27598
</dl>
 
27599
 
 
27600
</dd>
 
27601
</dl>
 
27602
 
 
27603
<hr size="6">
 
27604
<a name="st_005fpull"></a>
 
27605
<table cellpadding="1" cellspacing="1" border="0">
 
27606
<tr><td valign="middle" align="left">[<a href="#st_005fportal" title="Previous section in reading order"> &lt; </a>]</td>
 
27607
<td valign="middle" align="left">[<a href="#st_005fpuzzle" title="Next section in reading order"> &gt; </a>]</td>
 
27608
<td valign="middle" align="left"> &nbsp; </td>
 
27609
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
27610
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
27611
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
27612
<td valign="middle" align="left"> &nbsp; </td>
 
27613
<td valign="middle" align="left"> &nbsp; </td>
 
27614
<td valign="middle" align="left"> &nbsp; </td>
 
27615
<td valign="middle" align="left"> &nbsp; </td>
 
27616
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
27617
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
27618
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
27619
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
27620
</tr></table>
 
27621
<a name="st_005fpull-1"></a>
 
27622
<h3 class="subsection">9.5.48 st_pull</h3>
 
27623
<a name="index-st_005fpull"></a>
 
27624
 
 
27625
<p>A pull stone changes its position on an initiating impulse into the reverse
 
27626
direction of the impulse. Thus it can not be pushed like other movable stones.
 
27627
But when an actor hits a pull stone it acts like being pulled. If another stone
 
27628
is located on the destination grid, both stones will exchange their positions.
 
27629
The exchange will also be performed when the pull stones receives a stone impulse
 
27630
via an <a href="#ot_005fwire">ot_wire</a> or a neighboring <a href="#st_005fstoneimpulse">st_stoneimpulse</a>. A similar stone is
 
27631
the <a href="#st_005fswap">st_swap</a>, that exchanges with stones in the forward direction of the
 
27632
initiating impulse.
 
27633
</p>
 
27634
<p>Actors on the destination grid, including an initiating hitting actor, are
 
27635
pulled through it, not caged under them. The actors reappear on the old grid
 
27636
position of the pull stone with their old velocities.
 
27637
</p>
 
27638
<p>The pull stone is laser light transparent like other glass like stones.
 
27639
</p>
 
27640
<p>An existing stone exchange partner is not mandatory. But if a stone is located
 
27641
on the destination position of a pull stone some conditions must be met for a
 
27642
stone exchange. Connected <a href="#Cluster-Stones">Cluster Stones</a> building a block, <a href="#st_005foxyd">st_oxyd</a>
 
27643
configured as being &lsquo;<samp>static</samp>&rsquo;, and another <a href="#st_005fswap">st_swap</a> or pull stone that
 
27644
is currently engaged in an own stone exchange operation will refuse swapping.
 
27645
</p>
 
27646
<p>Stone exchanges will not cause item hit transformations as caused by push moved
 
27647
stones. But the exchanged stones will react on the new floor, e.g. causing
 
27648
<a href="#st_005fbox">st_box</a> to sink into water.
 
27649
</p>
 
27650
<p>Further on the exchange is atomic concerning <a href="#it_005ftrigger">it_trigger</a> detection and
 
27651
laser light transparency. If the exchanged stone is not transparent, the light
 
27652
will pass on every time slice just on one of the two grids. If the exchanged
 
27653
stone is floating and does not press <a href="#it_005ftrigger">it_trigger</a>s, the pull stone will
 
27654
press just one trigger, releasing the trigger of the old position before
 
27655
pressing the new position&rsquo;s trigger like any other stone being pushed from one
 
27656
grid to the next.
 
27657
</p>
 
27658
<dl compact="compact">
 
27659
<dt> <b>Attributes:</b> none</dt>
 
27660
<dt> <b>Messages:</b> none</dt>
 
27661
<dt> <b>Action:</b> none</dt>
 
27662
<dt> <b>Variants:</b></dt>
 
27663
<dd><dl compact="compact">
 
27664
<dt> <img src="images/st_pull.png" alt="images/st_pull"><p> <b>st_pull</b>
 
27665
</p></dt>
 
27666
</dl>
 
27667
</dd>
 
27668
</dl>
 
27669
 
 
27670
<hr size="6">
 
27671
<a name="st_005fpuzzle"></a>
 
27672
<table cellpadding="1" cellspacing="1" border="0">
 
27673
<tr><td valign="middle" align="left">[<a href="#st_005fpull" title="Previous section in reading order"> &lt; </a>]</td>
 
27674
<td valign="middle" align="left">[<a href="#st_005fquake" title="Next section in reading order"> &gt; </a>]</td>
 
27675
<td valign="middle" align="left"> &nbsp; </td>
 
27676
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
27677
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
27678
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
27679
<td valign="middle" align="left"> &nbsp; </td>
 
27680
<td valign="middle" align="left"> &nbsp; </td>
 
27681
<td valign="middle" align="left"> &nbsp; </td>
 
27682
<td valign="middle" align="left"> &nbsp; </td>
 
27683
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
27684
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
27685
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
27686
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
27687
</tr></table>
 
27688
<a name="st_005fpuzzle-1"></a>
 
27689
<h3 class="subsection">9.5.49 st_puzzle</h3>
 
27690
<a name="index-st_005fpuzzle"></a>
 
27691
 
 
27692
<p>Puzzle stones can construct large clusters of stones, that move together and can
 
27693
be destroyed together. There are two colors, blue and yellow puzzle stones,
 
27694
which behave different. Each of these color families again consists of 16
 
27695
variants that differ in the location of sockets to which neighboring puzzle
 
27696
stones can be attached. Further on there are hollow variants of all colors and
 
27697
connections.
 
27698
</p>
 
27699
<p>A cluster is complete as soon as all sockets of all stones are connected to
 
27700
matching sockets of adjacent puzzle stones of the same color, but independent
 
27701
of being hollow or solid. A cluster fragment still has at least one stone with
 
27702
an open stub. A single puzzle stone with no open sockets counts as a complete
 
27703
cluster.
 
27704
</p>
 
27705
<p>Puzzle stone offer manifold features. A complete cluster can explode and
 
27706
dissolve. Cluster fragments and complete clusters can move and will sink on some
 
27707
floors building bridges. Rows and columns of adjacent, identical colored puzzle
 
27708
stones, connected and unconnected ones, can shift rotate thus allowing the
 
27709
player to rearrange and sort the puzzle.
 
27710
</p>
 
27711
<p>Blue puzzle stones can be moved as single stones, cluster fragments and
 
27712
complete clusters by an actor pushing or a stone impulse by <a href="#ot_005fwire">ot_wire</a> or
 
27713
<a href="#st_005fstoneimpulse">st_stoneimpulse</a>. Of course all new positions of the moving puzzle must be
 
27714
free of other stones. If all new positions are <a href="#fl_005fwater">fl_water</a> the blue puzzle
 
27715
will sink and leave an object of the kind given by the global attribute
 
27716
<a href="#FallenPuzzle">FallenPuzzle</a>. The replacement defaults to <a href="#fl_005fgray">fl_gray</a> building a bridge
 
27717
over the water. The user can prohibit the sinking of the puzzle into water by
 
27718
pushing with a revealed <a href="#it_005fmagicwand">it_magicwand</a>. If all new positions are
 
27719
<a href="#fl_005fabyss">fl_abyss</a> just complete blue clusters will sink and build a bridge. If all
 
27720
new positions are either abyss or water with at least one abyss floor just
 
27721
complete blue clusters will sink. Note that puzzles just sink on moves. Moving
 
27722
a blue fragment besides another fragment on abyss so that both fragments build
 
27723
a complete cluster will not sink the new cluster. It will sink as a whole on the
 
27724
next move. If two or more stones of a cluster receive wire impulses originating
 
27725
from a single event, the whole cluster will move multiple times. But it will
 
27726
sink on the first opportunity.
 
27727
</p>
 
27728
<p>Just single unconnected yellow puzzle stones can be moved by actors. They will
 
27729
neither sink in <a href="#fl_005fwater">fl_water</a> nor fall in <a href="#fl_005fabyss">fl_abyss</a>. Any yellow cluster of
 
27730
two or more stones can not be moved by actor hits. But on receiving stone
 
27731
impulses they move like blue puzzles.
 
27732
</p>
 
27733
<p>All puzzle stone moves do not cause standard item transformations, like
 
27734
<a href="#it_005fcoin">it_coin</a> value changes, <a href="#it_005fbomb">it_bomb</a> explosions, etc. But they all are not
 
27735
floating and thus do press <a href="#it_005ftrigger">it_trigger</a>s and close <a href="#fl_005fbridge">fl_bridge</a>s.
 
27736
</p>
 
27737
<p>Hollow puzzle stones let pass actors, either moving on the floor or jumping,
 
27738
and laser light without any interaction, too.
 
27739
</p>
 
27740
<p>Complete clusters can explode and dissolve. A precondition is that the cluster
 
27741
is isolated from any adjacent, same colored further puzzle stone. Such clusters
 
27742
explode on an additional new laser beam hitting one of its solid stones. Yellow
 
27743
ones explode on any actor hit. Blue ones only on actor hits with a revealed
 
27744
<a href="#it_005fmagicwand">it_magicwand</a>. Additionally complete clusters will explode when an
 
27745
<a href="#ot_005fcannonball">ot_cannonball</a> emitted by an <a href="#st_005fspitter">st_spitter</a> happens to fall on top of
 
27746
one of the puzzle stones of the cluster.
 
27747
</p>
 
27748
<p>Exploding puzzles will stay in place and do not interact any more. The exploding
 
27749
stones are lethal for actors hitting them, but an actor can start an explosion
 
27750
beneath a hollow puzzle stone and stay beneath this hollow exploding stone
 
27751
without harm until the puzzle dissolved.
 
27752
</p>
 
27753
<p>Puzzles can be rearranged by column and row rotations. Blue puzzle react just
 
27754
on actor hits with a revealed wand, yellow ones on any actor hit. All colors
 
27755
do rotate on laser light hits. All rotations can originate only on a solid
 
27756
puzzle stone. All subsequent puzzle stones of the same color will shift away
 
27757
with the last puzzle of the line returning to the origin. This operation is
 
27758
called <code>&quot;push_rotate&quot;</code> and can be initiated by a message, too.
 
27759
</p>
 
27760
<p>In case of actor hits possible explosions precede moves, which precede rotation
 
27761
operations. Thus you need to touch a blue puzzle row carefully with a revealed
 
27762
wand if the row is part of a movable cluster fragment. If the speed is
 
27763
sufficient for a hit operation, the cluster will move instead of an expected
 
27764
row rotation. An actor hit on a blue puzzle that did neither cause an explosion
 
27765
or a rotation will be propagated by an <a href="#ot_005fwire">ot_wire</a> connected to this puzzle
 
27766
stone. Hits on yellow puzzle stones will never propagate to <a href="#ot_005fwire">ot_wire</a>
 
27767
connected other stones.
 
27768
</p>
 
27769
<p>Like <a href="#Cluster-Stones">Cluster Stones</a> puzzles accept a &lsquo;<samp>cluster</samp>&rsquo; attribute. A new set
 
27770
puzzle stone autoconnects to adjacent, same colored puzzle stones belonging to
 
27771
the same cluster. But once set the puzzle stone will of course not change its
 
27772
connections on subsequent moves or rotations. But as a level author you need to
 
27773
think of possible puzzle stones pushed to positions neighboring an area on which
 
27774
a puzzle might be set during the running game. The new set stones may
 
27775
autoconnect to such unexpected stones if the color and cluster number fits.
 
27776
</p>
 
27777
<p>The resolver <a href="#res_002epuzzle">res.puzzle</a> provides easy methods to set and shuffle puzzles.
 
27778
The attributes &lsquo;<samp>algorithm</samp>&rsquo; and &lsquo;<samp>intensity</samp>&rsquo; are used by the resolver
 
27779
only.
 
27780
</p>
 
27781
<p>If you need to shuffle a puzzle of your own, you can make use of the messages
 
27782
&lsquo;<samp>get_adjacents</samp>&rsquo; which returns the group of color matching, adjacent puzzle
 
27783
stones, and &lsquo;<samp>pull_rotate</samp>&rsquo; which is the exact inversion of a push rotation.
 
27784
</p>
 
27785
<dl compact="compact">
 
27786
<dt> <b>Attributes:</b></dt>
 
27787
<dt> <b>color</b> &nbsp;&nbsp;<i>values</i>: <code>BLUE</code>, <code>YELLOW</code>; &nbsp;&nbsp;<i>default</i>: <code>BLUE</code></dt>
 
27788
<dd><p>The color of the puzzle stubs. Adjacent puzzle stones of matching colors and
 
27789
connections cluster to fragments.
 
27790
</p>
 
27791
</dd>
 
27792
<dt> <b>connections</b>, &nbsp;&nbsp;<i>values</i>: string; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
27793
<dd><p>Describes the connection stubs of the puzzle stone. The string is a substring
 
27794
of <code>&quot;nesw&quot;</code> listing the stubs. The sequence of the sides, north, east,
 
27795
south, west, is guaranteed on read access but arbitrary on write access.
 
27796
</p>
 
27797
</dd>
 
27798
<dt> <b>cluster</b> &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
27799
<dd><p>If set to a number all adjacent puzzle stones of the same color with
 
27800
the identical cluster number will build a cluster. This attribute supersedes
 
27801
any explicitly given connection description.
 
27802
</p>
 
27803
</dd>
 
27804
<dt> <b>hollow</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
27805
<dd><p>A hollow puzzle stone has a hole in its middle and allows actors to pass beneath.
 
27806
</p>
 
27807
</dd>
 
27808
<dt> <b>algorithm</b>, &nbsp;&nbsp;<i>values</i>: string; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
27809
<dt> <b>intensity</b> &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: <code>3</code></dt>
 
27810
<dt> <b>Messages:</b></dt>
 
27811
<dd><dl compact="compact">
 
27812
<dt> <b>get_adjacents</b></dt>
 
27813
<dd><p>Returns the huddle of all adjacent puzzle stones of same color independent of
 
27814
being connected or not. The huddle is returned as a group.
 
27815
</p></dd>
 
27816
<dt> <b>pull_rotate</b>, &nbsp;&nbsp;<i>value type</i>: orientation</dt>
 
27817
<dd><p>Perform a reverse &lsquo;<samp>push_rotate</samp>&rsquo; from this puzzle stones with the line
 
27818
of puzzle stone into the given direction.
 
27819
</p></dd>
 
27820
<dt> <b>push_rotate</b>, &nbsp;&nbsp;<i>value type</i>: orientation</dt>
 
27821
<dd><p>Perform a line rotation as described above from this puzzle stones with the line
 
27822
of puzzle stone into the given direction.
 
27823
</p>
 
27824
</dd>
 
27825
</dl>
 
27826
 
 
27827
</dd>
 
27828
<dt> <b>Action:</b> none</dt>
 
27829
<dt> <b>Variants:</b></dt>
 
27830
<dd>
 
27831
<table>
 
27832
<tr><td width="8%"><img src="images/st_puzzle_blue.png" alt="images/st_puzzle_blue"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_blue_2.png" alt="images/st_puzzle_blue_2"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;w&quot;</code>, hollow = <code>false</code></td></tr>
 
27833
<tr><td width="8%"><img src="images/st_puzzle_blue_3.png" alt="images/st_puzzle_blue_3"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;s&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_blue_4.png" alt="images/st_puzzle_blue_4"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;sw&quot;</code>, hollow = <code>false</code></td></tr>
 
27834
<tr><td width="8%"><img src="images/st_puzzle_blue_b.png" alt="images/st_puzzle_blue_b"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;e&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_blue_b2.png" alt="images/st_puzzle_blue_b2"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;ew&quot;</code>, hollow = <code>false</code></td></tr>
 
27835
<tr><td width="8%"><img src="images/st_puzzle_blue_b3.png" alt="images/st_puzzle_blue_b3"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;es&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_blue_b4.png" alt="images/st_puzzle_blue_b4"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;esw&quot;</code>, hollow = <code>false</code></td></tr>
 
27836
<tr><td width="8%"><img src="images/st_puzzle_blue_c.png" alt="images/st_puzzle_blue_c"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;n&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_blue_c2.png" alt="images/st_puzzle_blue_c2"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;nw&quot;</code>, hollow = <code>false</code></td></tr>
 
27837
<tr><td width="8%"><img src="images/st_puzzle_blue_c3.png" alt="images/st_puzzle_blue_c3"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;ns&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_blue_c4.png" alt="images/st_puzzle_blue_c4"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;nsw&quot;</code>, hollow = <code>false</code></td></tr>
 
27838
<tr><td width="8%"><img src="images/st_puzzle_blue_d.png" alt="images/st_puzzle_blue_d"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;ne&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_blue_d2.png" alt="images/st_puzzle_blue_d2"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;new&quot;</code>, hollow = <code>false</code></td></tr>
 
27839
<tr><td width="8%"><img src="images/st_puzzle_blue_d3.png" alt="images/st_puzzle_blue_d3"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;nes&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_blue_d4.png" alt="images/st_puzzle_blue_d4"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;nesw&quot;</code>, hollow = <code>false</code></td></tr>
 
27840
<tr><td width="8%"><img src="images/st_puzzle_blue_hollow.png" alt="images/st_puzzle_blue_hollow"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_blue_hollow_2.png" alt="images/st_puzzle_blue_hollow_2"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;w&quot;</code>, hollow = <code>true</code></td></tr>
 
27841
<tr><td width="8%"><img src="images/st_puzzle_blue_hollow_3.png" alt="images/st_puzzle_blue_hollow_3"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;s&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_blue_hollow_4.png" alt="images/st_puzzle_blue_hollow_4"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;sw&quot;</code>, hollow = <code>true</code></td></tr>
 
27842
<tr><td width="8%"><img src="images/st_puzzle_blue_hollow_b.png" alt="images/st_puzzle_blue_hollow_b"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;e&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_blue_hollow_b2.png" alt="images/st_puzzle_blue_hollow_b2"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;ew&quot;</code>, hollow = <code>true</code></td></tr>
 
27843
<tr><td width="8%"><img src="images/st_puzzle_blue_hollow_b3.png" alt="images/st_puzzle_blue_hollow_b3"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;es&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_blue_hollow_b4.png" alt="images/st_puzzle_blue_hollow_b4"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;esw&quot;</code>, hollow = <code>true</code></td></tr>
 
27844
<tr><td width="8%"><img src="images/st_puzzle_blue_hollow_c.png" alt="images/st_puzzle_blue_hollow_c"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;n&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_blue_hollow_c2.png" alt="images/st_puzzle_blue_hollow_c2"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;nw&quot;</code>, hollow = <code>true</code></td></tr>
 
27845
<tr><td width="8%"><img src="images/st_puzzle_blue_hollow_c3.png" alt="images/st_puzzle_blue_hollow_c3"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;ns&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_blue_hollow_c4.png" alt="images/st_puzzle_blue_hollow_c4"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;nsw&quot;</code>, hollow = <code>true</code></td></tr>
 
27846
<tr><td width="8%"><img src="images/st_puzzle_blue_hollow_d.png" alt="images/st_puzzle_blue_hollow_d"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;ne&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_blue_hollow_d2.png" alt="images/st_puzzle_blue_hollow_d2"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;new&quot;</code>, hollow = <code>true</code></td></tr>
 
27847
<tr><td width="8%"><img src="images/st_puzzle_blue_hollow_d3.png" alt="images/st_puzzle_blue_hollow_d3"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;nes&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_blue_hollow_d4.png" alt="images/st_puzzle_blue_hollow_d4"></td><td width="42%"><b>st_puzzle_blue</b>: color = <code>BLUE</code>, connections = <code>&quot;nesw&quot;</code>, hollow = <code>true</code></td></tr>
 
27848
<tr><td width="8%"><img src="images/st_puzzle_yellow.png" alt="images/st_puzzle_yellow"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_yellow_2.png" alt="images/st_puzzle_yellow_2"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;w&quot;</code>, hollow = <code>false</code></td></tr>
 
27849
<tr><td width="8%"><img src="images/st_puzzle_yellow_3.png" alt="images/st_puzzle_yellow_3"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;s&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_yellow_4.png" alt="images/st_puzzle_yellow_4"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;sw&quot;</code>, hollow = <code>false</code></td></tr>
 
27850
<tr><td width="8%"><img src="images/st_puzzle_yellow_b.png" alt="images/st_puzzle_yellow_b"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;e&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_yellow_b2.png" alt="images/st_puzzle_yellow_b2"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;ew&quot;</code>, hollow = <code>false</code></td></tr>
 
27851
<tr><td width="8%"><img src="images/st_puzzle_yellow_b3.png" alt="images/st_puzzle_yellow_b3"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;es&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_yellow_b4.png" alt="images/st_puzzle_yellow_b4"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;esw&quot;</code>, hollow = <code>false</code></td></tr>
 
27852
<tr><td width="8%"><img src="images/st_puzzle_yellow_c.png" alt="images/st_puzzle_yellow_c"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;n&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_yellow_c2.png" alt="images/st_puzzle_yellow_c2"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;nw&quot;</code>, hollow = <code>false</code></td></tr>
 
27853
<tr><td width="8%"><img src="images/st_puzzle_yellow_c3.png" alt="images/st_puzzle_yellow_c3"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;ns&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_yellow_c4.png" alt="images/st_puzzle_yellow_c4"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;nsw&quot;</code>, hollow = <code>false</code></td></tr>
 
27854
<tr><td width="8%"><img src="images/st_puzzle_yellow_d.png" alt="images/st_puzzle_yellow_d"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;ne&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_yellow_d2.png" alt="images/st_puzzle_yellow_d2"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;new&quot;</code>, hollow = <code>false</code></td></tr>
 
27855
<tr><td width="8%"><img src="images/st_puzzle_yellow_d3.png" alt="images/st_puzzle_yellow_d3"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;nes&quot;</code>, hollow = <code>false</code></td><td width="8%"><img src="images/st_puzzle_yellow_d4.png" alt="images/st_puzzle_yellow_d4"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;nesw&quot;</code>, hollow = <code>false</code></td></tr>
 
27856
<tr><td width="8%"><img src="images/st_puzzle_yellow_hollow.png" alt="images/st_puzzle_yellow_hollow"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_yellow_hollow_2.png" alt="images/st_puzzle_yellow_hollow_2"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;w&quot;</code>, hollow = <code>true</code></td></tr>
 
27857
<tr><td width="8%"><img src="images/st_puzzle_yellow_hollow_3.png" alt="images/st_puzzle_yellow_hollow_3"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;s&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_yellow_hollow_4.png" alt="images/st_puzzle_yellow_hollow_4"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;sw&quot;</code>, hollow = <code>true</code></td></tr>
 
27858
<tr><td width="8%"><img src="images/st_puzzle_yellow_hollow_b.png" alt="images/st_puzzle_yellow_hollow_b"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;e&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_yellow_hollow_b2.png" alt="images/st_puzzle_yellow_hollow_b2"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;ew&quot;</code>, hollow = <code>true</code></td></tr>
 
27859
<tr><td width="8%"><img src="images/st_puzzle_yellow_hollow_b3.png" alt="images/st_puzzle_yellow_hollow_b3"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;es&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_yellow_hollow_b4.png" alt="images/st_puzzle_yellow_hollow_b4"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;esw&quot;</code>, hollow = <code>true</code></td></tr>
 
27860
<tr><td width="8%"><img src="images/st_puzzle_yellow_hollow_c.png" alt="images/st_puzzle_yellow_hollow_c"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;n&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_yellow_hollow_c2.png" alt="images/st_puzzle_yellow_hollow_c2"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;nw&quot;</code>, hollow = <code>true</code></td></tr>
 
27861
<tr><td width="8%"><img src="images/st_puzzle_yellow_hollow_c3.png" alt="images/st_puzzle_yellow_hollow_c3"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;ns&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_yellow_hollow_c4.png" alt="images/st_puzzle_yellow_hollow_c4"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;nsw&quot;</code>, hollow = <code>true</code></td></tr>
 
27862
<tr><td width="8%"><img src="images/st_puzzle_yellow_hollow_d.png" alt="images/st_puzzle_yellow_hollow_d"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;ne&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_yellow_hollow_d2.png" alt="images/st_puzzle_yellow_hollow_d2"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;new&quot;</code>, hollow = <code>true</code></td></tr>
 
27863
<tr><td width="8%"><img src="images/st_puzzle_yellow_hollow_d3.png" alt="images/st_puzzle_yellow_hollow_d3"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;nes&quot;</code>, hollow = <code>true</code></td><td width="8%"><img src="images/st_puzzle_yellow_hollow_d4.png" alt="images/st_puzzle_yellow_hollow_d4"></td><td width="42%"><b>st_puzzle_yellow</b>: color = <code>YELLOW</code>, connections = <code>&quot;nesw&quot;</code>, hollow = <code>true</code></td></tr>
 
27864
</table>
 
27865
 
 
27866
</dd>
 
27867
</dl>
 
27868
 
 
27869
<hr size="6">
 
27870
<a name="st_005fquake"></a>
 
27871
<table cellpadding="1" cellspacing="1" border="0">
 
27872
<tr><td valign="middle" align="left">[<a href="#st_005fpuzzle" title="Previous section in reading order"> &lt; </a>]</td>
 
27873
<td valign="middle" align="left">[<a href="#st_005frawglass" title="Next section in reading order"> &gt; </a>]</td>
 
27874
<td valign="middle" align="left"> &nbsp; </td>
 
27875
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
27876
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
27877
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
27878
<td valign="middle" align="left"> &nbsp; </td>
 
27879
<td valign="middle" align="left"> &nbsp; </td>
 
27880
<td valign="middle" align="left"> &nbsp; </td>
 
27881
<td valign="middle" align="left"> &nbsp; </td>
 
27882
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
27883
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
27884
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
27885
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
27886
</tr></table>
 
27887
<a name="st_005fquake-1"></a>
 
27888
<h3 class="subsection">9.5.50 st_quake</h3>
 
27889
<a name="index-st_005fquake"></a>
 
27890
 
 
27891
<p>This stone looks like an <a href="#st_005foxyd">st_oxyd</a> of flavor <code>&quot;b&quot;</code>, but it has the
 
27892
unpleasant habit of quaking when being activated. Unfortunately this closes all
 
27893
open <a href="#st_005foxyd">st_oxyd</a>s.
 
27894
</p>
 
27895
<p>The stone gets activated on an actor hit, on <a href="#st_005fboulder">st_boulder</a>s hit and on its
 
27896
destruction.
 
27897
</p>
 
27898
<p>The player can destroy this troublemaker with an actor that reveals an
 
27899
<a href="#it_005fhammer">it_hammer</a>, by directing a laser light onto the quake stone or by a nearby
 
27900
explosion or ignition.
 
27901
</p>
 
27902
<p>Of course you can activate and destroy it by messages and state set operations,
 
27903
too.
 
27904
</p>
 
27905
<dl compact="compact">
 
27906
<dt> <b>Attributes:</b></dt>
 
27907
<dd>
 
27908
<dl compact="compact">
 
27909
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>IDLE</code>, <code>ACTIVE</code>, <code>BREAKING</code>; &nbsp;&nbsp;<i>default</i>: <code>IDLE</code>: &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
27910
<dd><p>Current state of the quake stone. You can just change the state into legal
 
27911
follow up states. A breaking state is final.
 
27912
</p></dd>
 
27913
</dl>
 
27914
 
 
27915
</dd>
 
27916
<dt> <b>Messages:</b></dt>
 
27917
<dd>
 
27918
<dl compact="compact">
 
27919
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
27920
<dd><p>Toggles stone from &lsquo;<samp>IDLE</samp>&rsquo; to &lsquo;<samp>ACTIVE</samp>&rsquo;
 
27921
</p></dd>
 
27922
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
27923
<dd><p>Toggles stone from &lsquo;<samp>IDLE</samp>&rsquo; to &lsquo;<samp>ACTIVE</samp>&rsquo;
 
27924
</p></dd>
 
27925
<dt> <b>ignite</b></dt>
 
27926
<dd><p>Toggles stone to &lsquo;<samp>BREAKING</samp>&rsquo;
 
27927
</p></dd>
 
27928
</dl>
 
27929
 
 
27930
</dd>
 
27931
<dt> <b>Action:</b> none</dt>
 
27932
<dd>
 
27933
<dl compact="compact">
 
27934
<dt> <img src="images/st_oxydb.png" alt="images/st_oxydb"><p> <b>st_quake</b>: state = <code>IDLE</code>
 
27935
</p></dt>
 
27936
<dt> <img src="images/st_quake_3.png" alt="images/st_quake_3"><p> <b>st_quake</b>: state = <code>ACTIVE</code>
 
27937
</p></dt>
 
27938
<dt> <img src="images/st_quake_break.png" alt="images/st_quake_break"><p> <b>st_quake</b>: state = <code>BREAKING</code>
 
27939
</p></dt>
 
27940
</dl>
 
27941
</dd>
 
27942
</dl>
 
27943
 
 
27944
<hr size="6">
 
27945
<a name="st_005frawglass"></a>
 
27946
<table cellpadding="1" cellspacing="1" border="0">
 
27947
<tr><td valign="middle" align="left">[<a href="#st_005fquake" title="Previous section in reading order"> &lt; </a>]</td>
 
27948
<td valign="middle" align="left">[<a href="#st_005fredfiber" title="Next section in reading order"> &gt; </a>]</td>
 
27949
<td valign="middle" align="left"> &nbsp; </td>
 
27950
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
27951
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
27952
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
27953
<td valign="middle" align="left"> &nbsp; </td>
 
27954
<td valign="middle" align="left"> &nbsp; </td>
 
27955
<td valign="middle" align="left"> &nbsp; </td>
 
27956
<td valign="middle" align="left"> &nbsp; </td>
 
27957
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
27958
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
27959
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
27960
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
27961
</tr></table>
 
27962
<a name="st_005frawglass-1"></a>
 
27963
<h3 class="subsection">9.5.51 st_rawglass</h3>
 
27964
<a name="index-st_005frawglass"></a>
 
27965
 
 
27966
<p>A block of raw glass. It exists in static and movable variants and is by its
 
27967
very nature transparent to laser light. Like other <a href="#Transparent-Stones">Transparent Stones</a> it
 
27968
is passable for invisible actors.
 
27969
</p>
 
27970
<p>This stone comes in a second texture variant that looks like being composed
 
27971
of 4 small rawglasses. This &lsquo;<samp>quad</samp>&rsquo; variant is not movable.
 
27972
</p>
 
27973
<dl compact="compact">
 
27974
<dt> <b>Attributes:</b></dt>
 
27975
<dd>
 
27976
<dl compact="compact">
 
27977
<dt> <b>movable</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code>; &nbsp;&nbsp;<i>access</i>: read only &nbsp;&nbsp;See section <a href="#movable">movable</a></dt>
 
27978
</dl>
 
27979
 
 
27980
</dd>
 
27981
<dt> <b>Messages:</b> none</dt>
 
27982
<dt> <b>Variants:</b></dt>
 
27983
<dd>
 
27984
<dl compact="compact">
 
27985
<dt> <img src="images/st_rawglass.png" alt="images/st_rawglass"><p> <b>st_rawglass</b>: movable = <code>false</code>
 
27986
</p></dt>
 
27987
<dt> <img src="images/st_rawglass_quad.png" alt="images/st_rawglass_quad"><p> <b>st_rawglass_quad</b>: movable = <code>false</code>
 
27988
</p></dt>
 
27989
<dt> <img src="images/st_rawglass.png" alt="images/st_rawglass"><p> <b>st_rawglass_movable</b>: movable = <code>true</code>
 
27990
</p></dt>
 
27991
</dl>
 
27992
 
 
27993
</dd>
 
27994
</dl>
 
27995
 
 
27996
<hr size="6">
 
27997
<a name="st_005fredfiber"></a>
 
27998
<table cellpadding="1" cellspacing="1" border="0">
 
27999
<tr><td valign="middle" align="left">[<a href="#st_005frawglass" title="Previous section in reading order"> &lt; </a>]</td>
 
28000
<td valign="middle" align="left">[<a href="#st_005frotator" title="Next section in reading order"> &gt; </a>]</td>
 
28001
<td valign="middle" align="left"> &nbsp; </td>
 
28002
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
28003
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
28004
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
28005
<td valign="middle" align="left"> &nbsp; </td>
 
28006
<td valign="middle" align="left"> &nbsp; </td>
 
28007
<td valign="middle" align="left"> &nbsp; </td>
 
28008
<td valign="middle" align="left"> &nbsp; </td>
 
28009
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
28010
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
28011
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
28012
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
28013
</tr></table>
 
28014
<a name="st_005fredfiber-1"></a>
 
28015
<h3 class="subsection">9.5.52 st_redfiber</h3>
 
28016
<a name="index-st_005fredfiber"></a>
 
28017
 
 
28018
<p>A metal frame with woven red fiber. Like other <a href="#Transparent-Stones">Transparent Stones</a> it is
 
28019
passable transparent to laser light. But the redfiber is not passable to any
 
28020
actors.
 
28021
</p>
 
28022
<dl compact="compact">
 
28023
<dt> <b>Attributes:</b> none</dt>
 
28024
<dt> <b>Messages:</b> none</dt>
 
28025
<dt> <b>Variants:</b></dt>
 
28026
<dd>
 
28027
<dl compact="compact">
 
28028
<dt> <img src="images/st_redfiber.png" alt="images/st_redfiber"><p> <b>st_redfiber</b>
 
28029
</p></dt>
 
28030
</dl>
 
28031
 
 
28032
</dd>
 
28033
</dl>
 
28034
 
 
28035
<hr size="6">
 
28036
<a name="st_005frotator"></a>
 
28037
<table cellpadding="1" cellspacing="1" border="0">
 
28038
<tr><td valign="middle" align="left">[<a href="#st_005fredfiber" title="Previous section in reading order"> &lt; </a>]</td>
 
28039
<td valign="middle" align="left">[<a href="#st_005frubberband" title="Next section in reading order"> &gt; </a>]</td>
 
28040
<td valign="middle" align="left"> &nbsp; </td>
 
28041
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
28042
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
28043
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
28044
<td valign="middle" align="left"> &nbsp; </td>
 
28045
<td valign="middle" align="left"> &nbsp; </td>
 
28046
<td valign="middle" align="left"> &nbsp; </td>
 
28047
<td valign="middle" align="left"> &nbsp; </td>
 
28048
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
28049
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
28050
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
28051
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
28052
</tr></table>
 
28053
<a name="st_005frotator-1"></a>
 
28054
<h3 class="subsection">9.5.53 st_rotator</h3>
 
28055
<a name="index-st_005frotator"></a>
 
28056
 
 
28057
<p>Rotators send impulses to neighboring stones, thus pushing them in the direction
 
28058
given by the rotation. <a href="#st_005fboulder">st_boulder</a> additionally change their orientation to
 
28059
the one they are pushed to.
 
28060
</p>
 
28061
<p>Rotators can either rotate in clockwise or counterclockwise direction. They can
 
28062
be movable or unmovable.
 
28063
</p>
 
28064
<p>The rotator changes its rotation direction when hit by an actor with a revealed
 
28065
<a href="#it_005fwrench">it_wrench</a> and by laser beams. Every additional laser beam causes a change
 
28066
in the rotation direction.
 
28067
</p>
 
28068
<dl compact="compact">
 
28069
<dt> <b>Attributes:</b></dt>
 
28070
<dd>
 
28071
<dl compact="compact">
 
28072
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>CW</code>, <code>CCW</code>; &nbsp;&nbsp;<i>default</i>: <code>CW</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
28073
<dd><p>The rotation direction - &lsquo;<samp>CW</samp>&rsquo; for clockwise as default, or &lsquo;<samp>CCW</samp>&rsquo; for
 
28074
counter clockwise.
 
28075
</p></dd>
 
28076
<dt> <b>counterclock</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
28077
<dd><p>The standard rotation direction is clockwise. Use this attribute to revert the
 
28078
direction.
 
28079
</p></dd>
 
28080
<dt> <b>movable</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code> &nbsp;&nbsp;See section <a href="#movable">movable</a></dt>
 
28081
</dl>
 
28082
 
 
28083
</dd>
 
28084
<dt> <b>Messages:</b></dt>
 
28085
<dd>
 
28086
<dl compact="compact">
 
28087
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
28088
<dd><p>Switches the rotation direction.
 
28089
</p></dd>
 
28090
</dl>
 
28091
 
 
28092
</dd>
 
28093
<dt> <b>Variants:</b></dt>
 
28094
<dd><dl compact="compact">
 
28095
<dt> <img src="images/st_rotator_cw.png" alt="images/st_rotator_cw"><p> <b>st_rotator</b>: state = <code>CW</code>
 
28096
</p></dt>
 
28097
<dt> <img src="images/st_rotator_cw.png" alt="images/st_rotator_cw"><p> <b>st_rotator_cw</b>: state = <code>CW</code>
 
28098
</p></dt>
 
28099
<dt> <img src="images/st_rotator_ccw.png" alt="images/st_rotator_ccw"><p> <b>st_rotator_ccw</b>: state = <code>CCW</code>
 
28100
</p></dt>
 
28101
</dl>
 
28102
</dd>
 
28103
</dl>
 
28104
 
 
28105
<hr size="6">
 
28106
<a name="st_005frubberband"></a>
 
28107
<table cellpadding="1" cellspacing="1" border="0">
 
28108
<tr><td valign="middle" align="left">[<a href="#st_005frotator" title="Previous section in reading order"> &lt; </a>]</td>
 
28109
<td valign="middle" align="left">[<a href="#st_005fscissors" title="Next section in reading order"> &gt; </a>]</td>
 
28110
<td valign="middle" align="left"> &nbsp; </td>
 
28111
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
28112
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
28113
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
28114
<td valign="middle" align="left"> &nbsp; </td>
 
28115
<td valign="middle" align="left"> &nbsp; </td>
 
28116
<td valign="middle" align="left"> &nbsp; </td>
 
28117
<td valign="middle" align="left"> &nbsp; </td>
 
28118
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
28119
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
28120
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
28121
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
28122
</tr></table>
 
28123
<a name="st_005frubberband-1"></a>
 
28124
<h3 class="subsection">9.5.54 st_rubberband</h3>
 
28125
<a name="index-st_005frubberband"></a>
 
28126
 
 
28127
<p>A rubberband stone attaches a new <a href="#ot_005frubberband">ot_rubberband</a> between actors hitting it
 
28128
and itself.
 
28129
</p>
 
28130
<p>No rubberband is attached if the hitting actor is already connected to this
 
28131
particular stone.
 
28132
</p>
 
28133
<p>If the attribute &lsquo;<samp>scissor</samp>&rsquo; is &lsquo;<samp>true</samp>&rsquo;, all rubberbands connected to
 
28134
the hitting actor are removed prior to attaching the direct new connection.
 
28135
</p>
 
28136
<p>The rubberband stone is static by default. But an actor with a revealed
 
28137
<a href="#it_005fmagicwand">it_magicwand</a> can move it by hitting it. As the actor will get connected by
 
28138
an <a href="#ot_005frubberband">ot_rubberband</a> at the same time you will usually place an
 
28139
<a href="#st_005fscissors">st_scissors</a> near the target place as an opportunity for the marble to free
 
28140
itself again from the rubberband stone.
 
28141
</p>
 
28142
<dl compact="compact">
 
28143
<dt> <b>Attributes:</b></dt>
 
28144
<dd>
 
28145
<dl compact="compact">
 
28146
<dt> <b>strength</b> &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: <code>10.0</code></dt>
 
28147
<dd><p>The force strength.
 
28148
</p></dd>
 
28149
<dt> <b>length</b> &nbsp;&nbsp;<i>values</i>: positive number or <code>AUTOLENGTH</code>; &nbsp;&nbsp;<i>default</i>: <code>1.0</code></dt>
 
28150
<dd><p>The natural length above which forces are applied.
 
28151
</p></dd>
 
28152
<dt> <b>threshold</b> &nbsp;&nbsp;<i>values</i>: positive number or zero; &nbsp;&nbsp;<i>default</i>: <code>0.0</code></dt>
 
28153
<dd><p>The length smaller than the natural length below which inverted forces are applied.
 
28154
</p></dd>
 
28155
<dt> <b>min</b> &nbsp;&nbsp;<i>values</i>: positive number or zero; &nbsp;&nbsp;<i>default</i>: <code>0.0</code></dt>
 
28156
<dd><p>The minimum length at which actors bounce.
 
28157
</p></dd>
 
28158
<dt> <b>max</b> &nbsp;&nbsp;<i>values</i>: positive number or zero; &nbsp;&nbsp;<i>default</i>: <code>0.0</code></dt>
 
28159
<dd><p>The maximum length at which actors bounce.
 
28160
</p></dd>
 
28161
<dt> <b>scissor</b>, &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
28162
<dd><p>Rubberband cutting behaviour on connection.
 
28163
</p></dd>
 
28164
</dl>
 
28165
 
 
28166
</dd>
 
28167
<dt> <b>Messages:</b> none</dt>
 
28168
<dt> <b>Variants:</b></dt>
 
28169
<dd><dl compact="compact">
 
28170
<dt> <img src="images/st_rubberband.png" alt="images/st_rubberband"><p> <b>st_rubberband</b>
 
28171
</p></dt>
 
28172
</dl>
 
28173
</dd>
 
28174
</dl>
 
28175
 
 
28176
<hr size="6">
 
28177
<a name="st_005fscissors"></a>
 
28178
<table cellpadding="1" cellspacing="1" border="0">
 
28179
<tr><td valign="middle" align="left">[<a href="#st_005frubberband" title="Previous section in reading order"> &lt; </a>]</td>
 
28180
<td valign="middle" align="left">[<a href="#st_005fshogun" title="Next section in reading order"> &gt; </a>]</td>
 
28181
<td valign="middle" align="left"> &nbsp; </td>
 
28182
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
28183
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
28184
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
28185
<td valign="middle" align="left"> &nbsp; </td>
 
28186
<td valign="middle" align="left"> &nbsp; </td>
 
28187
<td valign="middle" align="left"> &nbsp; </td>
 
28188
<td valign="middle" align="left"> &nbsp; </td>
 
28189
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
28190
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
28191
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
28192
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
28193
</tr></table>
 
28194
<a name="st_005fscissors-1"></a>
 
28195
<h3 class="subsection">9.5.55 st_scissors</h3>
 
28196
<a name="index-st_005fscissors"></a>
 
28197
 
 
28198
<p>This stone cuts all <a href="#ot_005frubberband">ot_rubberband</a>s attached to an actor that touches it.
 
28199
When at least one rubber band is cut, it performs the action given in the
 
28200
action/target-pair.
 
28201
</p>
 
28202
<dl compact="compact">
 
28203
<dt> <b>Attributes:</b> none</dt>
 
28204
<dt> <b>Messages:</b> none</dt>
 
28205
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
28206
<dd><p>Sends an action message with value &lsquo;<samp>true</samp>&rsquo; on freeing an actor from its
 
28207
rubberbands.
 
28208
</p>
 
28209
</dd>
 
28210
<dt> <b>Variants:</b></dt>
 
28211
<dd><dl compact="compact">
 
28212
<dt> <img src="images/st_scissors.png" alt="images/st_scissors"><p> <b>st_scissors</b>
 
28213
</p></dt>
 
28214
</dl>
 
28215
</dd>
 
28216
</dl>
 
28217
 
 
28218
<hr size="6">
 
28219
<a name="st_005fshogun"></a>
 
28220
<table cellpadding="1" cellspacing="1" border="0">
 
28221
<tr><td valign="middle" align="left">[<a href="#st_005fscissors" title="Previous section in reading order"> &lt; </a>]</td>
 
28222
<td valign="middle" align="left">[<a href="#st_005fspitter" title="Next section in reading order"> &gt; </a>]</td>
 
28223
<td valign="middle" align="left"> &nbsp; </td>
 
28224
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
28225
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
28226
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
28227
<td valign="middle" align="left"> &nbsp; </td>
 
28228
<td valign="middle" align="left"> &nbsp; </td>
 
28229
<td valign="middle" align="left"> &nbsp; </td>
 
28230
<td valign="middle" align="left"> &nbsp; </td>
 
28231
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
28232
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
28233
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
28234
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
28235
</tr></table>
 
28236
<a name="st_005fshogun-1"></a>
 
28237
<h3 class="subsection">9.5.56 st_shogun</h3>
 
28238
<a name="index-st_005fshogun"></a>
 
28239
 
 
28240
<p>Shogun stones are nestable stones like Fukuroma or Matryoshka dolls. The
 
28241
different basic variations are distinguishable by their central hole. Small,
 
28242
medium and large ones do exist. In contrast to the Fukuroma dolls you can push
 
28243
smaller variations beneath the larger ones but not vice versa. You can see
 
28244
smaller shoguns pushed beneath larger ones through the upper, larger hole.
 
28245
Thus the player is always aware of the stack of shogun stones positioned on a
 
28246
single grid.
 
28247
</p>
 
28248
<p>An actor or a stone impulse hitting a shogun stack will push the smallest shogun
 
28249
out of the stack. The upper and larger shogun stones can never be moved out of
 
28250
a stack and larger shoguns stones can never be pushed over smaller ones.
 
28251
</p>
 
28252
<p><a href="#it_005fshogun">it_shogun</a> are a special trigger type for shogun stones represented by
 
28253
animated blue dots. They just react on shogun stacks positioned on top of the
 
28254
dot items. All shogun sizes must be present from the smallest up to the size
 
28255
of the dot itself.
 
28256
</p>
 
28257
<p>Shogun stones press <a href="#it_005ftrigger">it_trigger</a>, too. But all other items that react on
 
28258
other stones being pushed over them will not react on shogun stones. E.g.
 
28259
<a href="#it_005fseed">it_seed</a> will not grow, <a href="#it_005fbomb">it_bomb</a> will not explode, <a href="#it_005fcoin">it_coin</a> will
 
28260
not transform and <a href="#it_005fcherry">it_cherry</a> will not smash.
 
28261
</p>
 
28262
<p>All shogun stones keep their identity even if they are pushed together onto a
 
28263
single grid. Thus each shogun can be connected independently to <a href="#ot_005fwire">ot_wire</a>s
 
28264
or <a href="#ot_005frubberband">ot_rubberband</a>s. On initialization you can set a stack of shogun onto
 
28265
a grid by setting a single shogun stone with a combined flavor string. The
 
28266
largest shogun stone of a stack will be positioned onto the grid and all smaller
 
28267
ones being part of the stack will be contained by the largest one. You can name
 
28268
the smaller shoguns of a stack by the additional attributes &lsquo;<samp>name_m</samp>&rsquo; and
 
28269
&lsquo;<samp>name_s</samp>&rsquo;. Every shogun, even those being part of a stack can individually
 
28270
be killed by sending a <a href="#kill">kill</a> message to it. By setting another stone or
 
28271
&lsquo;<samp>st_nil</samp>&rsquo; onto the grid currently being occupied by a shogun grid all shogun
 
28272
stones being part of the stack will be killed.
 
28273
</p>
 
28274
<dl compact="compact">
 
28275
<dt> <b>Attributes:</b></dt>
 
28276
<dd><dl compact="compact">
 
28277
<dt> <b>flavor</b>, &nbsp;&nbsp;<i>values</i>: <code>&quot;s&quot;</code>, <code>&quot;m&quot;</code>, <code>&quot;l&quot;</code>, <code>&quot;sm&quot;</code>, <code>&quot;sl&quot;</code>, <code>&quot;ml&quot;</code>, <code>&quot;sml&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;s&quot;</code>; &nbsp;&nbsp;<i>access</i>: after initialization read only</dt>
 
28278
<dd><p>A string describing the hole sizes of this shogun stone and all smaller shogun
 
28279
stones that are positioned beneath this stone. <code>&quot;s&quot;</code> for a small hole, <code>&quot;m&quot;</code> for
 
28280
a medium hole, <code>&quot;l&quot;</code> for a large hole, plus combinations of these
 
28281
characters for stacks. On initialization all shoguns of this grid&rsquo;s stack will
 
28282
be set according to this attribute, which can be prior set. After initialization
 
28283
this attribute is read only and reports the current stack configuration. The
 
28284
character sequence is guaranteed to be sorted from small to large on read access
 
28285
but is arbitrary on initial write access.
 
28286
</p>
 
28287
</dd>
 
28288
<dt> <b>name_m</b> &nbsp;&nbsp;<i>values</i>: string; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
28289
<dd><p>Name of the middle sized shogun as subpart of a stack of a large shogun.
 
28290
</p>
 
28291
</dd>
 
28292
<dt> <b>name_s</b> &nbsp;&nbsp;<i>values</i>: string; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
28293
<dd><p>Name of the small sized shogun as subpart of a stack of a large or middle sized
 
28294
shogun.
 
28295
</p>
 
28296
</dd>
 
28297
</dl>
 
28298
 
 
28299
</dd>
 
28300
<dt> <b>Messages:</b> none</dt>
 
28301
<dt> <b>Action:</b> none</dt>
 
28302
<dt> <b>Variants:</b></dt>
 
28303
<dd>
 
28304
<dl compact="compact">
 
28305
<dt> <img src="images/st_shogun.png" alt="images/st_shogun"><p> <b>st_shogun</b>: flavor = <code>&quot;s&quot;</code>
 
28306
</p></dt>
 
28307
<dt> <img src="images/st_shogun.png" alt="images/st_shogun"><p> <b>st_shogun_s</b>: flavor = <code>&quot;s&quot;</code>
 
28308
</p></dt>
 
28309
<dt> <img src="images/st_shogun_2.png" alt="images/st_shogun_2"><p> <b>st_shogun_m</b>: flavor = <code>&quot;m&quot;</code>
 
28310
</p></dt>
 
28311
<dt> <img src="images/st_shogun_3.png" alt="images/st_shogun_3"><p> <b>st_shogun_sm</b>: flavor = <code>&quot;sm&quot;</code>
 
28312
</p></dt>
 
28313
<dt> <img src="images/st_shogun_4.png" alt="images/st_shogun_4"><p> <b>st_shogun_l</b>: flavor = <code>&quot;l&quot;</code>
 
28314
</p></dt>
 
28315
<dt> <img src="images/st_shogun_5.png" alt="images/st_shogun_5"><p> <b>st_shogun_sl</b>: flavor = <code>&quot;sl&quot;</code>
 
28316
</p></dt>
 
28317
<dt> <img src="images/st_shogun_6.png" alt="images/st_shogun_6"><p> <b>st_shogun_ml</b>: flavor = <code>&quot;ml&quot;</code>
 
28318
</p></dt>
 
28319
<dt> <img src="images/st_shogun_7.png" alt="images/st_shogun_7"><p> <b>st_shogun_sml</b>: flavor = <code>&quot;sml&quot;</code>
 
28320
</p></dt>
 
28321
</dl>
 
28322
 
 
28323
</dd>
 
28324
</dl>
 
28325
 
 
28326
<hr size="6">
 
28327
<a name="st_005fspitter"></a>
 
28328
<table cellpadding="1" cellspacing="1" border="0">
 
28329
<tr><td valign="middle" align="left">[<a href="#st_005fshogun" title="Previous section in reading order"> &lt; </a>]</td>
 
28330
<td valign="middle" align="left">[<a href="#st_005fstoneimpulse" title="Next section in reading order"> &gt; </a>]</td>
 
28331
<td valign="middle" align="left"> &nbsp; </td>
 
28332
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
28333
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
28334
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
28335
<td valign="middle" align="left"> &nbsp; </td>
 
28336
<td valign="middle" align="left"> &nbsp; </td>
 
28337
<td valign="middle" align="left"> &nbsp; </td>
 
28338
<td valign="middle" align="left"> &nbsp; </td>
 
28339
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
28340
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
28341
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
28342
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
28343
</tr></table>
 
28344
<a name="st_005fspitter-1"></a>
 
28345
<h3 class="subsection">9.5.57 st_spitter</h3>
 
28346
<a name="index-st_005fspitter"></a>
 
28347
 
 
28348
<p>A stone that spits <a href="#ot_005fcannonball">ot_cannonball</a>s on actor hits and on proper messages.
 
28349
The standard spitter is &lsquo;<samp>ACTIVE</samp>&rsquo; showing a slow rotating animation. In
 
28350
this &lsquo;<samp>state</samp>&rsquo; the spitter reacts on actor hits, while being &lsquo;<samp>IDLE</samp>&rsquo;
 
28351
it is steady and will spit just on messages.
 
28352
</p>
 
28353
<p>On an actor hit the spitter checks the owner&rsquo;s inventory for an existing
 
28354
<a href="#it_005fextralife">it_extralife</a>. If one exists that is not stuffed in a <a href="#it_005fbag">it_bag</a>, it
 
28355
takes it and spits an <a href="#ot_005fcannonball">ot_cannonball</a> according to the actors velocity
 
28356
and its own hit attributes. The cannonball flies into the resulting direction
 
28357
with a speed that is proportional to the actors hit speed.
 
28358
</p>
 
28359
<p>All cannonballs fly the same period of time. They fly above all other objects
 
28360
and cross all stone walls. The flight distance is proportional to their initial
 
28361
speed. On landing they cause actions on some objects and destroy others:
 
28362
</p>
 
28363
<ul>
 
28364
<li> <a href="#st_005foxyd">st_oxyd</a> do open,
 
28365
</li><li> <a href="#st_005fstoneimpulse">st_stoneimpulse</a> do pulse,
 
28366
</li><li> <a href="#st_005fyinyang">st_yinyang</a> do toggle,
 
28367
</li><li> <a href="#st_005fpuzzle">st_puzzle</a> do explode completely connected clusters,
 
28368
</li><li> <a href="#st_005fbrownpyramid">st_brownpyramid</a> do break,
 
28369
</li><li> <a href="#st_005fspitter">st_spitter</a> do break, if not being &lsquo;<samp>secure</samp>&rsquo;
 
28370
</li><li> other stones do remain unmodified and protect items and floors,
 
28371
</li><li> <a href="#it_005fdynamite">it_dynamite</a> do ignite,
 
28372
</li><li> <a href="#it_005fcrack">it_crack</a> do crack,
 
28373
</li><li> other indestructible items do remain and protect floors,
 
28374
</li><li> other items are blown away by an <a href="#it_005fexplosion">it_explosion</a>_debris that may destruct the floor,too,
 
28375
</li><li> floors dissolve via an <a href="#it_005fexplosion">it_explosion</a>_debris if not being indestructible as <a href="#fl_005fwater">fl_water</a>, <a href="#fl_005fswamp">fl_swamp</a>, <a href="#fl_005fabyss">fl_abyss</a>.
 
28376
</li></ul>
 
28377
 
 
28378
<p>Actors will not be harmed by falling cannonballs.
 
28379
</p>
 
28380
<p>The spitting can be initiated by the message <code>&quot;hit&quot;</code>, too. No
 
28381
<a href="#it_005fextralife">it_extralife</a> is needed in this case. The hit message takes either a
 
28382
destination as message value or in case no value is given it evaluates the
 
28383
&lsquo;<samp>destination</samp>&rsquo; attribute. The second case is suitable for usage of
 
28384
&lsquo;<samp>hit</samp>&rsquo; as an action message.
 
28385
</p>
 
28386
<p>The destination can be any value that evaluates to a valid position, object
 
28387
references and object names included. In case of a &lsquo;<samp>destination</samp>&rsquo;
 
28388
attribute you can even supply tokens describing a series of destination
 
28389
positions. The destinations will be targeted by the cannonballs in turn on
 
28390
a sequence of &lsquo;<samp>hit</samp>&rsquo; actions.
 
28391
</p>
 
28392
<p>Note that the destruction of target objects can have unexpected side effects
 
28393
on the destination sequence. If you list three <a href="#st_005fstoneimpulse">st_stoneimpulse</a> as
 
28394
destinations they will be targeted in the given sequence as none of them
 
28395
gets destroyed. But if you list three <a href="#st_005fbrownpyramid">st_brownpyramid</a> the first
 
28396
cannonball destroys the first target, leaving two valid destinations. The
 
28397
spitter now targets the second target of its list, which happens to evaluate
 
28398
to the third brown pyramid stone. Finally the destination list has just one
 
28399
still existing brown pyramid, the second one, as target. This one will be
 
28400
destroyed on the next spit as the spitter starts again on the first (remaining)
 
28401
destination when the end of list is reached. This may be no problem if you
 
28402
want to destroy objects randomly or if you use named destinations with
 
28403
wildcards. But if you need control about the sequence you need either
 
28404
destinations targets that get not destroyed or floor object references, as
 
28405
they represent <a href="#Named-Positions">Named Positions</a> that are persistent to object destruction.
 
28406
</p>
 
28407
<dl compact="compact">
 
28408
<dt> <b>Attributes:</b></dt>
 
28409
<dd>
 
28410
<dl compact="compact">
 
28411
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>IDLE</code>, <code>ACTIVE</code>; &nbsp;&nbsp;<i>default</i>: <code>ACTIVE</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
28412
<dd><p>An &lsquo;<samp>ACTIVE</samp>&rsquo; spitter is animated and reacts on actor hits while an &lsquo;<samp>IDLE</samp>&rsquo;
 
28413
looks steady and does not spit on actor hits.
 
28414
</p></dd>
 
28415
<dt> <b>hit_strength</b> &nbsp;&nbsp;<i>values</i>: floating point numbers; &nbsp;&nbsp;<i>default</i>: <code>1.0</code>; &nbsp;&nbsp;See section <a href="#hit_005f_002a">hit_*</a></dt>
 
28416
<dt> <b>hit_distortion_xx</b> &nbsp;&nbsp;<i>values</i>: floating point numbers; &nbsp;&nbsp;<i>default</i>: <code>1.0</code>; &nbsp;&nbsp;See section <a href="#hit_005f_002a">hit_*</a></dt>
 
28417
<dt> <b>hit_distortion_xy</b> &nbsp;&nbsp;<i>values</i>: floating point numbers; &nbsp;&nbsp;<i>default</i>: <code>0.0</code>; &nbsp;&nbsp;See section <a href="#hit_005f_002a">hit_*</a></dt>
 
28418
<dt> <b>hit_distortion_yx</b> &nbsp;&nbsp;<i>values</i>: floating point numbers; &nbsp;&nbsp;<i>default</i>: <code>0.0</code>; &nbsp;&nbsp;See section <a href="#hit_005f_002a">hit_*</a></dt>
 
28419
<dt> <b>hit_distortion_yy</b> &nbsp;&nbsp;<i>values</i>: floating point numbers; &nbsp;&nbsp;<i>default</i>: <code>1.0</code>; &nbsp;&nbsp;See section <a href="#hit_005f_002a">hit_*</a></dt>
 
28420
<dt> <b>destination</b>, &nbsp;&nbsp;<i>values</i>: tokens or position; &nbsp;&nbsp;<i>default</i>: <code>nil</code> &nbsp;&nbsp;See section <a href="#destination">destination</a></dt>
 
28421
<dd><p>The destination of the cannonball given by an object or a position.
 
28422
</p></dd>
 
28423
<dt> <b>secure</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
28424
<dd><p>Unsecure spitters do break on a <a href="#ot_005fcannonball">ot_cannonball</a> hit.
 
28425
</p></dd>
 
28426
</dl>
 
28427
 
 
28428
</dd>
 
28429
<dt> <b>Messages:</b></dt>
 
28430
<dd>
 
28431
<dl compact="compact">
 
28432
<dt> <b>hit</b></dt>
 
28433
<dd><p>Spit a cannonball. Takes either a destination as message value or &lsquo;<samp>nil</samp>&rsquo;.
 
28434
</p></dd>
 
28435
</dl>
 
28436
 
 
28437
</dd>
 
28438
<dt> <b>Variants:</b></dt>
 
28439
<dd><dl compact="compact">
 
28440
<dt> <img src="images/st_spitter_idle.png" alt="images/st_spitter_idle"><p> <b>st_spitter</b>: secure = <code>false</code>, state = <code>ACTIVE</code>
 
28441
</p></dt>
 
28442
</dl>
 
28443
 
 
28444
</dd>
 
28445
</dl>
 
28446
 
 
28447
<hr size="6">
 
28448
<a name="st_005fstoneimpulse"></a>
 
28449
<table cellpadding="1" cellspacing="1" border="0">
 
28450
<tr><td valign="middle" align="left">[<a href="#st_005fspitter" title="Previous section in reading order"> &lt; </a>]</td>
 
28451
<td valign="middle" align="left">[<a href="#st_005fsurprise" title="Next section in reading order"> &gt; </a>]</td>
 
28452
<td valign="middle" align="left"> &nbsp; </td>
 
28453
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
28454
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
28455
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
28456
<td valign="middle" align="left"> &nbsp; </td>
 
28457
<td valign="middle" align="left"> &nbsp; </td>
 
28458
<td valign="middle" align="left"> &nbsp; </td>
 
28459
<td valign="middle" align="left"> &nbsp; </td>
 
28460
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
28461
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
28462
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
28463
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
28464
</tr></table>
 
28465
<a name="st_005fstoneimpulse-1"></a>
 
28466
<h3 class="subsection">9.5.58 st_stoneimpulse</h3>
 
28467
<a name="index-st_005fstoneimpulse"></a>
 
28468
 
 
28469
<p>When being triggered these stones do pulse and send stone pushing impulses to
 
28470
their direct neighbors. There exist solid, hollow and movable variants of this
 
28471
stone.
 
28472
</p>
 
28473
<p>The pulsing can either be triggered by an actor touching or hitting the stone,
 
28474
by receiving a stone impulse from a neighboring <a href="#st_005fstoneimpulse">st_stoneimpulse</a>, via
 
28475
<a href="#ot_005fwire">ot_wire</a> or a dropped <a href="#it_005fpuller">it_puller</a>. Further on laser light, an
 
28476
<a href="#st_005fboulder">st_boulder</a> hitting and of course messages will cause the pulsing, too.
 
28477
</p>
 
28478
<p>Even though the three major variants can be set by attributes, they are mutual
 
28479
exclusive. A &lsquo;<samp>hollow</samp>&rsquo; stone is never movable or solid and vice versa. That
 
28480
means setting one of these basic attributes will reset the others to their
 
28481
defaults.
 
28482
</p>
 
28483
<p>A movable stoneimpulse being pushed will pulse due to the actor hit at the
 
28484
new grid position. Even when it is pushed while pulsing it will continue the
 
28485
running pulse animation on the new grid and if necessary it will repulse to
 
28486
guarantee that impulses are send to the neighboring stones at the new position.
 
28487
</p>
 
28488
<p>But if an actor with a revealed <a href="#it_005fmagicwand">it_magicwand</a> pushes a movable stoneimpulse
 
28489
it will move without any additional pulse.
 
28490
</p>
 
28491
<p>In general stoneimpulse stones are very responsive to actor contacts. The
 
28492
slightest touch is sufficient to cause a pulsing. Hollow stones will shatter
 
28493
actors beneath it while pulsing.
 
28494
</p>
 
28495
<p>Hollow stoneimpulse stones are transparent to laserlight and thus do not react.
 
28496
But all other stones do pulse. A standard not &lsquo;<samp>steady</samp>&rsquo; stoneimpulse will
 
28497
pulse just one time on each new added light beam. But if you set &lsquo;<samp>steady</samp>&rsquo;
 
28498
to <code>true</code> the stone will continue pulsing as long as a single beam hits
 
28499
one of its sides.
 
28500
</p>
 
28501
<p>An <a href="#st_005fboulder">st_boulder</a> that hits a stoneimpulse causes it to pulse once. The
 
28502
impulse will not backfire onto the <a href="#st_005fboulder">st_boulder</a>. It will just propagate to
 
28503
the other three directions. Thus the boulder remains aside the stoneimpulse. But
 
28504
when the stoneimpulse gets activated otherwise it will push back the boulder,
 
28505
which will in return hit the stoneimpulse again.
 
28506
</p>
 
28507
<p>An <a href="#ot_005fcannonball">ot_cannonball</a> emitted from an <a href="#st_005fspitter">st_spitter</a> and now falling onto
 
28508
a stoneimpulse causes it to pulse, too.
 
28509
</p>
 
28510
<p>On a chain of stoneimpulse stones the pulsing will propagate along the chain
 
28511
without backfiring, as the previous stone is still active when its successor
 
28512
impulses. This feature lets propagate a linear front of impulses through a field
 
28513
of stoneimpulse stones as expected.
 
28514
</p>
 
28515
<p>If you want to setup a linear circle of stoneimpulse stones with an impulse
 
28516
wandering around the circle in one direction forever, you should insert one
 
28517
&lsquo;<samp>st_stoneimpulse_new</samp>&rsquo; into the chain. According to the
 
28518
<a href="#Snapshot-Principle">Snapshot Principle</a> it is a stone that is just about to start pulsing.
 
28519
You need to set the attribute &lsquo;<samp>orientation</samp>&rsquo;, which is just evaluated for
 
28520
new stones when set to the grid. It takes the incoming direction of the impulse
 
28521
when it reached the new stone. E.g. an orientation of east means that the stone
 
28522
received an impulse from a stone located west of it which was bound to east.
 
28523
Thus the stone will emit impulses to all directions but west.
 
28524
</p>
 
28525
<p>Impulse stones will be destroyed by <a href="#it_005fdynamite">it_dynamite</a> exploding on one of the
 
28526
eight neighboring grid positions while the stone is enlightened by a laser. But
 
28527
other explosions, including <a href="#it_005fbomb">it_bomb</a>, will not effect stoneimpulse stones.
 
28528
</p>
 
28529
<dl compact="compact">
 
28530
<dt> <b>Attributes:</b></dt>
 
28531
<dd>
 
28532
<dl compact="compact">
 
28533
<dt> <b>movable</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
28534
<dd><p>Movable stones are not hollow.
 
28535
</p></dd>
 
28536
<dt> <b>hollow</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
28537
<dd><p>Hollow stones are neither movable, nor steady.
 
28538
</p></dd>
 
28539
<dt> <b>steady</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
28540
<dd><p>Steady stones send continuous impulses while exposed to laser light. Steady stones
 
28541
are not hollow.
 
28542
</p></dd>
 
28543
</dl>
 
28544
 
 
28545
</dd>
 
28546
<dt> <b>Messages:</b></dt>
 
28547
<dd>
 
28548
<dl compact="compact">
 
28549
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
28550
<dd><p>Pulse at a value of &lsquo;<samp>1</samp>&rsquo;.
 
28551
</p></dd>
 
28552
</dl>
 
28553
 
 
28554
</dd>
 
28555
<dt> <b>Action:</b> none</dt>
 
28556
<dt> <b>Variants:</b></dt>
 
28557
<dd><dl compact="compact">
 
28558
<dt> <img src="images/st_stoneimpulse.png" alt="images/st_stoneimpulse"><p> <b>st_stoneimpulse</b>
 
28559
</p></dt>
 
28560
<dt> <img src="images/st_stoneimpulse.png" alt="images/st_stoneimpulse"><p> <b>st_stoneimpulse_movable</b>: movable = <code>true</code>
 
28561
</p></dt>
 
28562
<dt> <img src="images/st_stoneimpulse_hollow.png" alt="images/st_stoneimpulse_hollow"><p> <b>st_stoneimpulse_hollow</b>: hollow = <code>true</code>
 
28563
</p></dt>
 
28564
<dt> <img src="images/st_stoneimpulse_6.png" alt="images/st_stoneimpulse_6"><p> <b>st_stoneimpulse_steady</b>: steady = <code>true</code>
 
28565
</p></dt>
 
28566
<dt> <img src="images/st_stoneimpulse.png" alt="images/st_stoneimpulse"><p> <b>st_stoneimpulse_new</b>:
 
28567
</p></dt>
 
28568
<dd><p>A stone that is about to pulse when being set.
 
28569
</p></dd>
 
28570
</dl>
 
28571
 
 
28572
</dd>
 
28573
</dl>
 
28574
 
 
28575
<hr size="6">
 
28576
<a name="st_005fsurprise"></a>
 
28577
<table cellpadding="1" cellspacing="1" border="0">
 
28578
<tr><td valign="middle" align="left">[<a href="#st_005fstoneimpulse" title="Previous section in reading order"> &lt; </a>]</td>
 
28579
<td valign="middle" align="left">[<a href="#st_005fswap" title="Next section in reading order"> &gt; </a>]</td>
 
28580
<td valign="middle" align="left"> &nbsp; </td>
 
28581
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
28582
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
28583
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
28584
<td valign="middle" align="left"> &nbsp; </td>
 
28585
<td valign="middle" align="left"> &nbsp; </td>
 
28586
<td valign="middle" align="left"> &nbsp; </td>
 
28587
<td valign="middle" align="left"> &nbsp; </td>
 
28588
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
28589
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
28590
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
28591
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
28592
</tr></table>
 
28593
<a name="st_005fsurprise-1"></a>
 
28594
<h3 class="subsection">9.5.59 st_surprise</h3>
 
28595
<a name="index-st_005fsurprise"></a>
 
28596
 
 
28597
<p>A stone that transforms into a random stone as soon as an actor hits it.
 
28598
</p>
 
28599
<p>The replacement stone is a random one out of a given selection. You can set
 
28600
the &lsquo;<samp>selection</samp>&rsquo; attribute with tokens of strings. Every string needs either
 
28601
to be an <a href="#Object-Kind">Object Kind</a> or a tile key prefixed by an equal sign &lsquo;<samp>=</samp>&rsquo;.
 
28602
</p>
 
28603
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;b&quot;] = {&quot;st_brake&quot;}
 
28604
ti[&quot;d&quot;] = {&quot;st_death&quot;}
 
28605
ti[&quot;s&quot;] = {&quot;st_surprise&quot;, selection={&quot;st_chess&quot;, &quot;=b&quot;, &quot;=d&quot;, &quot;=d&quot;}}
 
28606
</pre></td></tr></table>
 
28607
 
 
28608
<p>The replacement stone is randomly chosen out of the given selection. By listing
 
28609
a stone several times you can take influence on the likelihood.
 
28610
</p>
 
28611
<p>The tile declarations referenced by a key may even contain objects besides
 
28612
stone. But you should make rare and proper usage of this feature.
 
28613
</p>
 
28614
<p>Prior replacing the surprise stone the surprise stone will perform its action.
 
28615
You can use this action to modify the selection or to set objects on your own.
 
28616
</p>
 
28617
<p>The surprise stone is killed by any replacement stone set to the grid position.
 
28618
If your selection does not resolve to a stone you may need to add <code>&quot;st_nil&quot;</code>
 
28619
to the replacement tile declaration.
 
28620
</p>
 
28621
<dl compact="compact">
 
28622
<dt> <b>Attributes:</b></dt>
 
28623
<dd><dl compact="compact">
 
28624
<dt> <b>selection</b>, &nbsp;&nbsp;<i>values</i>: tokens of stone kinds and tile keys; &nbsp;&nbsp;<i>default</i>: <code>{&quot;st_grate_cross&quot;, &quot;st_death&quot;, &quot;st_surprise&quot;, &quot;st_lightglass_hollow&quot;, &quot;st_knight&quot;, &quot;st_thief&quot;, &quot;st_flat_breakable&quot;, &quot;st_flat_breaking&quot;}</code></dt>
 
28625
</dl>
 
28626
 
 
28627
</dd>
 
28628
<dt> <b>Messages:</b></dt>
 
28629
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
28630
<dt> <b>Variants:</b></dt>
 
28631
<dd><dl compact="compact">
 
28632
<dt> <img src="images/st_surprise.png" alt="images/st_surprise"><p> <b>st_surprise</b>
 
28633
</p></dt>
 
28634
</dl>
 
28635
</dd>
 
28636
</dl>
 
28637
 
 
28638
<hr size="6">
 
28639
<a name="st_005fswap"></a>
 
28640
<table cellpadding="1" cellspacing="1" border="0">
 
28641
<tr><td valign="middle" align="left">[<a href="#st_005fsurprise" title="Previous section in reading order"> &lt; </a>]</td>
 
28642
<td valign="middle" align="left">[<a href="#st_005fswitch" title="Next section in reading order"> &gt; </a>]</td>
 
28643
<td valign="middle" align="left"> &nbsp; </td>
 
28644
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
28645
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
28646
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
28647
<td valign="middle" align="left"> &nbsp; </td>
 
28648
<td valign="middle" align="left"> &nbsp; </td>
 
28649
<td valign="middle" align="left"> &nbsp; </td>
 
28650
<td valign="middle" align="left"> &nbsp; </td>
 
28651
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
28652
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
28653
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
28654
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
28655
</tr></table>
 
28656
<a name="st_005fswap-1"></a>
 
28657
<h3 class="subsection">9.5.60 st_swap</h3>
 
28658
<a name="index-st_005fswap"></a>
 
28659
 
 
28660
<p>A swap stone can exchange its position with a neighboring stone on the side
 
28661
in direction of the initiating impulse. It is not freely movable by pushes.
 
28662
But when an actor hits a swap stone and another stone is located on the opposite
 
28663
side of the swap stone, both stones will exchange their positions. The swap will
 
28664
also be performed when the swap stone receives a stone impulse via an
 
28665
<a href="#ot_005fwire">ot_wire</a> or a neighboring <a href="#st_005fstoneimpulse">st_stoneimpulse</a>. A similar stone it the
 
28666
<a href="#st_005fpull">st_pull</a>, that exchanges with stones in the reverse direction of the
 
28667
initiating impulse.
 
28668
</p>
 
28669
<p>An existing stone exchange partner is mandatory. Nearly all stones can be
 
28670
swapped. Just connected <a href="#Cluster-Stones">Cluster Stones</a> building a block, <a href="#st_005foxyd">st_oxyd</a>
 
28671
configured as being &lsquo;<samp>static</samp>&rsquo;, and another swap stone or <a href="#st_005fpull">st_pull</a> that
 
28672
is currently engaged in an own stone exchange operation will refuse swapping.
 
28673
</p>
 
28674
<p>Stone exchanges will not cause item hit transformations as caused by push moved
 
28675
stones. But the exchanged stones will react on the new floor, e.g. causing
 
28676
<a href="#st_005fbox">st_box</a> to sink into water.
 
28677
</p>
 
28678
<p>Further on the exchange is atomic concerning <a href="#it_005ftrigger">it_trigger</a> detection and
 
28679
laser light transparency. If the exchanged stone is transparent, the light
 
28680
will pass on every time slice just on one of the two grids. If the exchanged
 
28681
stone is floating and does not press <a href="#it_005ftrigger">it_trigger</a>s, the swap stone will
 
28682
press just one trigger, releasing the trigger of the old position before
 
28683
pressing the new position&rsquo;s trigger like any other stone being pushed from one
 
28684
grid to the next.
 
28685
</p>
 
28686
<dl compact="compact">
 
28687
<dt> <b>Attributes:</b> none</dt>
 
28688
<dt> <b>Messages:</b> none</dt>
 
28689
<dt> <b>Action:</b> none</dt>
 
28690
<dt> <b>Variants:</b></dt>
 
28691
<dd><dl compact="compact">
 
28692
<dt> <img src="images/st_swap.png" alt="images/st_swap"><p> <b>st_swap</b>
 
28693
</p></dt>
 
28694
</dl>
 
28695
</dd>
 
28696
</dl>
 
28697
 
 
28698
<hr size="6">
 
28699
<a name="st_005fswitch"></a>
 
28700
<table cellpadding="1" cellspacing="1" border="0">
 
28701
<tr><td valign="middle" align="left">[<a href="#st_005fswap" title="Previous section in reading order"> &lt; </a>]</td>
 
28702
<td valign="middle" align="left">[<a href="#st_005fthief" title="Next section in reading order"> &gt; </a>]</td>
 
28703
<td valign="middle" align="left"> &nbsp; </td>
 
28704
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
28705
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
28706
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
28707
<td valign="middle" align="left"> &nbsp; </td>
 
28708
<td valign="middle" align="left"> &nbsp; </td>
 
28709
<td valign="middle" align="left"> &nbsp; </td>
 
28710
<td valign="middle" align="left"> &nbsp; </td>
 
28711
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
28712
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
28713
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
28714
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
28715
</tr></table>
 
28716
<a name="st_005fswitch-1"></a>
 
28717
<h3 class="subsection">9.5.61 st_switch</h3>
 
28718
<a name="index-st_005fswitch"></a>
 
28719
 
 
28720
<p>A classical on/off switch that toggles its state on actors hitting the stone.
 
28721
Of course other objects can send messages on actions to make this switch turning.
 
28722
</p>
 
28723
<p>Three variants of the switch do exist. A neutral, grey colored one that reacts
 
28724
on any actor hits, and a black and a white colored switch. These last two
 
28725
switches will react only if hit by actors of matching color.
 
28726
</p>
 
28727
<p>If a switch turns on or off there will be a short delay until it reaches the
 
28728
new state and performs it actions. If you need a switch without delay you
 
28729
need to set the &lsquo;<samp>instant</samp>&rsquo; attribute.
 
28730
</p>
 
28731
<dl compact="compact">
 
28732
<dt> <b>Attributes:</b></dt>
 
28733
<dd>
 
28734
<dl compact="compact">
 
28735
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>OFF</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
28736
<dt> <b>color</b> &nbsp;&nbsp;<i>values</i>: <code>nil</code>, <code>BLACK</code>, <code>WHITE</code>; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
28737
<dd><p>The color of the switch that needs to match the hitting actor to cause a toggle.
 
28738
The default &lsquo;<samp>nil</samp>&rsquo; color is a grey switch that matches all actors, marbles,
 
28739
pearls or killers of any color as well as all other actors.
 
28740
</p></dd>
 
28741
<dt> <b>instant</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
28742
<dd><p>A default switch requires a short time equivalent to the animation until the
 
28743
new state is reached and the actions are performed. An instant switch jumps
 
28744
directly into the new state.
 
28745
</p></dd>
 
28746
</dl>
 
28747
 
 
28748
</dd>
 
28749
<dt> <b>Messages:</b></dt>
 
28750
<dd>
 
28751
<dl compact="compact">
 
28752
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
28753
<dd><p>Switches on at value &lsquo;<samp>1</samp>&rsquo;, and off at values &lsquo;<samp>0</samp>&rsquo;.
 
28754
</p></dd>
 
28755
<dt> <b>on</b> &nbsp;&nbsp;See section <a href="#on">on</a></dt>
 
28756
<dt> <b>off</b> &nbsp;&nbsp;See section <a href="#off">off</a></dt>
 
28757
</dl>
 
28758
 
 
28759
</dd>
 
28760
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
28761
<dt> <b>Variants:</b></dt>
 
28762
<dd>
 
28763
<dl compact="compact">
 
28764
<dt> <img src="images/st_switch.png" alt="images/st_switch"><p> <b>st_switch</b>
 
28765
</p></dt>
 
28766
<dt> <img src="images/st_switch_black.png" alt="images/st_switch_black"><p> <b>st_switch_black</b>: color = <code>BLACK</code>
 
28767
</p></dt>
 
28768
<dt> <img src="images/st_switch_white.png" alt="images/st_switch_white"><p> <b>st_switch_white</b>: color = <code>WHITE</code>
 
28769
</p></dt>
 
28770
</dl>
 
28771
 
 
28772
</dd>
 
28773
</dl>
 
28774
 
 
28775
<hr size="6">
 
28776
<a name="st_005fthief"></a>
 
28777
<table cellpadding="1" cellspacing="1" border="0">
 
28778
<tr><td valign="middle" align="left">[<a href="#st_005fswitch" title="Previous section in reading order"> &lt; </a>]</td>
 
28779
<td valign="middle" align="left">[<a href="#st_005ftimer" title="Next section in reading order"> &gt; </a>]</td>
 
28780
<td valign="middle" align="left"> &nbsp; </td>
 
28781
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
28782
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
28783
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
28784
<td valign="middle" align="left"> &nbsp; </td>
 
28785
<td valign="middle" align="left"> &nbsp; </td>
 
28786
<td valign="middle" align="left"> &nbsp; </td>
 
28787
<td valign="middle" align="left"> &nbsp; </td>
 
28788
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
28789
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
28790
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
28791
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
28792
</tr></table>
 
28793
<a name="st_005fthief-1"></a>
 
28794
<h3 class="subsection">9.5.62 st_thief</h3>
 
28795
<a name="index-st_005fthief"></a>
 
28796
 
 
28797
<p>A thief steals an item from the player&rsquo;s inventory when it is hit by an owned
 
28798
actor. Unfortunately the thief is visually indistinguishable from a
 
28799
<a href="#st_005fbluegray">st_bluegray</a>.
 
28800
</p>
 
28801
<p>The item is not directly stolen at the moment of the hit. The hit itself just
 
28802
causes the thief to emerge from his hiding-place. The thief steals from the
 
28803
actor that did hit the stone at the moment of maximum visibility. He takes
 
28804
a random item from the owner&rsquo;s inventory. But he just will steal an item if
 
28805
the actor is not shielded due to an activated <a href="#it_005fumbrella">it_umbrella</a>.
 
28806
</p>
 
28807
<p>Thieves have an addiction to alcohol. Thus they get drunken and inactive if
 
28808
they happen to steal a bottle filled with stuff.
 
28809
</p>
 
28810
<p>Thieves have an enemy - the <a href="#st_005fchess">st_chess</a>. If a chess stone is pushed onto
 
28811
a thief it will capture the thief, sober or drunken. The thief stone vanishes
 
28812
and the chess stone jumps onto its position. But the thief will leave behind
 
28813
on the grid all stolen items in his own <a href="#it_005fbag">it_bag</a>. If an item happens to
 
28814
be positioned beneath the captured thief stone, this item will be added to
 
28815
the thief&rsquo;s bag, too. If the thief has not stolen any items he leaves no empty
 
28816
bag.
 
28817
</p>
 
28818
<dl compact="compact">
 
28819
<dt> <b>Attributes:</b> none</dt>
 
28820
<dt> <b>Messages:</b> none</dt>
 
28821
<dt> <b>Action:</b>  none</dt>
 
28822
<dt> <b>Variants:</b></dt>
 
28823
<dd><dl compact="compact">
 
28824
<dt> <img src="images/st_bluegray.png" alt="images/st_bluegray"><p> <b>st_thief</b>: hidden
 
28825
</p></dt>
 
28826
<dt> <img src="images/st_thief.png" alt="images/st_thief"><p> <b>st_thief</b>: showing up at the moment when stealing items
 
28827
</p></dt>
 
28828
<dt> <img src="images/st_thief_capture.png" alt="images/st_thief_capture"><p> <b>st_thief</b>: when being captured
 
28829
</p></dt>
 
28830
<dt> <img src="images/st_thief_drunken.png" alt="images/st_thief_drunken"><p> <b>st_thief</b>: drunken thief
 
28831
</p></dt>
 
28832
</dl>
 
28833
</dd>
 
28834
</dl>
 
28835
 
 
28836
<hr size="6">
 
28837
<a name="st_005ftimer"></a>
 
28838
<table cellpadding="1" cellspacing="1" border="0">
 
28839
<tr><td valign="middle" align="left">[<a href="#st_005fthief" title="Previous section in reading order"> &lt; </a>]</td>
 
28840
<td valign="middle" align="left">[<a href="#st_005fturnstile" title="Next section in reading order"> &gt; </a>]</td>
 
28841
<td valign="middle" align="left"> &nbsp; </td>
 
28842
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
28843
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
28844
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
28845
<td valign="middle" align="left"> &nbsp; </td>
 
28846
<td valign="middle" align="left"> &nbsp; </td>
 
28847
<td valign="middle" align="left"> &nbsp; </td>
 
28848
<td valign="middle" align="left"> &nbsp; </td>
 
28849
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
28850
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
28851
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
28852
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
28853
</tr></table>
 
28854
<a name="st_005ftimer-1"></a>
 
28855
<h3 class="subsection">9.5.63 st_timer</h3>
 
28856
<a name="index-st_005ftimer"></a>
 
28857
 
 
28858
<p>This stone can be used to trigger a delayed single or periodic events. An
 
28859
active, switched on timer is usually visualized by an animation. An inactive,
 
28860
switched off timer shows a static image. An alternative to an invisible timer
 
28861
stone is an <a href="#ot_005ftimer">ot_timer</a> gadget.
 
28862
</p>
 
28863
<p>Note that this is an exceptional object as its default state is &lsquo;<samp>ON</samp>&rsquo; to
 
28864
support the most common case of immediately running timers.
 
28865
</p>
 
28866
<p>A single shot, not looping timer will send an action value of &lsquo;<samp>true</samp>&rsquo;. A
 
28867
looping timer will alternate the boolean action values starting with value
 
28868
&lsquo;<samp>true</samp>&rsquo;. You can use <a href="#inverse">inverse</a> to start with a value of &lsquo;<samp>false</samp>&rsquo;.
 
28869
</p>
 
28870
<p>If you stop a timer by switching it off, no further events will be performed.
 
28871
Restarting the timer by switching it on again will restart the timer like
 
28872
a new timer.
 
28873
</p>
 
28874
<p>The time interval to the first event and between subsequent events can be relied
 
28875
on to an accuracy of 0.01 seconds. But due to performance reasons and visibility
 
28876
of the reactions timers should not be set to intervals below 0.1 seconds. An
 
28877
interval of less than 0.01 seconds is not valid for a looping timer.
 
28878
</p>
 
28879
<dl compact="compact">
 
28880
<dt> <b>Attributes:</b></dt>
 
28881
<dd>
 
28882
<dl compact="compact">
 
28883
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>ON</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
28884
<dd><p>An &lsquo;<samp>ON</samp>&rsquo; state timer is running. A timer in state &lsquo;<samp>OFF</samp>&rsquo; is reset and
 
28885
waiting for reactivation.
 
28886
</p></dd>
 
28887
<dt> <b>invisible</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
28888
<dd><p>An invisible timer is totally transparent. But the user may notice it, as actors
 
28889
cannot pass and other stones cannot be moved onto the same grid position.
 
28890
</p></dd>
 
28891
<dt> <b>interval</b> &nbsp;&nbsp;<i>values</i>: positive number; &nbsp;&nbsp;<i>default</i>: <code>1.0</code></dt>
 
28892
<dd><p>Number of seconds until the first and between subsequent events. The interval
 
28893
must be larger or equal 0.01 seconds for looping timers.
 
28894
</p></dd>
 
28895
<dt> <b>loop</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
28896
<dd><p>A looping timer will send periodic events.
 
28897
</p></dd>
 
28898
</dl>
 
28899
 
 
28900
</dd>
 
28901
<dt> <b>Messages:</b></dt>
 
28902
<dd>
 
28903
<dl compact="compact">
 
28904
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
28905
<dd><p>Switches on at value &lsquo;<samp>1</samp>&rsquo;, and off at values &lsquo;<samp>0</samp>&rsquo;.
 
28906
</p></dd>
 
28907
<dt> <b>on</b> &nbsp;&nbsp;See section <a href="#on">on</a></dt>
 
28908
<dt> <b>off</b> &nbsp;&nbsp;See section <a href="#off">off</a></dt>
 
28909
</dl>
 
28910
 
 
28911
</dd>
 
28912
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
28913
<dd><p>The action value starts with &lsquo;<samp>true</samp>&rsquo; and alternates on every event between
 
28914
&lsquo;<samp>false</samp>&rsquo; and &lsquo;<samp>true</samp>&rsquo;. A timer that is reset starts again with value
 
28915
&lsquo;<samp>true</samp>&rsquo;
 
28916
</p>
 
28917
</dd>
 
28918
<dt> <b>Variants:</b></dt>
 
28919
<dd><dl compact="compact">
 
28920
<dt> <img src="images/st_timer_3.png" alt="images/st_timer_3"><p> <b>st_timer</b>: state = <code>OFF</code>
 
28921
</p></dt>
 
28922
<dt> <img src="images/st_timer.png" alt="images/st_timer"><p> <b>st_timer</b>: state = <code>ON</code>
 
28923
</p></dt>
 
28924
</dl>
 
28925
</dd>
 
28926
</dl>
 
28927
 
 
28928
<hr size="6">
 
28929
<a name="st_005fturnstile"></a>
 
28930
<table cellpadding="1" cellspacing="1" border="0">
 
28931
<tr><td valign="middle" align="left">[<a href="#st_005ftimer" title="Previous section in reading order"> &lt; </a>]</td>
 
28932
<td valign="middle" align="left">[<a href="#st_005fturnstilearm" title="Next section in reading order"> &gt; </a>]</td>
 
28933
<td valign="middle" align="left"> &nbsp; </td>
 
28934
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
28935
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
28936
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
28937
<td valign="middle" align="left"> &nbsp; </td>
 
28938
<td valign="middle" align="left"> &nbsp; </td>
 
28939
<td valign="middle" align="left"> &nbsp; </td>
 
28940
<td valign="middle" align="left"> &nbsp; </td>
 
28941
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
28942
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
28943
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
28944
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
28945
</tr></table>
 
28946
<a name="st_005fturnstile-1"></a>
 
28947
<h3 class="subsection">9.5.64 st_turnstile</h3>
 
28948
<a name="index-st_005fturnstile"></a>
 
28949
 
 
28950
<p>A turnstile is a stone cluster that consists of a central pivot, this
 
28951
&lsquo;<samp>st_turnstile</samp>&rsquo;, and up to four neighboring <a href="#st_005fturnstilearm">st_turnstilearm</a>s of
 
28952
connecting orientations. When one the arms is hit by an actor or receives a
 
28953
stone pushing impulse by another object (e.g. &lsquo;<samp>st_rotator</samp>&rsquo;, &lsquo;<samp>ot_wire</samp>&rsquo;,
 
28954
&lsquo;<samp>it_puller</samp>&rsquo;, ...), the whole cluster turns by 90 degrees into the impulse
 
28955
direction. Of course the turnstile complex just turns if it is not blocked by
 
28956
other stones in its surrounding. Even movable stones will block turnstiles.
 
28957
</p>
 
28958
<p>There are two &lsquo;<samp>flavor</samp>&rsquo;s of turnstiles. The common &lsquo;<samp>red</samp>&rsquo; version
 
28959
pulls only the actor, that did hit the arm. It keeps it behind the
 
28960
&lsquo;<samp>st_turnstilearm</samp>&rsquo; and shatters all others in its surrounding. Whereas the
 
28961
&lsquo;<samp>green</samp>&rsquo; version pushes all actors with its attached &lsquo;<samp>st_turnstilearm</samp>&rsquo;s
 
28962
and keeps them in front of the arms. Just actors being in range of the arms will
 
28963
be pushed. That means that they need to be in a distance of less than 1.5 grids
 
28964
to the center of the pivot. Thus actors located at the very edge of the
 
28965
diagonal grid positions will not be pushed. As actors can not be moved out of
 
28966
the world, a green turnstile positioned at the level border that moves an arm
 
28967
to the border will shatter actors instead.
 
28968
</p>
 
28969
<p>Any actor moved by a turnstile is directly warped to its new position without
 
28970
touching any grid in between. Thus actors can pass abyss or water floors,
 
28971
but they will not grab any items located on the grid positions in between.
 
28972
The relative position of an actor within the grid is maintained during its
 
28973
circular move. Thus two small actors moved at the same time keep their relative
 
28974
positioning. It is guaranteed that any moved actors will fall even into a tiny
 
28975
<a href="#it_005fmeditation">it_meditation</a>_dent that is positioned at the destination grid.
 
28976
</p>
 
28977
<p>Items in the range of the rotating arms will act like a stone being pushed over
 
28978
them.
 
28979
</p>
 
28980
<p>When green turnstiles push actors to a diagonal grid position they will push
 
28981
away an <a href="#st_005fturnstilearm">st_turnstilearm</a>, and just this single kind of stone, if it is
 
28982
located on this target grid. This feature can be used to intertwine several
 
28983
turnstiles as it can be seen in the level &lsquo;<samp>ZigZag</samp>&rsquo;.
 
28984
</p>
 
28985
<p>There are two other ways of coupling turnstiles. You can simply set another
 
28986
&lsquo;<samp>st_turnstile</samp>&rsquo; as the target of a first one and perform a &lsquo;<samp>signal</samp>&rsquo;
 
28987
action. This will turn both turnstiles in the same direction. But if one is
 
28988
blocked the rotations will desynchronize.
 
28989
</p>
 
28990
<p>Another way is the coupling of two <a href="#st_005fturnstilearm">st_turnstilearm</a>s via an <a href="#ot_005fwire">ot_wire</a>.
 
28991
A turnstile will propagate its rotation impulses via an wire that is connected
 
28992
at one of its arms. Two turnstiles connected by wired arms will resynchronize in their
 
28993
rotation even if one of them is temporarily blocked.
 
28994
</p>
 
28995
<p>Turnstiles can be turned by standard messages and attributes. They do even
 
28996
evaluate the turns and keep the attribute &lsquo;<samp>orientation</samp>&rsquo; up to date for
 
28997
easy read evaluation of the current turnstile orientation.
 
28998
</p>
 
28999
<dl compact="compact">
 
29000
<dt> <b>Attributes:</b></dt>
 
29001
<dd><dl compact="compact">
 
29002
<dt> <b>flavor</b> &nbsp;&nbsp;<i>values</i>: <code>&quot;red&quot;</code>, <code>&quot;green&quot;</code>; &nbsp;&nbsp;<i>default</i>: <code>&quot;red&quot;</code></dt>
 
29003
<dd><p>The distinguishing color of the pivot that signals the behaviour.
 
29004
</p></dd>
 
29005
<dt> <b>counterclock</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
29006
<dd><p>The standard turning direction is clockwise. Use this attribute to revert the
 
29007
direction.
 
29008
<a name="index-orientation-2"></a>
 
29009
</p></dd>
 
29010
<dt> <b>orientation</b>, &nbsp;&nbsp;<i>values</i>: <code>NORTH</code>, <code>EAST</code>, <code>SOUTH</code>, <code>WEST</code>; &nbsp;&nbsp;<i>default</i>: <code>NORTH</code></dt>
 
29011
<dd><p>The orientation of the turnstile that is only visible by its arms. Setting
 
29012
this attribute just defines a new base, but does not turn the turnstile as the
 
29013
orientation would not be defined. But every rotation does update this attribute
 
29014
relative to its previous value.
 
29015
</p></dd>
 
29016
</dl>
 
29017
 
 
29018
</dd>
 
29019
<dt> <b>Messages:</b></dt>
 
29020
<dd>
 
29021
<dl compact="compact">
 
29022
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
29023
<dd><p>Rotates the turnstile counterclockwise on &lsquo;<samp>1</samp>&rsquo;, and clockwise at values &lsquo;<samp>0</samp>&rsquo;.
 
29024
</p></dd>
 
29025
<dt> <b>turn</b></dt>
 
29026
<dd><p>Turns in turning direction as defined by attribute &lsquo;<samp>counterclock</samp>&rsquo;.
 
29027
</p></dd>
 
29028
<dt> <b>turnback</b></dt>
 
29029
<dd><p>Turns in opposite turning direction as defined by attribute &lsquo;<samp>counterclock</samp>&rsquo;.
 
29030
</p></dd>
 
29031
</dl>
 
29032
 
 
29033
</dd>
 
29034
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
29035
<dd><p>At the end of each turn the action is performed with a value of &lsquo;<samp>true</samp>&rsquo;
 
29036
on counterclock turns and &lsquo;<samp>false</samp>&rsquo; on clockwise turns.
 
29037
</p>
 
29038
</dd>
 
29039
<dt> <b>Variants:</b></dt>
 
29040
<dd><dl compact="compact">
 
29041
<dt> <img src="images/st_turnstile.png" alt="images/st_turnstile"><p> <b>st_turnstile</b>: flavor = <code>&quot;red&quot;</code>
 
29042
</p></dt>
 
29043
<dt> <img src="images/st_turnstile.png" alt="images/st_turnstile"><p> <b>st_turnstile_red</b>: flavor = <code>&quot;red&quot;</code>
 
29044
</p></dt>
 
29045
<dt> <img src="images/st_turnstile_green.png" alt="images/st_turnstile_green"><p> <b>st_turnstile_green</b>: flavor = <code>&quot;green&quot;</code>
 
29046
</p></dt>
 
29047
</dl>
 
29048
</dd>
 
29049
</dl>
 
29050
 
 
29051
<hr size="6">
 
29052
<a name="st_005fturnstilearm"></a>
 
29053
<table cellpadding="1" cellspacing="1" border="0">
 
29054
<tr><td valign="middle" align="left">[<a href="#st_005fturnstile" title="Previous section in reading order"> &lt; </a>]</td>
 
29055
<td valign="middle" align="left">[<a href="#st_005fvolcano" title="Next section in reading order"> &gt; </a>]</td>
 
29056
<td valign="middle" align="left"> &nbsp; </td>
 
29057
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29058
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
29059
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29060
<td valign="middle" align="left"> &nbsp; </td>
 
29061
<td valign="middle" align="left"> &nbsp; </td>
 
29062
<td valign="middle" align="left"> &nbsp; </td>
 
29063
<td valign="middle" align="left"> &nbsp; </td>
 
29064
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29065
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29066
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29067
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29068
</tr></table>
 
29069
<a name="st_005fturnstilearm-1"></a>
 
29070
<h3 class="subsection">9.5.65 st_turnstilearm</h3>
 
29071
<a name="index-st_005fturnstilearm"></a>
 
29072
 
 
29073
<p>An arm that usually connects to an <a href="#st_005fturnstile">st_turnstile</a> pivot building a turnstile
 
29074
cluster. The arm&rsquo;s subkind suffix, its state and orientation are named according
 
29075
to the arm&rsquo;s position within the turnstile cluster. Thus a &lsquo;<samp>NORTH</samp>&rsquo; arm has
 
29076
a single standard connection of <code>&quot;s&quot;</code>, the reverse orientation.
 
29077
</p>
 
29078
<p>As long as a turnstile arm is not connected to a pivot it is a free movable
 
29079
stone. Intentionally it is visually indistinguishable from a <a href="#st_005fpuzzle">st_puzzle</a>
 
29080
with the same connections. But neither an arm will not connect to other
 
29081
<a href="#st_005fpuzzle">st_puzzle</a> nor a puzzle to a pivot.
 
29082
</p>
 
29083
<p>An arm is connected to a pivot on a neighboring grid position solely by a
 
29084
matching connection. It is no longer freely movable. All its impulses will turn
 
29085
the <a href="#st_005fturnstile">st_turnstile</a> cluster instead.
 
29086
</p>
 
29087
<p>A special move of an arm is due to actors being moved by another green
 
29088
<a href="#st_005fturnstile">st_turnstile</a> to its position. The arm receives an impulse by the other
 
29089
pivot and will either move straight forward or turn its own pivot if being
 
29090
part of a cluster.
 
29091
</p>
 
29092
<p>The orientation of an arm can be set by attribute or messages. Neither way will
 
29093
generate an impulse to turn a connected turnstile cluster. The arm will be
 
29094
reorientated alone.
 
29095
</p>
 
29096
<dl compact="compact">
 
29097
<dt> <b>Attributes:</b></dt>
 
29098
<dd>
 
29099
<dl compact="compact">
 
29100
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>NORTH</code>, <code>EAST</code>, <code>SOUTH</code>, <code>WEST</code>; &nbsp;&nbsp;<i>default</i>: <code>NORTH</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
29101
<dd><p>The position of an arm in a turnstile cluster.
 
29102
<a name="index-orientation-3"></a>
 
29103
</p></dd>
 
29104
<dt> <b>orientation</b>, &nbsp;&nbsp;<i>values</i>: <code>NORTH</code>, <code>EAST</code>, <code>SOUTH</code>, <code>WEST</code>; &nbsp;&nbsp;<i>default</i>: <code>NORTH</code></dt>
 
29105
<dd><p>The position of an arm in a turnstile cluster.
 
29106
</p></dd>
 
29107
<dt> <b>connections</b> &nbsp;&nbsp;<i>values</i>: string; &nbsp;&nbsp;<i>default</i>: <code>&quot;s&quot;</code></dt>
 
29108
<dd><p>Describes the <a href="#st_005fpuzzle">st_puzzle</a> like connection that is the opposite of the
 
29109
orientation. The string is a string of a single character describing the
 
29110
sole connection.
 
29111
</p></dd>
 
29112
</dl>
 
29113
 
 
29114
</dd>
 
29115
<dt> <b>Messages:</b></dt>
 
29116
<dd>
 
29117
<dl compact="compact">
 
29118
<dd><a name="index-orientate-2"></a>
 
29119
</dd>
 
29120
<dt> <b>orientate</b>, &nbsp;&nbsp;<i>value type</i>: orientation</dt>
 
29121
<dd><p>Change the orientation to the given orientation value. The <a href="#st_005ffourswitch">st_fourswitch</a>
 
29122
provides a compatible action which allows you to set an arm as
 
29123
target and this message as action.
 
29124
</p></dd>
 
29125
</dl>
 
29126
 
 
29127
</dd>
 
29128
<dt> <b>Action:</b> none</dt>
 
29129
<dt> <b>Variants:</b></dt>
 
29130
<dd><dl compact="compact">
 
29131
<dt> <img src="images/st_puzzle_blue_3.png" alt="images/st_puzzle_blue_3"><p> <b>st_turnstilearm</b>: orientation = <code>NORTH</code>
 
29132
</p></dt>
 
29133
<dt> <img src="images/st_puzzle_blue_3.png" alt="images/st_puzzle_blue_3"><p> <b>st_turnstilearm_n</b>: orientation = <code>NORTH</code>
 
29134
</p></dt>
 
29135
<dt> <img src="images/st_puzzle_blue_2.png" alt="images/st_puzzle_blue_2"><p> <b>st_turnstilearm_e</b>: orientation = <code>EAST</code>
 
29136
</p></dt>
 
29137
<dt> <img src="images/st_puzzle_blue_c.png" alt="images/st_puzzle_blue_c"><p> <b>st_turnstilearm_s</b>: orientation = <code>SOUTH</code>
 
29138
</p></dt>
 
29139
<dt> <img src="images/st_puzzle_blue_b.png" alt="images/st_puzzle_blue_b"><p> <b>st_turnstilearm_w</b>: orientation = <code>WEST</code>
 
29140
</p></dt>
 
29141
</dl>
 
29142
</dd>
 
29143
</dl>
 
29144
 
 
29145
<hr size="6">
 
29146
<a name="st_005fvolcano"></a>
 
29147
<table cellpadding="1" cellspacing="1" border="0">
 
29148
<tr><td valign="middle" align="left">[<a href="#st_005fturnstilearm" title="Previous section in reading order"> &lt; </a>]</td>
 
29149
<td valign="middle" align="left">[<a href="#st_005fwindow" title="Next section in reading order"> &gt; </a>]</td>
 
29150
<td valign="middle" align="left"> &nbsp; </td>
 
29151
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29152
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
29153
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29154
<td valign="middle" align="left"> &nbsp; </td>
 
29155
<td valign="middle" align="left"> &nbsp; </td>
 
29156
<td valign="middle" align="left"> &nbsp; </td>
 
29157
<td valign="middle" align="left"> &nbsp; </td>
 
29158
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29159
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29160
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29161
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29162
</tr></table>
 
29163
<a name="st_005fvolcano-1"></a>
 
29164
<h3 class="subsection">9.5.66 st_volcano</h3>
 
29165
<a name="index-st_005fvolcano"></a>
 
29166
 
 
29167
<p>A volcano stone spreads slowly to neighboring grid positions filling up
 
29168
complete areas and will just stop on boundaries set by other stones.
 
29169
</p>
 
29170
<p>A volcano can either start by the setting of an &lsquo;<samp>ACTIVE</samp>&rsquo; variant, by
 
29171
an inactive &lsquo;<samp>IDLE</samp>&rsquo; variant being triggered by a message or a hitting
 
29172
<a href="#st_005fboulder">st_boulder</a>, or by an <a href="#it_005fseed">it_seed</a> of flavor <code>volcano</code> being dropped
 
29173
or triggered.
 
29174
</p>
 
29175
<p>Once being activated a volcano stone spreads randomly to its direct neighbor
 
29176
positions. Even though the new set volcano seeds can be passed by actors
 
29177
without harm for a short period of time the volcano gets lethal while growing.
 
29178
After reaching its full size a volcano remains for a random time in an active,
 
29179
glowing state spreading to neighbour positions. During this phase an actor
 
29180
with a revealed <a href="#it_005fhammer">it_hammer</a> can destroy the active volcano stone.
 
29181
</p>
 
29182
<p>The spreading of the volcano can be made &lsquo;<samp>secure</samp>&rsquo; by setting this attribute
 
29183
to &lsquo;<samp>true</samp>&rsquo;. Per default the spreading in not secure and a volcano may
 
29184
stop spreading with a certain chance anywhere, but especially in narrow gateways.
 
29185
In contrast a secure volcano remains active until it is guaranteed that all its
 
29186
neighbor grid positions will be filled with volcano stones.
 
29187
</p>
 
29188
<p>After its active phase a volcano reaches its final inactive state and can not
 
29189
be reactivated anymore.
 
29190
</p>
 
29191
<p>A volcano stone will press any <a href="#it_005ftrigger">it_trigger</a> as soon as it starts growing.
 
29192
</p>
 
29193
<p>!!Work in progress!! special behaviour on items and floors may yet be added
 
29194
</p>
 
29195
<dl compact="compact">
 
29196
<dt> <b>Attributes:</b></dt>
 
29197
<dd><dl compact="compact">
 
29198
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>IDLE</code>, <code>ACTIVE</code>; &nbsp;&nbsp;<i>default</i>: <code>IDLE</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
29199
<dd><p>Inactive, finished and breaking volcano will report an &lsquo;<samp>IDLE</samp>&rsquo; state,
 
29200
new, growing and active volcano will report an &lsquo;<samp>ACTIVE</samp>&rsquo; state. An inactive
 
29201
volcano can be activated by setting the state to &lsquo;<samp>ACTIVE</samp>&rsquo;. All other
 
29202
attempts to set the state will be silently ignored.
 
29203
</p></dd>
 
29204
<dt> <b>secure</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
29205
<dd><p>A secure volcano will spread a complete area with guarantee.
 
29206
</p></dd>
 
29207
</dl>
 
29208
 
 
29209
</dd>
 
29210
<dt> <b>Messages:</b></dt>
 
29211
<dd><dl compact="compact">
 
29212
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
29213
<dd><p>Activates an inactive volcano stone.
 
29214
</p></dd>
 
29215
</dl>
 
29216
 
 
29217
</dd>
 
29218
<dt> <b>Variants:</b></dt>
 
29219
<dd><dl compact="compact">
 
29220
<dt> <img src="images/st_flat.png" alt="images/st_flat"><p> <b>st_volcano</b>: state = <code>IDLE</code>
 
29221
</p></dt>
 
29222
<dt> <img src="images/st_flat.png" alt="images/st_flat"><p> <b>st_volcano_idle</b>: state = <code>IDLE</code>
 
29223
</p></dt>
 
29224
<dt> <img src="images/st_quake_3.png" alt="images/st_quake_3"><p> <b>st_volcano_active</b>: state = <code>ACTIVE</code>
 
29225
</p></dt>
 
29226
<dt> <img src="images/it_seed.png" alt="images/it_seed"><p> <b>st_volcano_new</b>:
 
29227
</p></dt>
 
29228
<dd><p>An active volcano starting in the seed like phase.
 
29229
</p></dd>
 
29230
<dt> <img src="images/st_volcano_growing.png" alt="images/st_volcano_growing"><p> <b>st_volcano_growing</b>:
 
29231
</p></dt>
 
29232
<dd><p>An active volcano starting in the growing phase.
 
29233
</p></dd>
 
29234
</dl>
 
29235
</dd>
 
29236
</dl>
 
29237
 
 
29238
<hr size="6">
 
29239
<a name="st_005fwindow"></a>
 
29240
<table cellpadding="1" cellspacing="1" border="0">
 
29241
<tr><td valign="middle" align="left">[<a href="#st_005fvolcano" title="Previous section in reading order"> &lt; </a>]</td>
 
29242
<td valign="middle" align="left">[<a href="#st_005fyinyang" title="Next section in reading order"> &gt; </a>]</td>
 
29243
<td valign="middle" align="left"> &nbsp; </td>
 
29244
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29245
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
29246
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29247
<td valign="middle" align="left"> &nbsp; </td>
 
29248
<td valign="middle" align="left"> &nbsp; </td>
 
29249
<td valign="middle" align="left"> &nbsp; </td>
 
29250
<td valign="middle" align="left"> &nbsp; </td>
 
29251
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29252
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29253
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29254
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29255
</tr></table>
 
29256
<a name="st_005fwindow-1"></a>
 
29257
<h3 class="subsection">9.5.67 st_window</h3>
 
29258
<a name="index-st_005fwindow"></a>
 
29259
 
 
29260
<p>A stone made up just of glass window faces. All combinations of window faces with
 
29261
at least one face are possible. There exist two versions of windows, normal
 
29262
blue colored glass and green colored safety glass, that is nearly indestructible.
 
29263
Safety glass is selected by setting the attribute &lsquo;<samp>secure</samp>&rsquo; to &lsquo;<samp>true</samp>&rsquo;.
 
29264
Every glass face can be weakened by &lsquo;<samp>scratches</samp>&rsquo; which are visible in the
 
29265
shadows.
 
29266
</p>
 
29267
<p>All windows are transparent to laser light.
 
29268
</p>
 
29269
<p>Slowly moving actors will bounce from window faces on any side. They can freely
 
29270
move within the inner part of the window stone. Invisible actors can even pass
 
29271
the normal blue window faces, but not the green safety glass faces.
 
29272
</p>
 
29273
<p>Fast moving actors can blast normal blue window faces into smithereens. But too
 
29274
strong hits will cause marbles to shatter themselves. An actor can lower the
 
29275
required speed by adding <a href="#it_005fweight">it_weight</a>, by revealing an <a href="#it_005fhammer">it_hammer</a>, or by
 
29276
weakening the window faces by prior scratching it with an <a href="#it_005fring">it_ring</a>. Green
 
29277
safety glass windows will never break on actor attacks and actors will not
 
29278
shatter on hitting safety glass.
 
29279
</p>
 
29280
<p>Bomb explosions can shatter window faces, too. Normal blue window faces adjacent
 
29281
to a bomb explosion will break. Green safety glass faces will break only if
 
29282
prior weakened by an <a href="#it_005fring">it_ring</a> scratch.
 
29283
</p>
 
29284
<p>Window faces can be rearranged by actors with a revealed <a href="#it_005fwrench">it_wrench</a>.
 
29285
Pushing a face from the outside may move it to the opposite side of the window.
 
29286
But it will only move to the opposite side if there is not already a window face.
 
29287
And additionally the grid position adjacent to the opposite side must be free
 
29288
of a stone. Just another window stone without an adjacent window face is allowed
 
29289
on this position. The reason is, that the moving window face will push
 
29290
non static items and any actors positioned on the affected window grid to the
 
29291
next grid. If this grid is already occupied by an item, the window grid item
 
29292
will be <a href="#it_005fsquashed">it_squashed</a>.
 
29293
</p>
 
29294
<p>Window face rearrangements can also be initiated by an <a href="#it_005fpuller">it_puller</a> dropped
 
29295
within the window and by the message &lsquo;<samp>inner_pull</samp>&rsquo;.
 
29296
</p>
 
29297
<p>Windows do support <a href="#Flood-Spreading">Flood Spreading</a> and <a href="#Fire-Spreading">Fire Spreading</a> through open
 
29298
faces.
 
29299
</p>
 
29300
<dl compact="compact">
 
29301
<dt> <b>Attributes:</b></dt>
 
29302
<dd>
 
29303
<dl compact="compact">
 
29304
<dt> <b>faces</b> &nbsp;&nbsp;<i>values</i>: string; &nbsp;&nbsp;<i>default</i>: <code>&quot;s&quot;</code></dt>
 
29305
<dd><p>Describes the window faces of the stone. The string is a substring of
 
29306
<code>&quot;nesw&quot;</code> listing the faces. The sequence of the sides, north, east, south,
 
29307
west, is guaranteed on read access but arbitrary on write access.
 
29308
</p></dd>
 
29309
<dt> <b>secure</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
29310
<dd><p>Green safety glass is secure, whereas normal blue is not.
 
29311
</p></dd>
 
29312
<dt> <b>scratches</b> &nbsp;&nbsp;<i>values</i>: string; &nbsp;&nbsp;<i>default</i>: <code>&quot;&quot;</code></dt>
 
29313
<dd><p>Describes the scratched window faces of the stone. The string is a substring of
 
29314
<code>&quot;nesw&quot;</code> listing the affected faces. The sequence of the sides, north, east,
 
29315
south, west, is guaranteed on read access but arbitrary on write access.
 
29316
</p></dd>
 
29317
</dl>
 
29318
 
 
29319
</dd>
 
29320
<dt> <b>Messages:</b></dt>
 
29321
<dd>
 
29322
<dl compact="compact">
 
29323
<dt> <b>inner_pull</b>, &nbsp;&nbsp;<i>value type</i>: orientation</dt>
 
29324
<dd><p>Tries to tear the opposite window face into the given orientation.
 
29325
</p></dd>
 
29326
</dl>
 
29327
 
 
29328
</dd>
 
29329
<dt> <b>Variants:</b></dt>
 
29330
<dd><table>
 
29331
<tr><td width="8%"><img src="images/st_window_blue_3.png" alt="images/st_window_blue_3"></td><td width="42%"><b>st_window</b>: faces = <code>&quot;s&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_3.png" alt="images/st_window_green_3"></td><td width="42%"><b>st_window</b>: faces = <code>&quot;s&quot;</code>, secure = <code>true</code></td></tr>
 
29332
<tr><td width="8%"><img src="images/st_window_blue_2.png" alt="images/st_window_blue_2"></td><td width="42%"><b>st_window_w</b>: faces = <code>&quot;w&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_2.png" alt="images/st_window_green_2"></td><td width="42%"><b>st_window_w</b>: faces = <code>&quot;w&quot;</code>, secure = <code>true</code></td></tr>
 
29333
<tr><td width="8%"><img src="images/st_window_blue_3.png" alt="images/st_window_blue_3"></td><td width="42%"><b>st_window_s</b>: faces = <code>&quot;s&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_3.png" alt="images/st_window_green_3"></td><td width="42%"><b>st_window_s</b>: faces = <code>&quot;s&quot;</code>, secure = <code>true</code></td></tr>
 
29334
<tr><td width="8%"><img src="images/st_window_blue_4.png" alt="images/st_window_blue_4"></td><td width="42%"><b>st_window_sw</b>: faces = <code>&quot;sw&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_4.png" alt="images/st_window_green_4"></td><td width="42%"><b>st_window_sw</b>: faces = <code>&quot;sw&quot;</code>, secure = <code>true</code></td></tr>
 
29335
<tr><td width="8%"><img src="images/st_window_blue_b.png" alt="images/st_window_blue_b"></td><td width="42%"><b>st_window_e</b>: faces = <code>&quot;e&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_b.png" alt="images/st_window_green_b"></td><td width="42%"><b>st_window_e</b>: faces = <code>&quot;e&quot;</code>, secure = <code>true</code></td></tr>
 
29336
<tr><td width="8%"><img src="images/st_window_blue_b2.png" alt="images/st_window_blue_b2"></td><td width="42%"><b>st_window_ew</b>: faces = <code>&quot;ew&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_b2.png" alt="images/st_window_green_b2"></td><td width="42%"><b>st_window_ew</b>: faces = <code>&quot;ew&quot;</code>, secure = <code>true</code></td></tr>
 
29337
<tr><td width="8%"><img src="images/st_window_blue_b3.png" alt="images/st_window_blue_b3"></td><td width="42%"><b>st_window_es</b>: faces = <code>&quot;es&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_b3.png" alt="images/st_window_green_b3"></td><td width="42%"><b>st_window_es</b>: faces = <code>&quot;es&quot;</code>, secure = <code>true</code></td></tr>
 
29338
<tr><td width="8%"><img src="images/st_window_blue_b4.png" alt="images/st_window_blue_b4"></td><td width="42%"><b>st_window_esw</b>: faces = <code>&quot;esw&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_b4.png" alt="images/st_window_green_b4"></td><td width="42%"><b>st_window_esw</b>: faces = <code>&quot;esw&quot;</code>, secure = <code>true</code></td></tr>
 
29339
<tr><td width="8%"><img src="images/st_window_blue_c.png" alt="images/st_window_blue_c"></td><td width="42%"><b>st_window_n</b>: faces = <code>&quot;n&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_c.png" alt="images/st_window_green_c"></td><td width="42%"><b>st_window_n</b>: faces = <code>&quot;n&quot;</code>, secure = <code>true</code></td></tr>
 
29340
<tr><td width="8%"><img src="images/st_window_blue_c2.png" alt="images/st_window_blue_c2"></td><td width="42%"><b>st_window_nw</b>: faces = <code>&quot;nw&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_c2.png" alt="images/st_window_green_c2"></td><td width="42%"><b>st_window_nw</b>: faces = <code>&quot;nw&quot;</code>, secure = <code>true</code></td></tr>
 
29341
<tr><td width="8%"><img src="images/st_window_blue_c3.png" alt="images/st_window_blue_c3"></td><td width="42%"><b>st_window_ns</b>: faces = <code>&quot;ns&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_c3.png" alt="images/st_window_green_c3"></td><td width="42%"><b>st_window_ns</b>: faces = <code>&quot;ns&quot;</code>, secure = <code>true</code></td></tr>
 
29342
<tr><td width="8%"><img src="images/st_window_blue_c4.png" alt="images/st_window_blue_c4"></td><td width="42%"><b>st_window_nsw</b>: faces = <code>&quot;nsw&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_c4.png" alt="images/st_window_green_c4"></td><td width="42%"><b>st_window_nsw</b>: faces = <code>&quot;nsw&quot;</code>, secure = <code>true</code></td></tr>
 
29343
<tr><td width="8%"><img src="images/st_window_blue_d.png" alt="images/st_window_blue_d"></td><td width="42%"><b>st_window_ne</b>: faces = <code>&quot;ne&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_d.png" alt="images/st_window_green_d"></td><td width="42%"><b>st_window_ne</b>: faces = <code>&quot;ne&quot;</code>, secure = <code>true</code></td></tr>
 
29344
<tr><td width="8%"><img src="images/st_window_blue_d2.png" alt="images/st_window_blue_d2"></td><td width="42%"><b>st_window_new</b>: faces = <code>&quot;new&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_d2.png" alt="images/st_window_green_d2"></td><td width="42%"><b>st_window_new</b>: faces = <code>&quot;new&quot;</code>, secure = <code>true</code></td></tr>
 
29345
<tr><td width="8%"><img src="images/st_window_blue_d3.png" alt="images/st_window_blue_d3"></td><td width="42%"><b>st_window_nes</b>: faces = <code>&quot;nes&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_d3.png" alt="images/st_window_green_d3"></td><td width="42%"><b>st_window_nes</b>: faces = <code>&quot;nes&quot;</code>, secure = <code>true</code></td></tr>
 
29346
<tr><td width="8%"><img src="images/st_window_blue_d4.png" alt="images/st_window_blue_d4"></td><td width="42%"><b>st_window_nesw</b>: faces = <code>&quot;nesw&quot;</code>, secure = <code>false</code></td><td width="8%"><img src="images/st_window_green_d4.png" alt="images/st_window_green_d4"></td><td width="42%"><b>st_window_nesw</b>: faces = <code>&quot;nesw&quot;</code>, secure = <code>true</code></td></tr>
 
29347
</table>
 
29348
</dd>
 
29349
</dl>
 
29350
 
 
29351
<hr size="6">
 
29352
<a name="st_005fyinyang"></a>
 
29353
<table cellpadding="1" cellspacing="1" border="0">
 
29354
<tr><td valign="middle" align="left">[<a href="#st_005fwindow" title="Previous section in reading order"> &lt; </a>]</td>
 
29355
<td valign="middle" align="left">[<a href="#Stone-Feature-Summaries" title="Next section in reading order"> &gt; </a>]</td>
 
29356
<td valign="middle" align="left"> &nbsp; </td>
 
29357
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29358
<td valign="middle" align="left">[<a href="#Special-Stones" title="Up section"> Up </a>]</td>
 
29359
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29360
<td valign="middle" align="left"> &nbsp; </td>
 
29361
<td valign="middle" align="left"> &nbsp; </td>
 
29362
<td valign="middle" align="left"> &nbsp; </td>
 
29363
<td valign="middle" align="left"> &nbsp; </td>
 
29364
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29365
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29366
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29367
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29368
</tr></table>
 
29369
<a name="st_005fyinyang-1"></a>
 
29370
<h3 class="subsection">9.5.68 st_yinyang</h3>
 
29371
<a name="index-st_005fyinyang"></a>
 
29372
 
 
29373
<p>A special switch that allows the user to toggle the <a href="#Player-and-Inventory">Player and Inventory</a>
 
29374
between <code>YIN</code> and <code>YANG</code>.
 
29375
</p>
 
29376
<p>In contrast to <a href="#it_005fyinyang">it_yinyang</a> the player can not switch at any point of time
 
29377
but is limited to situations where he can hit the stone by one of the actors
 
29378
he controls. Of course other objects can send <code>&quot;toggle&quot;</code> messages on
 
29379
actions to this switch, too. Additionally an <a href="#ot_005fcannonball">ot_cannonball</a> emitted by
 
29380
an <a href="#st_005fspitter">st_spitter</a> that now happens to fall on top of a yinyang stone
 
29381
activates it, too.
 
29382
</p>
 
29383
<p>When being activated the yinyang stone switches from the &lsquo;<samp>IDLE</samp>&rsquo; state to
 
29384
the &lsquo;<samp>ACTIVE</samp>&rsquo; state which is animated by a turning yinyang symbol. By
 
29385
default the player switch takes place at the end of this animation with the
 
29386
stone returning to its &lsquo;<samp>IDLE</samp>&rsquo; state.
 
29387
</p>
 
29388
<p>If you need a yinyang stone that switches without delay you need to set the
 
29389
&lsquo;<samp>instant</samp>&rsquo; attribute to &lsquo;<samp>true</samp>&rsquo;. The animation is executed after
 
29390
the switching. Note that even an instant stone variant can not be reactivated
 
29391
until it returns to its &lsquo;<samp>IDLE</samp>&rsquo; state after the completion of the animation.
 
29392
</p>
 
29393
<p>By default the yinyang stone loops between its two states &lsquo;<samp>IDLE</samp>&rsquo; and
 
29394
&lsquo;<samp>ACTIVE</samp>&rsquo;. This means the user can hit the stone many times causing every
 
29395
time a player toggle action. But if you set &lsquo;<samp>loop</samp>&rsquo; to &lsquo;<samp>false</samp>&rsquo; the
 
29396
yinyang stone will forward to the state &lsquo;<samp>INACTIVE</samp>&rsquo; after the next
 
29397
activation. Thus the user can use this stone just once to toggle the players.
 
29398
</p>
 
29399
<p>You can use an instance of this stone to toggle the player directly at the
 
29400
start of the level. Use an &lsquo;<samp>ACTIVE</samp>&rsquo; yinyang stone to switch after a short
 
29401
period of animation, or set additionally &lsquo;<samp>instant</samp>&rsquo; to &lsquo;<samp>true</samp>&rsquo; to switch
 
29402
the player before the user can act on <code>YIN</code>.
 
29403
</p>
 
29404
<dl compact="compact">
 
29405
<dt> <b>Attributes:</b></dt>
 
29406
<dd>
 
29407
<dl compact="compact">
 
29408
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>IDLE</code>, <code>ACTIVE</code>, <code>INACTIVE</code>; &nbsp;&nbsp;<i>default</i>: <code>IDLE</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
29409
<dd><p>An &lsquo;<samp>IDLE</samp>&rsquo; yinyang is ready for activation. An &lsquo;<samp>ACTIVE</samp>&rsquo; yinyang is
 
29410
performing its animation and rejects any further attempts to reactivate. An
 
29411
&lsquo;<samp>INACTIVE</samp>&rsquo; yinyang reached its final state and can not be reactivated by
 
29412
actor hits or toggle messages.
 
29413
</p></dd>
 
29414
<dt> <b>instant</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>false</code></dt>
 
29415
<dd><p>A default yinyang stone toggles the player after a short period of animation.
 
29416
An instant yinyang switches directly with start of the animation.
 
29417
</p></dd>
 
29418
<dt> <b>loop</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
29419
<dd><p>A looping yinyang returns to &lsquo;<samp>IDLE</samp>&rsquo; state after completion of the
 
29420
&lsquo;<samp>ACTIVE</samp>&rsquo; state. A yinyang with a &lsquo;<samp>loop</samp>&rsquo; value of &lsquo;<samp>false</samp>&rsquo; forwards
 
29421
to the final &lsquo;<samp>INACTIVE</samp>&rsquo; state
 
29422
</p></dd>
 
29423
</dl>
 
29424
 
 
29425
</dd>
 
29426
<dt> <b>Messages:</b></dt>
 
29427
<dd>
 
29428
<dl compact="compact">
 
29429
<dt> <b>toggle</b> &nbsp;&nbsp;See section <a href="#toggle">toggle</a></dt>
 
29430
<dd><p>Activate the yinyang like an actor hitting the stone.
 
29431
</p></dd>
 
29432
</dl>
 
29433
 
 
29434
</dd>
 
29435
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
29436
<dt> <b>Variants:</b></dt>
 
29437
<dd>
 
29438
<dl compact="compact">
 
29439
<dt> <img src="images/st_yinyang.png" alt="images/st_yinyang"><p> <b>st_yinyang</b>: state = <code>IDLE</code>
 
29440
</p></dt>
 
29441
<dt> <img src="images/st_yinyang.png" alt="images/st_yinyang"><p> <b>st_yinyang_active</b>: state = <code>ACTIVE</code>
 
29442
</p></dt>
 
29443
<dt> <img src="images/st_yinyang_inactive.png" alt="images/st_yinyang_inactive"><p> <b>st_yinyang_inactive</b>: state = <code>INACTIVE</code>
 
29444
</p></dt>
 
29445
<dt> <img src="images/st_yinyang.png" alt="images/st_yinyang"><p> <b>st_yinyang_instant</b>: instant = <code>true</code>, state = <code>IDLE</code>
 
29446
</p></dt>
 
29447
</dl>
 
29448
</dd>
 
29449
</dl>
 
29450
 
 
29451
 
 
29452
<hr size="6">
 
29453
<a name="Stone-Feature-Summaries"></a>
 
29454
<table cellpadding="1" cellspacing="1" border="0">
 
29455
<tr><td valign="middle" align="left">[<a href="#st_005fyinyang" title="Previous section in reading order"> &lt; </a>]</td>
 
29456
<td valign="middle" align="left">[<a href="#Transparent-Stones" title="Next section in reading order"> &gt; </a>]</td>
 
29457
<td valign="middle" align="left"> &nbsp; </td>
 
29458
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29459
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Up section"> Up </a>]</td>
 
29460
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29461
<td valign="middle" align="left"> &nbsp; </td>
 
29462
<td valign="middle" align="left"> &nbsp; </td>
 
29463
<td valign="middle" align="left"> &nbsp; </td>
 
29464
<td valign="middle" align="left"> &nbsp; </td>
 
29465
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29466
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29467
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29468
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29469
</tr></table>
 
29470
<a name="Stone-Feature-Summaries-1"></a>
 
29471
<h2 class="section">9.6 Stone Feature Summaries</h2>
 
29472
 
 
29473
<table class="menu" border="0" cellspacing="0">
 
29474
<tr><td align="left" valign="top"><a href="#Transparent-Stones">9.6.1 Transparent Stones</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
29475
</td></tr>
 
29476
<tr><td align="left" valign="top"><a href="#Breakable-Stones">9.6.2 Breakable Stones</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
29477
</td></tr>
 
29478
</table>
 
29479
 
 
29480
<hr size="6">
 
29481
<a name="Transparent-Stones"></a>
 
29482
<table cellpadding="1" cellspacing="1" border="0">
 
29483
<tr><td valign="middle" align="left">[<a href="#Stone-Feature-Summaries" title="Previous section in reading order"> &lt; </a>]</td>
 
29484
<td valign="middle" align="left">[<a href="#Breakable-Stones" title="Next section in reading order"> &gt; </a>]</td>
 
29485
<td valign="middle" align="left"> &nbsp; </td>
 
29486
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29487
<td valign="middle" align="left">[<a href="#Stone-Feature-Summaries" title="Up section"> Up </a>]</td>
 
29488
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29489
<td valign="middle" align="left"> &nbsp; </td>
 
29490
<td valign="middle" align="left"> &nbsp; </td>
 
29491
<td valign="middle" align="left"> &nbsp; </td>
 
29492
<td valign="middle" align="left"> &nbsp; </td>
 
29493
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29494
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29495
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29496
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29497
</tr></table>
 
29498
<a name="Transparent-Stones-1"></a>
 
29499
<h3 class="subsection">9.6.1 Transparent Stones</h3>
 
29500
 
 
29501
<p>Enigma provides a collection of transparent stones, all similar, but with
 
29502
different features. Some of them may be passed after the use of an
 
29503
<a href="#it_005fcherry">it_cherry</a>, others will be just pushed. Some are transparent for lasers,
 
29504
but not all! This table shows their exact properties.
 
29505
</p>
 
29506
<table>
 
29507
<thead><tr><th>class</th><th>kind:</th><th>actor is visible:</th><th>actor is invisible:</th><th>lasertransparent:</th></tr></thead>
 
29508
<tr><td><a href="#st_005frawglass">st_rawglass</a></td><td>st_rawglass</td><td>rebound</td><td>pass</td><td>yes</td></tr>
 
29509
<tr><td><a href="#st_005frawglass">st_rawglass</a></td><td>st_rawglass_movable</td><td>push</td><td>pass</td><td>yes</td></tr>
 
29510
<tr><td><a href="#st_005flightglass">st_lightglass</a></td><td>st_lightglass</td><td>rebound</td><td>pass</td><td>yes</td></tr>
 
29511
<tr><td><a href="#st_005flightglass">st_lightglass</a></td><td>st_lightglass_movable</td><td>push</td><td>push</td><td>yes</td></tr>
 
29512
<tr><td><a href="#st_005flightglass">st_lightglass</a></td><td>st_lightglass_hollow</td><td>pass</td><td>pass</td><td>yes</td></tr>
 
29513
<tr><td><a href="#st_005fdarkglass">st_darkglass</a></td><td>st_darkglass</td><td>rebound</td><td>pass</td><td>no</td></tr>
 
29514
<tr><td><a href="#st_005fdarkglass">st_darkglass</a></td><td>st_darkglass_movable</td><td>push</td><td>push</td><td>no</td></tr>
 
29515
<tr><td><a href="#st_005fdarkglass">st_darkglass</a></td><td>st_darkglass_hollow</td><td>pass</td><td>pass</td><td>yes</td></tr>
 
29516
<tr><td><a href="#st_005fredfiber">st_redfiber</a></td><td>st_redfiber</td><td>rebound</td><td>rebound</td><td>yes</td></tr>
 
29517
<tr><td><a href="#st_005fpolarswitch">st_polarswitch</a></td><td>st_polarswitch_on</td><td>toggle</td><td>pass</td><td>yes</td></tr>
 
29518
<tr><td><a href="#st_005fpolarswitch">st_polarswitch</a></td><td>st_polarswitch_off</td><td>toggle</td><td>pass</td><td>no</td></tr>
 
29519
<tr><td><a href="#st_005fbeads">st_beads</a></td><td>st_beads</td><td>leave</td><td>pass</td><td>no</td></tr>
 
29520
<tr><td><a href="#st_005flightpassenger">st_lightpassenger</a></td><td>st_lightpassenger_off</td><td>rebound</td><td>rebound</td><td>no</td></tr>
 
29521
<tr><td><a href="#st_005fice">st_ice</a></td><td>st_ice</td><td>push</td><td>push</td><td>yes</td></tr>
 
29522
<tr><td><a href="#st_005finvisible">st_invisible</a></td><td>st_invisible</td><td>rebound</td><td>rebound</td><td>no</td></tr>
 
29523
<tr><td><a href="#st_005finvisible">st_invisible</a></td><td>st_invisible_movable</td><td>push</td><td>push</td><td>no</td></tr>
 
29524
<tr><td><a href="#st_005finvisible">st_invisible</a></td><td>st_invisible_hollow</td><td>pass</td><td>pass</td><td>no</td></tr>
 
29525
<tr><td><a href="#st_005fghost">st_ghost</a></td><td>st_ghost_purplemarble</td><td>rebound</td><td>rebound</td><td>no</td></tr>
 
29526
<tr><td><a href="#st_005fghost">st_ghost</a></td><td>st_ghost_greenbrown</td><td>rebound</td><td>rebound</td><td>yes</td></tr>
 
29527
<tr><td><a href="#st_005fghost">st_ghost</a></td><td>st_ghost_break</td><td>rebound</td><td>rebound</td><td>yes</td></tr>
 
29528
</table>
 
29529
 
 
29530
<p>These entries can be memorized as follows: A stone is transparent for laser
 
29531
light if it is hollow, but not if it is dark. Exception is &lsquo;<samp>st_beads</samp>&rsquo;,
 
29532
whose irregular sides would scatter the beam. A stone can always be passed by
 
29533
invisible actors, with three exceptions: &lsquo;<samp>st_redfiber</samp>&rsquo;, whose inside is
 
29534
filled with red stripes, and the two movables &lsquo;<samp>st_lightglass_movable</samp>&rsquo; and
 
29535
&lsquo;<samp>st_darkglass_movable</samp>&rsquo; which have a non-glass frame which the actor can
 
29536
use to move the stone. <code>st_rawglass_movable</code> does not have such a frame
 
29537
and can not be moved by an invisible actor.
 
29538
</p>
 
29539
<hr size="6">
 
29540
<a name="Breakable-Stones"></a>
 
29541
<table cellpadding="1" cellspacing="1" border="0">
 
29542
<tr><td valign="middle" align="left">[<a href="#Transparent-Stones" title="Previous section in reading order"> &lt; </a>]</td>
 
29543
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next section in reading order"> &gt; </a>]</td>
 
29544
<td valign="middle" align="left"> &nbsp; </td>
 
29545
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29546
<td valign="middle" align="left">[<a href="#Stone-Feature-Summaries" title="Up section"> Up </a>]</td>
 
29547
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29548
<td valign="middle" align="left"> &nbsp; </td>
 
29549
<td valign="middle" align="left"> &nbsp; </td>
 
29550
<td valign="middle" align="left"> &nbsp; </td>
 
29551
<td valign="middle" align="left"> &nbsp; </td>
 
29552
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29553
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29554
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29555
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29556
</tr></table>
 
29557
<a name="Breakable-Stones-1"></a>
 
29558
<h3 class="subsection">9.6.2 Breakable Stones</h3>
 
29559
 
 
29560
 
 
29561
<hr size="6">
 
29562
<a name="Actor-Objects"></a>
 
29563
<table cellpadding="1" cellspacing="1" border="0">
 
29564
<tr><td valign="middle" align="left">[<a href="#Breakable-Stones" title="Previous section in reading order"> &lt; </a>]</td>
 
29565
<td valign="middle" align="left">[<a href="#Actor-Attributes" title="Next section in reading order"> &gt; </a>]</td>
 
29566
<td valign="middle" align="left"> &nbsp; </td>
 
29567
<td valign="middle" align="left">[<a href="#Stone-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29568
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
29569
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29570
<td valign="middle" align="left"> &nbsp; </td>
 
29571
<td valign="middle" align="left"> &nbsp; </td>
 
29572
<td valign="middle" align="left"> &nbsp; </td>
 
29573
<td valign="middle" align="left"> &nbsp; </td>
 
29574
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29575
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29576
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29577
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29578
</tr></table>
 
29579
<a name="Actor-Objects-1"></a>
 
29580
<h1 class="chapter">10. Actor Objects</h1>
 
29581
 
 
29582
<table class="menu" border="0" cellspacing="0">
 
29583
<tr><td align="left" valign="top"><a href="#Actor-Attributes">10.1 Actor Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    Common attributes
 
29584
</td></tr>
 
29585
<tr><td align="left" valign="top"><a href="#Actors">10.2 Actors</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              All actors
 
29586
</td></tr>
 
29587
<tr><td align="left" valign="top"><a href="#Actor-Features">10.3 Actor Features</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Common noteworthy features
 
29588
</td></tr>
 
29589
</table>
 
29590
 
 
29591
 
 
29592
<hr size="6">
 
29593
<a name="Actor-Attributes"></a>
 
29594
<table cellpadding="1" cellspacing="1" border="0">
 
29595
<tr><td valign="middle" align="left">[<a href="#Actor-Objects" title="Previous section in reading order"> &lt; </a>]</td>
 
29596
<td valign="middle" align="left">[<a href="#adhesion-_0028actor_0029" title="Next section in reading order"> &gt; </a>]</td>
 
29597
<td valign="middle" align="left"> &nbsp; </td>
 
29598
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29599
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Up section"> Up </a>]</td>
 
29600
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29601
<td valign="middle" align="left"> &nbsp; </td>
 
29602
<td valign="middle" align="left"> &nbsp; </td>
 
29603
<td valign="middle" align="left"> &nbsp; </td>
 
29604
<td valign="middle" align="left"> &nbsp; </td>
 
29605
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29606
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29607
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29608
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29609
</tr></table>
 
29610
<a name="Actor-Attributes-1"></a>
 
29611
<h2 class="section">10.1 Actor Attributes</h2>
 
29612
 
 
29613
<table class="menu" border="0" cellspacing="0">
 
29614
<tr><td align="left" valign="top"><a href="#adhesion-_0028actor_0029">10.1.1 adhesion (actor)</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Effectiveness of mousemotion
 
29615
</td></tr>
 
29616
<tr><td align="left" valign="top"><a href="#charge">10.1.2 charge</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Initial electrical charge
 
29617
</td></tr>
 
29618
<tr><td align="left" valign="top"><a href="#controllers">10.1.3 controllers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Mouse
 
29619
</td></tr>
 
29620
<tr><td align="left" valign="top"><a href="#color">10.1.4 color</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Color
 
29621
</td></tr>
 
29622
<tr><td align="left" valign="top"><a href="#essential">10.1.5 essential</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
29623
</td></tr>
 
29624
<tr><td align="left" valign="top"><a href="#essential_005fid">10.1.6 essential_id</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
29625
</td></tr>
 
29626
<tr><td align="left" valign="top"><a href="#owner">10.1.7 owner</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Inventory owner
 
29627
</td></tr>
 
29628
<tr><td align="left" valign="top"><a href="#velocity_005fx">10.1.8 velocity_x</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Initial velocity
 
29629
</td></tr>
 
29630
<tr><td align="left" valign="top"><a href="#velocity_005fy">10.1.9 velocity_y</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Initial velocity
 
29631
</td></tr>
 
29632
</table>
 
29633
 
 
29634
 
 
29635
<hr size="6">
 
29636
<a name="adhesion-_0028actor_0029"></a>
 
29637
<table cellpadding="1" cellspacing="1" border="0">
 
29638
<tr><td valign="middle" align="left">[<a href="#Actor-Attributes" title="Previous section in reading order"> &lt; </a>]</td>
 
29639
<td valign="middle" align="left">[<a href="#charge" title="Next section in reading order"> &gt; </a>]</td>
 
29640
<td valign="middle" align="left"> &nbsp; </td>
 
29641
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29642
<td valign="middle" align="left">[<a href="#Actor-Attributes" title="Up section"> Up </a>]</td>
 
29643
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29644
<td valign="middle" align="left"> &nbsp; </td>
 
29645
<td valign="middle" align="left"> &nbsp; </td>
 
29646
<td valign="middle" align="left"> &nbsp; </td>
 
29647
<td valign="middle" align="left"> &nbsp; </td>
 
29648
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29649
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29650
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29651
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29652
</tr></table>
 
29653
<a name="adhesion-_0028actor_0029-1"></a>
 
29654
<h3 class="subsection">10.1.1 adhesion (actor)</h3>
 
29655
 
 
29656
<p>The responsiveness of an actor on mouse movements. It is a scalar factor to
 
29657
the accelerating force applied to the actor. Note that mouse forces are only
 
29658
applied to an actor if the <a href="#controllers">controllers</a> attribute allows forces at all.
 
29659
Vice versa you should exclude an actor from mouse forces by usage of the
 
29660
<a href="#controllers">controllers</a> attribute instead of setting its adhesion to zero. The
 
29661
adhesion may take negative values, too. Such values correspond to inverse forces.
 
29662
</p>
 
29663
<dl compact="compact">
 
29664
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
29665
<dt> <b>Values:</b> &nbsp;&nbsp;float number</dt>
 
29666
<dt> <b>Default:</b> &nbsp;&nbsp;<code>0.0</code></dt>
 
29667
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
29668
</dl>
 
29669
 
 
29670
<hr size="6">
 
29671
<a name="charge"></a>
 
29672
<table cellpadding="1" cellspacing="1" border="0">
 
29673
<tr><td valign="middle" align="left">[<a href="#adhesion-_0028actor_0029" title="Previous section in reading order"> &lt; </a>]</td>
 
29674
<td valign="middle" align="left">[<a href="#controllers" title="Next section in reading order"> &gt; </a>]</td>
 
29675
<td valign="middle" align="left"> &nbsp; </td>
 
29676
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29677
<td valign="middle" align="left">[<a href="#Actor-Attributes" title="Up section"> Up </a>]</td>
 
29678
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29679
<td valign="middle" align="left"> &nbsp; </td>
 
29680
<td valign="middle" align="left"> &nbsp; </td>
 
29681
<td valign="middle" align="left"> &nbsp; </td>
 
29682
<td valign="middle" align="left"> &nbsp; </td>
 
29683
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29684
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29685
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29686
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29687
</tr></table>
 
29688
<a name="charge-1"></a>
 
29689
<h3 class="subsection">10.1.2 charge</h3>
 
29690
 
 
29691
<p>The initial electrical charge that a new actor starts with when being added to
 
29692
the world. Actors do charge and recharge by hitting <a href="#st_005fcharge">st_charge</a>. Hits
 
29693
of charged actors among themselves does not affect their charge load. Each
 
29694
actor keeps its charge load.
 
29695
</p>
 
29696
<p>The electrical force on a charged actor is given by its own load and the load
 
29697
and position of all other charged actors. Note that a constant global factor
 
29698
<a href="#ElectricStrength">ElectricStrength</a> is applied, too. If this factor is negative, equal
 
29699
charged actors may even attract each other.
 
29700
</p>
 
29701
<dl compact="compact">
 
29702
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
29703
<dt> <b>Values:</b> &nbsp;&nbsp;float number</dt>
 
29704
<dt> <b>Default:</b> &nbsp;&nbsp;<code>0.0</code></dt>
 
29705
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
29706
</dl>
 
29707
 
 
29708
<hr size="6">
 
29709
<a name="controllers"></a>
 
29710
<table cellpadding="1" cellspacing="1" border="0">
 
29711
<tr><td valign="middle" align="left">[<a href="#charge" title="Previous section in reading order"> &lt; </a>]</td>
 
29712
<td valign="middle" align="left">[<a href="#color" title="Next section in reading order"> &gt; </a>]</td>
 
29713
<td valign="middle" align="left"> &nbsp; </td>
 
29714
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29715
<td valign="middle" align="left">[<a href="#Actor-Attributes" title="Up section"> Up </a>]</td>
 
29716
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29717
<td valign="middle" align="left"> &nbsp; </td>
 
29718
<td valign="middle" align="left"> &nbsp; </td>
 
29719
<td valign="middle" align="left"> &nbsp; </td>
 
29720
<td valign="middle" align="left"> &nbsp; </td>
 
29721
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29722
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29723
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29724
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29725
</tr></table>
 
29726
<a name="controllers-1"></a>
 
29727
<h3 class="subsection">10.1.3 controllers</h3>
 
29728
 
 
29729
<p>The players that can control the actor by their mouse movements.
 
29730
</p>
 
29731
<dl compact="compact">
 
29732
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
29733
<dt> <b>Values:</b> &nbsp;&nbsp;<code>CTRL_NONE</code>, <code>CTRL_YIN</code>, <code>CTRL_YANG</code>, <code>CTRL_YINYANG</code></dt>
 
29734
<dt> <b>Default:</b> &nbsp;&nbsp;<code>CTRL_NONE</code></dt>
 
29735
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
29736
</dl>
 
29737
 
 
29738
<hr size="6">
 
29739
<a name="color"></a>
 
29740
<table cellpadding="1" cellspacing="1" border="0">
 
29741
<tr><td valign="middle" align="left">[<a href="#controllers" title="Previous section in reading order"> &lt; </a>]</td>
 
29742
<td valign="middle" align="left">[<a href="#essential" title="Next section in reading order"> &gt; </a>]</td>
 
29743
<td valign="middle" align="left"> &nbsp; </td>
 
29744
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29745
<td valign="middle" align="left">[<a href="#Actor-Attributes" title="Up section"> Up </a>]</td>
 
29746
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29747
<td valign="middle" align="left"> &nbsp; </td>
 
29748
<td valign="middle" align="left"> &nbsp; </td>
 
29749
<td valign="middle" align="left"> &nbsp; </td>
 
29750
<td valign="middle" align="left"> &nbsp; </td>
 
29751
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29752
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29753
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29754
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29755
</tr></table>
 
29756
<a name="color-1"></a>
 
29757
<h3 class="subsection">10.1.4 color</h3>
 
29758
 
 
29759
<p>The logical color of the actor. All actors besides <a href="#ac_005fmarble">ac_marble</a>s,
 
29760
<a href="#ac_005fpearl">ac_pearl</a>s and <a href="#ac_005fkiller">ac_killer</a>s will report color <code>nil</code>. The color of
 
29761
an actor can not be changed, it is a read only attribute.
 
29762
</p>
 
29763
<dl compact="compact">
 
29764
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
29765
<dt> <b>Values:</b> &nbsp;&nbsp;<code>BLACK</code>, <code>WHITE</code>, <code>nil</code></dt>
 
29766
<dt> <b>Default:</b> &nbsp;&nbsp;<code>nil</code></dt>
 
29767
<dt> <b>Access:</b> &nbsp;&nbsp;read only</dt>
 
29768
</dl>
 
29769
 
 
29770
<hr size="6">
 
29771
<a name="essential"></a>
 
29772
<table cellpadding="1" cellspacing="1" border="0">
 
29773
<tr><td valign="middle" align="left">[<a href="#color" title="Previous section in reading order"> &lt; </a>]</td>
 
29774
<td valign="middle" align="left">[<a href="#essential_005fid" title="Next section in reading order"> &gt; </a>]</td>
 
29775
<td valign="middle" align="left"> &nbsp; </td>
 
29776
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29777
<td valign="middle" align="left">[<a href="#Actor-Attributes" title="Up section"> Up </a>]</td>
 
29778
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29779
<td valign="middle" align="left"> &nbsp; </td>
 
29780
<td valign="middle" align="left"> &nbsp; </td>
 
29781
<td valign="middle" align="left"> &nbsp; </td>
 
29782
<td valign="middle" align="left"> &nbsp; </td>
 
29783
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29784
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29785
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29786
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29787
</tr></table>
 
29788
<a name="essential-1"></a>
 
29789
<h3 class="subsection">10.1.5 essential</h3>
 
29790
 
 
29791
<p>Describes the necessity of an actor to be alive in case of multiple actors being
 
29792
attached to a player. A value &lsquo;<samp>DISPENSABLE</samp>&rsquo; marks an actor as not essential.
 
29793
The player may well continue to play with other actors that he controls which
 
29794
are still alive. A value of &lsquo;<samp>INDISPENSABLE</samp>&rsquo; marks an actor as totally
 
29795
necessary. If such an actor cannot be resurrected after a death, the player is
 
29796
essentially dead. A value of &lsquo;<samp>PERKIND</samp>&rsquo; marks an actor as partially
 
29797
essential. Not the actor itself needs to survive but the number of actors of
 
29798
its kind controlled by the player need to be larger than the number of actors
 
29799
with value &lsquo;<samp>PERKIND</samp>&rsquo;. For example, marking 4 out of 5 <a href="#ac_005fpearl">ac_pearl</a> with
 
29800
&lsquo;<samp>PERKIND</samp>&rsquo; means that the player is dead if 2 pearls are no longer alive.
 
29801
</p>
 
29802
<p>Of course shattered or sunken actors will first be resurrected if an
 
29803
<a href="#it_005fextralife">it_extralife</a> is available and the global attribute <a href="#ConserveLevel">ConserveLevel</a>
 
29804
allows a resurrection.
 
29805
</p>
 
29806
<p>For more details about level restart see <a href="#Level-Restart">Level Restart</a>.
 
29807
</p>
 
29808
<dl compact="compact">
 
29809
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
29810
<dt> <b>Values:</b> &nbsp;&nbsp;<code>DISPENSABLE</code>, <code>INDISPENSABLE</code>, <code>PERKIND</code></dt>
 
29811
<dt> <b>Default:</b> &nbsp;&nbsp;<code></code></dt>
 
29812
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
29813
</dl>
 
29814
 
 
29815
<hr size="6">
 
29816
<a name="essential_005fid"></a>
 
29817
<table cellpadding="1" cellspacing="1" border="0">
 
29818
<tr><td valign="middle" align="left">[<a href="#essential" title="Previous section in reading order"> &lt; </a>]</td>
 
29819
<td valign="middle" align="left">[<a href="#owner" title="Next section in reading order"> &gt; </a>]</td>
 
29820
<td valign="middle" align="left"> &nbsp; </td>
 
29821
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29822
<td valign="middle" align="left">[<a href="#Actor-Attributes" title="Up section"> Up </a>]</td>
 
29823
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29824
<td valign="middle" align="left"> &nbsp; </td>
 
29825
<td valign="middle" align="left"> &nbsp; </td>
 
29826
<td valign="middle" align="left"> &nbsp; </td>
 
29827
<td valign="middle" align="left"> &nbsp; </td>
 
29828
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29829
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29830
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29831
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29832
</tr></table>
 
29833
<a name="essential_005fid-1"></a>
 
29834
<h3 class="subsection">10.1.6 essential_id</h3>
 
29835
 
 
29836
<p>Since a player may control actors of different kinds at the same time, the
 
29837
essentialness of actors is limited to its kind via this id. It is possible to
 
29838
group actors of different kinds into an essential group via this id. The engine
 
29839
keeps this id even if actors are transformed into other kinds like on activation
 
29840
of an <a href="#it_005fdrop">it_drop</a>.
 
29841
</p>
 
29842
<dl compact="compact">
 
29843
<dt> <b>Type:</b> &nbsp;&nbsp;string</dt>
 
29844
<dt> <b>Values:</b> &nbsp;&nbsp;any</dt>
 
29845
<dt> <b>Default:</b> &nbsp;&nbsp;&nbsp;model name of actor</dt>
 
29846
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
29847
</dl>
 
29848
 
 
29849
<hr size="6">
 
29850
<a name="owner"></a>
 
29851
<table cellpadding="1" cellspacing="1" border="0">
 
29852
<tr><td valign="middle" align="left">[<a href="#essential_005fid" title="Previous section in reading order"> &lt; </a>]</td>
 
29853
<td valign="middle" align="left">[<a href="#velocity_005fx" title="Next section in reading order"> &gt; </a>]</td>
 
29854
<td valign="middle" align="left"> &nbsp; </td>
 
29855
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29856
<td valign="middle" align="left">[<a href="#Actor-Attributes" title="Up section"> Up </a>]</td>
 
29857
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29858
<td valign="middle" align="left"> &nbsp; </td>
 
29859
<td valign="middle" align="left"> &nbsp; </td>
 
29860
<td valign="middle" align="left"> &nbsp; </td>
 
29861
<td valign="middle" align="left"> &nbsp; </td>
 
29862
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29863
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29864
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29865
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29866
</tr></table>
 
29867
<a name="owner-1"></a>
 
29868
<h3 class="subsection">10.1.7 owner</h3>
 
29869
 
 
29870
<p>The player that owns the actor. The owner gets all items picked up by an actor
 
29871
added to his inventory. The ownership of an actor does not influence the
 
29872
ability of a player to control the actors movements. Note that you need to
 
29873
assign the value <code>DEFAULT</code> in Lua tables to set the value <code>nil</code> due to
 
29874
the well known Lua table <a href="#Caveats">Caveats</a>. The other two values <code>YIN</code> and
 
29875
<code>YANG</code> are common <a href="#state-values">state values</a>.
 
29876
</p>
 
29877
<dl compact="compact">
 
29878
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
29879
<dt> <b>Values:</b> &nbsp;&nbsp;<code>YIN</code>, <code>YANG</code>, <code>nil</code></dt>
 
29880
<dt> <b>Default:</b> &nbsp;&nbsp;<code>nil</code></dt>
 
29881
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
29882
</dl>
 
29883
 
 
29884
<hr size="6">
 
29885
<a name="velocity_005fx"></a>
 
29886
<table cellpadding="1" cellspacing="1" border="0">
 
29887
<tr><td valign="middle" align="left">[<a href="#owner" title="Previous section in reading order"> &lt; </a>]</td>
 
29888
<td valign="middle" align="left">[<a href="#velocity_005fy" title="Next section in reading order"> &gt; </a>]</td>
 
29889
<td valign="middle" align="left"> &nbsp; </td>
 
29890
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29891
<td valign="middle" align="left">[<a href="#Actor-Attributes" title="Up section"> Up </a>]</td>
 
29892
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29893
<td valign="middle" align="left"> &nbsp; </td>
 
29894
<td valign="middle" align="left"> &nbsp; </td>
 
29895
<td valign="middle" align="left"> &nbsp; </td>
 
29896
<td valign="middle" align="left"> &nbsp; </td>
 
29897
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29898
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29899
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29900
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29901
</tr></table>
 
29902
<a name="velocity_005fx-1"></a>
 
29903
<h3 class="subsection">10.1.8 velocity_x</h3>
 
29904
 
 
29905
<p>The velocity into x direction that a new actor starts with when being added to
 
29906
the world. Even though this attribute is readable it does not reflect the
 
29907
current velocity of an actor during runtime.
 
29908
</p>
 
29909
<dl compact="compact">
 
29910
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
29911
<dt> <b>Values:</b> &nbsp;&nbsp;float number</dt>
 
29912
<dt> <b>Default:</b> &nbsp;&nbsp;<code>0.0</code></dt>
 
29913
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
29914
</dl>
 
29915
 
 
29916
<hr size="6">
 
29917
<a name="velocity_005fy"></a>
 
29918
<table cellpadding="1" cellspacing="1" border="0">
 
29919
<tr><td valign="middle" align="left">[<a href="#velocity_005fx" title="Previous section in reading order"> &lt; </a>]</td>
 
29920
<td valign="middle" align="left">[<a href="#Actors" title="Next section in reading order"> &gt; </a>]</td>
 
29921
<td valign="middle" align="left"> &nbsp; </td>
 
29922
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29923
<td valign="middle" align="left">[<a href="#Actor-Attributes" title="Up section"> Up </a>]</td>
 
29924
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29925
<td valign="middle" align="left"> &nbsp; </td>
 
29926
<td valign="middle" align="left"> &nbsp; </td>
 
29927
<td valign="middle" align="left"> &nbsp; </td>
 
29928
<td valign="middle" align="left"> &nbsp; </td>
 
29929
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29930
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29931
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29932
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29933
</tr></table>
 
29934
<a name="velocity_005fy-1"></a>
 
29935
<h3 class="subsection">10.1.9 velocity_y</h3>
 
29936
 
 
29937
<p>The velocity into y direction that a new actor starts with when being added to
 
29938
the world. Even though this attribute is readable it does not reflect the
 
29939
current velocity of an actor during runtime.
 
29940
</p>
 
29941
<dl compact="compact">
 
29942
<dt> <b>Type:</b> &nbsp;&nbsp;number</dt>
 
29943
<dt> <b>Values:</b> &nbsp;&nbsp;float number</dt>
 
29944
<dt> <b>Default:</b> &nbsp;&nbsp;<code>0.0</code></dt>
 
29945
<dt> <b>Access:</b> &nbsp;&nbsp;read/write</dt>
 
29946
</dl>
 
29947
 
 
29948
<hr size="6">
 
29949
<a name="Actors"></a>
 
29950
<table cellpadding="1" cellspacing="1" border="0">
 
29951
<tr><td valign="middle" align="left">[<a href="#velocity_005fy" title="Previous section in reading order"> &lt; </a>]</td>
 
29952
<td valign="middle" align="left">[<a href="#ac_005fbug" title="Next section in reading order"> &gt; </a>]</td>
 
29953
<td valign="middle" align="left"> &nbsp; </td>
 
29954
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29955
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Up section"> Up </a>]</td>
 
29956
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29957
<td valign="middle" align="left"> &nbsp; </td>
 
29958
<td valign="middle" align="left"> &nbsp; </td>
 
29959
<td valign="middle" align="left"> &nbsp; </td>
 
29960
<td valign="middle" align="left"> &nbsp; </td>
 
29961
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
29962
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
29963
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
29964
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
29965
</tr></table>
 
29966
<a name="Actors-1"></a>
 
29967
<h2 class="section">10.2 Actors</h2>
 
29968
 
 
29969
<table class="menu" border="0" cellspacing="0">
 
29970
<tr><td align="left" valign="top"><a href="#ac_005fbug">10.2.1 ac_bug</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
29971
</td></tr>
 
29972
<tr><td align="left" valign="top"><a href="#ac_005fhorse">10.2.2 ac_horse</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
29973
</td></tr>
 
29974
<tr><td align="left" valign="top"><a href="#ac_005fkiller">10.2.3 ac_killer</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
29975
</td></tr>
 
29976
<tr><td align="left" valign="top"><a href="#ac_005fmarble">10.2.4 ac_marble</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
29977
</td></tr>
 
29978
<tr><td align="left" valign="top"><a href="#ac_005fpearl">10.2.5 ac_pearl</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
29979
</td></tr>
 
29980
<tr><td align="left" valign="top"><a href="#ac_005frotor">10.2.6 ac_rotor</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
29981
</td></tr>
 
29982
<tr><td align="left" valign="top"><a href="#ac_005ftop">10.2.7 ac_top</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
29983
</td></tr>
 
29984
</table>
 
29985
 
 
29986
<hr size="6">
 
29987
<a name="ac_005fbug"></a>
 
29988
<table cellpadding="1" cellspacing="1" border="0">
 
29989
<tr><td valign="middle" align="left">[<a href="#Actors" title="Previous section in reading order"> &lt; </a>]</td>
 
29990
<td valign="middle" align="left">[<a href="#ac_005fhorse" title="Next section in reading order"> &gt; </a>]</td>
 
29991
<td valign="middle" align="left"> &nbsp; </td>
 
29992
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
29993
<td valign="middle" align="left">[<a href="#Actors" title="Up section"> Up </a>]</td>
 
29994
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
29995
<td valign="middle" align="left"> &nbsp; </td>
 
29996
<td valign="middle" align="left"> &nbsp; </td>
 
29997
<td valign="middle" align="left"> &nbsp; </td>
 
29998
<td valign="middle" align="left"> &nbsp; </td>
 
29999
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30000
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30001
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30002
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30003
</tr></table>
 
30004
<a name="ac_005fbug-1"></a>
 
30005
<h3 class="subsection">10.2.1 ac_bug</h3>
 
30006
<a name="index-ac_005fbug"></a>
 
30007
 
 
30008
<p>An actor that looks like a small grey ball with two red dots on it. Bugs are
 
30009
harmless actors that do not affect other actors and they are usually passive.
 
30010
</p>
 
30011
<p>In contrast to the main actors they can not jump or pass an <a href="#it_005fvortex">it_vortex</a>, and
 
30012
will not sink, fall or shatter. Bugs are immortal.
 
30013
</p>
 
30014
<p>Note that you need to set &lsquo;<samp>controllers</samp>&rsquo; as well as &lsquo;<samp>adhesion</samp>&rsquo; to proper
 
30015
values if you want a player to control a bug directly. If a bug is owned by a
 
30016
player <a href="#fl_005fthief">fl_thief</a> and <a href="#st_005fthief">st_thief</a> will steal items from it.
 
30017
</p>
 
30018
<dl compact="compact">
 
30019
<dt> <b>Attributes:</b> common actor attributes</dt>
 
30020
<dd><dl compact="compact">
 
30021
<dt> <b>adhesion</b> &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: <code>0.0</code>; &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
30022
<dt> <b>controllers</b> &nbsp;&nbsp;<i>values</i>: <code>CTRL_NONE</code>, <code>CTRL_YIN</code>, <code>CTRL_YANG</code>, <code>CTRL_YINYANG</code>; &nbsp;&nbsp;<i>default</i>: <code>CTRL_NONE</code>; &nbsp;&nbsp;See section <a href="#controllers">controllers</a></dt>
 
30023
<dt> <b>owner</b> &nbsp;&nbsp;<i>values</i>: <code>YIN</code>, <code>YANG</code>, <code>nil</code>; &nbsp;&nbsp;<i>default</i>: <code>nil</code>; &nbsp;&nbsp;See section <a href="#owner">owner</a></dt>
 
30024
<dt> <b>mass</b> &nbsp;&nbsp;<i>values</i>: positive float number; &nbsp;&nbsp;<i>default</i>: <code>0.7</code>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
30025
</dl>
 
30026
 
 
30027
</dd>
 
30028
<dt> <b>Messages:</b> none</dt>
 
30029
<dt> <b>Variants:</b></dt>
 
30030
<dd>
 
30031
<dl compact="compact">
 
30032
<dt> <img src="images/ac_bug.png" alt="images/ac_bug"><p> <b>ac_bug</b>: color = <code>nil</code>, controllers = <code>CTRL_NONE</code>, owner = <code>nil</code>
 
30033
</p></dt>
 
30034
</dl>
 
30035
 
 
30036
</dd>
 
30037
</dl>
 
30038
 
 
30039
<hr size="6">
 
30040
<a name="ac_005fhorse"></a>
 
30041
<table cellpadding="1" cellspacing="1" border="0">
 
30042
<tr><td valign="middle" align="left">[<a href="#ac_005fbug" title="Previous section in reading order"> &lt; </a>]</td>
 
30043
<td valign="middle" align="left">[<a href="#ac_005fkiller" title="Next section in reading order"> &gt; </a>]</td>
 
30044
<td valign="middle" align="left"> &nbsp; </td>
 
30045
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30046
<td valign="middle" align="left">[<a href="#Actors" title="Up section"> Up </a>]</td>
 
30047
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
30048
<td valign="middle" align="left"> &nbsp; </td>
 
30049
<td valign="middle" align="left"> &nbsp; </td>
 
30050
<td valign="middle" align="left"> &nbsp; </td>
 
30051
<td valign="middle" align="left"> &nbsp; </td>
 
30052
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30053
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30054
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30055
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30056
</tr></table>
 
30057
<a name="ac_005fhorse-1"></a>
 
30058
<h3 class="subsection">10.2.2 ac_horse</h3>
 
30059
<a name="index-ac_005fhorse"></a>
 
30060
 
 
30061
<p>A large blue disc like actor. It is called a horse because in some future Enigma
 
30062
release <a href="#ac_005fmarble">ac_marble</a>s and <a href="#ac_005fpearl">ac_pearl</a>s should be able to ride on it.
 
30063
</p>
 
30064
<p>In contrast to the main actors it can not jump or pass an <a href="#it_005fvortex">it_vortex</a>, and
 
30065
will not sink, fall or shatter. A horse is immortal.
 
30066
</p>
 
30067
<p>By default a horse is a passive actor. But nevertheless a horse may move along
 
30068
its own path. A set of attributes let you control the movement in various ways.
 
30069
</p>
 
30070
<p>The most simple approach just uses the attributes &lsquo;<samp>destination</samp>&rsquo; and
 
30071
&lsquo;<samp>strength</samp>&rsquo;. You can mark a path marked by an arbitrary number of positions
 
30072
given as <a href="#destination">destination</a>s. The horse will try to reach the destinations one
 
30073
in a row with a force given by the strength attribute. As soon as one
 
30074
destination has been reached the horse targets for the next position and will
 
30075
start over again as soon as the last position has been reached. In this
 
30076
&lsquo;<samp>steady</samp>&rsquo; mode the horse is continously accelerated into the direction of
 
30077
the next destination target. If it misses the destination on the first approach
 
30078
it will return by a loop again until it finally passes the target position. This
 
30079
approach is rather crude and not well suited for a precise control needed if the
 
30080
horse should hit certain stones or move on a well defined trajectory.
 
30081
</p>
 
30082
<p>Setting &lsquo;<samp>steady</samp>&rsquo; to the value <code>false</code> causes another accelaration
 
30083
algorithm that will decelerate the horse on approach to its target position.
 
30084
This allows a very precise control over the path taken by the horse.
 
30085
</p>
 
30086
<p>Furtheron you can request anytime the index of the current destination target. You
 
30087
can even set &lsquo;<samp>destidx</samp>&rsquo; anytime. Note that this index counts the destination
 
30088
targets starting with 0 and taking every position into account, which might not
 
30089
be in sync with the destination token number in case a single token part
 
30090
addresses several positions at a time.
 
30091
</p>
 
30092
<p>Furtheron you can control the behaviour of the horse when it reaches the last
 
30093
destination target. It either stops or restarts if the attribute &lsquo;<samp>loop</samp>&rsquo;
 
30094
is set to <code>true</code>.
 
30095
</p>
 
30096
<p>Setting either &lsquo;<samp>destination</samp>&rsquo; to <code>nil</code>, &lsquo;<samp>destidx</samp>&rsquo; or &lsquo;<samp>strength</samp>&rsquo;
 
30097
to a negative value caues the horse to stop its automatic travel.
 
30098
</p>
 
30099
<p>On its move a horse tries to reach the target position. But if the target
 
30100
position is blocked by a stone, the horse continues its travel targeting the
 
30101
next destination position as soon as it hits the stone. Thus you can use the
 
30102
horse to toggle <a href="#st_005fswitch">st_switch</a> and other active stones.
 
30103
</p>
 
30104
<p>Whenever the horse reaches a target position it will perform its action. You
 
30105
can reset the &lsquo;<samp>destination</samp>&rsquo; and other attributes within the callback to
 
30106
define a new destination target.
 
30107
</p>
 
30108
<p>Note that you need to set &lsquo;<samp>controllers</samp>&rsquo; as well as &lsquo;<samp>adhesion</samp>&rsquo; to proper
 
30109
values if you want a player to control a horse directly.
 
30110
</p>
 
30111
<dl compact="compact">
 
30112
<dt> <b>Attributes:</b></dt>
 
30113
<dd>
 
30114
<dl compact="compact">
 
30115
<dt> <b>adhesion</b> &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: <code>0.0</code>; &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
30116
<dt> <b>controllers</b> &nbsp;&nbsp;<i>values</i>: <code>CTRL_NONE</code>, <code>CTRL_YIN</code>, <code>CTRL_YANG</code>, <code>CTRL_YINYANG</code>; &nbsp;&nbsp;<i>default</i>: <code>CTRL_NONE</code>; &nbsp;&nbsp;See section <a href="#controllers">controllers</a></dt>
 
30117
<dt> <b>owner</b> &nbsp;&nbsp;<i>values</i>: <code>YIN</code>, <code>YANG</code>, <code>nil</code>; &nbsp;&nbsp;<i>default</i>: <code>nil</code>; &nbsp;&nbsp;See section <a href="#owner">owner</a></dt>
 
30118
<dt> <b>destination</b>, &nbsp;&nbsp;<i>values</i>: position or tokens; &nbsp;&nbsp;<i>default</i>: <code>nil</code> &nbsp;&nbsp;See section <a href="#destination">destination</a></dt>
 
30119
<dd><p>A path given by a sequence of positions.
 
30120
</p></dd>
 
30121
<dt> <b>destidx</b> &nbsp;&nbsp;<i>values</i>: integer number; &nbsp;&nbsp;<i>default</i>: <code>0</code></dt>
 
30122
<dd><p>The index of the targeted destination.
 
30123
</p></dd>
 
30124
<dt> <b>loop</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
30125
<dd><p>Flag that determines whether &lsquo;<samp>destidx</samp>&rsquo; is reset to its default when the
 
30126
last destination has been reached.
 
30127
</p></dd>
 
30128
<dt> <b>strength</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>+10.0</code></dt>
 
30129
<dd><p>A scalar factor for the horse force that drive it to the next destination.
 
30130
</p></dd>
 
30131
<dt> <b>steady</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
30132
<dd><p>Flag that determines the chosen acceleration algorithm. On steady force the
 
30133
actor is continuously accelerated in direction to the next destination. If it
 
30134
misses the destination it will loop. If steady is false the force will switch
 
30135
its sign as soon as the actor reaches a critical distance. Thus the actor will
 
30136
reach the destination with nearly no remaining speed.
 
30137
</p></dd>
 
30138
<dt> <b>mass</b> &nbsp;&nbsp;<i>values</i>: positive float number; &nbsp;&nbsp;<i>default</i>: <code>1.2</code>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
30139
</dl>
 
30140
 
 
30141
</dd>
 
30142
<dt> <b>Messages:</b> none</dt>
 
30143
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
30144
<dd><p>Performed on every reached destination position or on stone hits when the
 
30145
destination position if blocked by a stone.
 
30146
</p>
 
30147
</dd>
 
30148
<dt> <b>Variants:</b></dt>
 
30149
<dd>
 
30150
<dl compact="compact">
 
30151
<dt> <img src="images/ac_horse.png" alt="images/ac_horse"><p> <b>ac_horse</b>: controllers = <code>CTRL_NONE</code>, owner = <code>nil</code>
 
30152
</p></dt>
 
30153
</dl>
 
30154
 
 
30155
</dd>
 
30156
</dl>
 
30157
 
 
30158
<hr size="6">
 
30159
<a name="ac_005fkiller"></a>
 
30160
<table cellpadding="1" cellspacing="1" border="0">
 
30161
<tr><td valign="middle" align="left">[<a href="#ac_005fhorse" title="Previous section in reading order"> &lt; </a>]</td>
 
30162
<td valign="middle" align="left">[<a href="#ac_005fmarble" title="Next section in reading order"> &gt; </a>]</td>
 
30163
<td valign="middle" align="left"> &nbsp; </td>
 
30164
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30165
<td valign="middle" align="left">[<a href="#Actors" title="Up section"> Up </a>]</td>
 
30166
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
30167
<td valign="middle" align="left"> &nbsp; </td>
 
30168
<td valign="middle" align="left"> &nbsp; </td>
 
30169
<td valign="middle" align="left"> &nbsp; </td>
 
30170
<td valign="middle" align="left"> &nbsp; </td>
 
30171
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30172
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30173
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30174
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30175
</tr></table>
 
30176
<a name="ac_005fkiller-1"></a>
 
30177
<h3 class="subsection">10.2.3 ac_killer</h3>
 
30178
<a name="index-ac_005fkiller"></a>
 
30179
 
 
30180
<p>An actor that looks like a white <a href="#ac_005fpearl">ac_pearl</a>, but is a death bringing killer
 
30181
ball that shatters <a href="#ac_005fmarble">ac_marble</a>s and <a href="#ac_005fpearl">ac_pearl</a>s on contact.
 
30182
</p>
 
30183
<p>In contrast to the main actors it can not jump or pass an <a href="#it_005fvortex">it_vortex</a>, and
 
30184
will not sink, fall or shatter. A killer ball is immortal.
 
30185
</p>
 
30186
<p>A killer is preset to its standard attribute values, that let both players
 
30187
control the actor and do assign a higher &lsquo;<samp>adhesion</samp>&rsquo; to it than to
 
30188
<a href="#ac_005fpearl">ac_pearl</a>s.
 
30189
</p>
 
30190
<p>Note that even though a killer looks quite dangerous, <a href="#fl_005fthief">fl_thief</a> and
 
30191
<a href="#st_005fthief">st_thief</a> do steal items from them, if the killer is owned by a player.
 
30192
</p>
 
30193
<dl compact="compact">
 
30194
<dt> <b>Attributes:</b></dt>
 
30195
<dd>
 
30196
<dl compact="compact">
 
30197
<dt> <b>color</b> &nbsp;&nbsp;<i>values</i>: <code>BLACK</code>, <code>WHITE</code>; &nbsp;&nbsp;<i>default</i>: <code>WHITE</code>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
30198
<dd><p>The color of the killer.
 
30199
</p></dd>
 
30200
<dt> <b>adhesion</b> &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: <code>2.0</code>; &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
30201
<dt> <b>controllers</b> &nbsp;&nbsp;<i>values</i>: <code>CTRL_NONE</code>, <code>CTRL_YIN</code>, <code>CTRL_YANG</code>, <code>CTRL_YINYANG</code>; &nbsp;&nbsp;<i>default</i>: <code>CTRL_YINYANG</code>; &nbsp;&nbsp;See section <a href="#controllers">controllers</a></dt>
 
30202
<dt> <b>owner</b> &nbsp;&nbsp;<i>values</i>: <code>YIN</code>, <code>YANG</code>, <code>nil</code>; &nbsp;&nbsp;<i>default</i>: <code>nil</code>; &nbsp;&nbsp;See section <a href="#owner">owner</a></dt>
 
30203
<dt> <b>mass</b> &nbsp;&nbsp;<i>values</i>: positive float number; &nbsp;&nbsp;<i>default</i>: <code>0.7</code>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
30204
</dl>
 
30205
 
 
30206
</dd>
 
30207
<dt> <b>Messages:</b> none</dt>
 
30208
<dt> <b>Variants:</b></dt>
 
30209
<dd>
 
30210
<dl compact="compact">
 
30211
<dt> <img src="images/ac_pearl_white.png" alt="images/ac_pearl_white"><p> <b>ac_killer</b>: color = <code>WHITE</code>, controllers = <code>CTRL_YINYANG</code>, owner = <code>nil</code>
 
30212
</p></dt>
 
30213
<dt> <img src="images/ac_pearl_black.png" alt="images/ac_pearl_black"><p> <b>ac_killer_black</b>: color = <code>BLACK</code>, controllers = <code>CTRL_YINYANG</code>, owner = <code>nil</code>
 
30214
</p></dt>
 
30215
<dt> <img src="images/ac_pearl_white.png" alt="images/ac_pearl_white"><p> <b>ac_killer_white</b>: color = <code>WHITE</code>, controllers = <code>CTRL_YINYANG</code>, owner = <code>nil</code>
 
30216
</p></dt>
 
30217
</dl>
 
30218
 
 
30219
</dd>
 
30220
</dl>
 
30221
 
 
30222
<hr size="6">
 
30223
<a name="ac_005fmarble"></a>
 
30224
<table cellpadding="1" cellspacing="1" border="0">
 
30225
<tr><td valign="middle" align="left">[<a href="#ac_005fkiller" title="Previous section in reading order"> &lt; </a>]</td>
 
30226
<td valign="middle" align="left">[<a href="#ac_005fpearl" title="Next section in reading order"> &gt; </a>]</td>
 
30227
<td valign="middle" align="left"> &nbsp; </td>
 
30228
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30229
<td valign="middle" align="left">[<a href="#Actors" title="Up section"> Up </a>]</td>
 
30230
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
30231
<td valign="middle" align="left"> &nbsp; </td>
 
30232
<td valign="middle" align="left"> &nbsp; </td>
 
30233
<td valign="middle" align="left"> &nbsp; </td>
 
30234
<td valign="middle" align="left"> &nbsp; </td>
 
30235
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30236
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30237
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30238
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30239
</tr></table>
 
30240
<a name="ac_005fmarble-1"></a>
 
30241
<h3 class="subsection">10.2.4 ac_marble</h3>
 
30242
<a name="index-ac_005fmarble"></a>
 
30243
 
 
30244
<p>The main actor in the shape of a large ball, either black or white. Marbles are
 
30245
versatile actors that can jump, pass <a href="#it_005fvortex">it_vortex</a>, but on the other hand they
 
30246
can sink, fall and shatter, too.
 
30247
</p>
 
30248
<p>As long as the &lsquo;<samp>owner</samp>&rsquo; has an <a href="#it_005fextralife">it_extralife</a> in his inventory a dying
 
30249
marble will be resurrected. If no extra life is available a dying actor ends
 
30250
up in the &lsquo;<samp>state</samp>&rsquo; dead and can no longer be controlled.
 
30251
</p>
 
30252
<p>The marbles are preset to their standard attribute values. A recoloring of
 
30253
marbles is not possible. The marbles state changes due to events and can be
 
30254
read only, too.
 
30255
</p>
 
30256
<dl compact="compact">
 
30257
<dt> <b>Attributes:</b></dt>
 
30258
<dd>
 
30259
<dl compact="compact">
 
30260
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ALIVE</code>, <code>DEAD</code>; &nbsp;&nbsp;<i>default</i>: <code>ALIVE</code>; &nbsp;&nbsp;See section <a href="#state">state</a>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
30261
<dt> <b>color</b> &nbsp;&nbsp;<i>values</i>: <code>BLACK</code>, <code>WHITE</code>; &nbsp;&nbsp;<i>default</i>: <code>BLACK</code>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
30262
<dd><p>The color of the marble.
 
30263
</p></dd>
 
30264
<dt> <b>adhesion</b> &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: <code>1.0</code>; &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
30265
<dt> <b>controllers</b> &nbsp;&nbsp;<i>values</i>: <code>CTRL_NONE</code>, <code>CTRL_YIN</code>, <code>CTRL_YANG</code>, <code>CTRL_YINYANG</code>; &nbsp;&nbsp;<i>default</i>: <code>CTRL_NONE</code>; &nbsp;&nbsp;See section <a href="#controllers">controllers</a></dt>
 
30266
<dt> <b>owner</b> &nbsp;&nbsp;<i>values</i>: <code>YIN</code>, <code>YANG</code>, <code>nil</code>; &nbsp;&nbsp;<i>default</i>: <code>nil</code>; &nbsp;&nbsp;See section <a href="#owner">owner</a></dt>
 
30267
<dt> <b>mass</b> &nbsp;&nbsp;<i>values</i>: positive float number; &nbsp;&nbsp;<i>default</i>: <code>1.0</code>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
30268
</dl>
 
30269
 
 
30270
</dd>
 
30271
<dt> <b>Messages:</b> none</dt>
 
30272
<dt> <b>Variants:</b></dt>
 
30273
<dd>
 
30274
<dl compact="compact">
 
30275
<dt> <img src="images/ac_marble_black.png" alt="images/ac_marble_black"><p>  <b>ac_marble</b>: color = <code>BLACK</code>, controllers = <code>CTRL_YIN</code>, owner = <code>YIN</code>
 
30276
</p></dt>
 
30277
<dt> <img src="images/ac_marble_black.png" alt="images/ac_marble_black"><p> <b>ac_marble_black</b>: color = <code>BLACK</code>, controllers = <code>CTRL_YIN</code>, owner = <code>YIN</code>
 
30278
</p></dt>
 
30279
<dt> <img src="images/ac_marble_white.png" alt="images/ac_marble_white"><p> <b>ac_marble_white</b>: color = <code>WHITE</code>, controllers = <code>CTRL_YANG</code>, owner = <code>YANG</code>
 
30280
</p></dt>
 
30281
</dl>
 
30282
 
 
30283
</dd>
 
30284
</dl>
 
30285
 
 
30286
<hr size="6">
 
30287
<a name="ac_005fpearl"></a>
 
30288
<table cellpadding="1" cellspacing="1" border="0">
 
30289
<tr><td valign="middle" align="left">[<a href="#ac_005fmarble" title="Previous section in reading order"> &lt; </a>]</td>
 
30290
<td valign="middle" align="left">[<a href="#ac_005frotor" title="Next section in reading order"> &gt; </a>]</td>
 
30291
<td valign="middle" align="left"> &nbsp; </td>
 
30292
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30293
<td valign="middle" align="left">[<a href="#Actors" title="Up section"> Up </a>]</td>
 
30294
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
30295
<td valign="middle" align="left"> &nbsp; </td>
 
30296
<td valign="middle" align="left"> &nbsp; </td>
 
30297
<td valign="middle" align="left"> &nbsp; </td>
 
30298
<td valign="middle" align="left"> &nbsp; </td>
 
30299
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30300
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30301
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30302
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30303
</tr></table>
 
30304
<a name="ac_005fpearl-1"></a>
 
30305
<h3 class="subsection">10.2.5 ac_pearl</h3>
 
30306
<a name="index-ac_005fpearl"></a>
 
30307
 
 
30308
<p>The main actor for meditation levels in the shape of a small ball, currently
 
30309
just in white color available. Pearls are like marbles versatile actors that
 
30310
can jump, pass <a href="#it_005fvortex">it_vortex</a>, but on the other hand they can sink, fall and
 
30311
shatter, too.
 
30312
</p>
 
30313
<p>As long as the &lsquo;<samp>owner</samp>&rsquo; has an <a href="#it_005fextralife">it_extralife</a> in his inventory a dying
 
30314
marble will be resurrected. If no extra life is available a dying actor ends
 
30315
up in the &lsquo;<samp>state</samp>&rsquo; dead and can no longer be controlled.
 
30316
</p>
 
30317
<p>The pearls are preset to their standard attribute values. The pearls state
 
30318
changes due to events and can be read only.
 
30319
</p>
 
30320
<dl compact="compact">
 
30321
<dt> <b>Attributes:</b></dt>
 
30322
<dd>
 
30323
<dl compact="compact">
 
30324
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ALIVE</code>, <code>DEAD</code>; &nbsp;&nbsp;<i>default</i>: <code>ALIVE</code>; &nbsp;&nbsp;See section <a href="#state">state</a>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
30325
<dt> <b>color</b> &nbsp;&nbsp;<i>values</i>: <code>BLACK</code>, <code>WHITE</code>; &nbsp;&nbsp;<i>default</i>: <code>WHITE</code>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
30326
<dd><p>The color of the pearl.
 
30327
</p></dd>
 
30328
<dt> <b>adhesion</b> &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: <code>1.0</code>; &nbsp;&nbsp;See section <a href="#adhesion">adhesion</a></dt>
 
30329
<dt> <b>controllers</b> &nbsp;&nbsp;<i>values</i>: <code>CTRL_NONE</code>, <code>CTRL_YIN</code>, <code>CTRL_YANG</code>, <code>CTRL_YINYANG</code>; &nbsp;&nbsp;<i>default</i>: <code>CTRL_NONE</code>; &nbsp;&nbsp;See section <a href="#controllers">controllers</a></dt>
 
30330
<dt> <b>owner</b> &nbsp;&nbsp;<i>values</i>: <code>YIN</code>, <code>YANG</code>, <code>nil</code>; &nbsp;&nbsp;<i>default</i>: <code>nil</code>; &nbsp;&nbsp;See section <a href="#owner">owner</a></dt>
 
30331
<dt> <b>mass</b> &nbsp;&nbsp;<i>values</i>: positive float number; &nbsp;&nbsp;<i>default</i>: <code>0.7</code>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
30332
</dl>
 
30333
 
 
30334
</dd>
 
30335
<dt> <b>Messages:</b> none</dt>
 
30336
<dt> <b>Variants:</b></dt>
 
30337
<dd>
 
30338
<dl compact="compact">
 
30339
<dt> <img src="images/ac_pearl_white.png" alt="images/ac_pearl_white"><p> <b>ac_pearl</b>: color = <code>WHITE</code>, controllers = <code>CTRL_YINYANG</code>, owner = <code>YIN</code>
 
30340
</p></dt>
 
30341
<dt> <img src="images/ac_pearl_black.png" alt="images/ac_pearl_black"><p> <b>ac_pearl_black</b>: color = <code>BLACK</code>, controllers = <code>CTRL_YINYANG</code>, owner = <code>YIN</code>
 
30342
</p></dt>
 
30343
<dt> <img src="images/ac_pearl_white.png" alt="images/ac_pearl_white"><p> <b>ac_pearl_white</b>: color = <code>WHITE</code>, controllers = <code>CTRL_YINYANG</code>, owner = <code>YIN</code>
 
30344
</p></dt>
 
30345
</dl>
 
30346
 
 
30347
</dd>
 
30348
</dl>
 
30349
 
 
30350
<hr size="6">
 
30351
<a name="ac_005frotor"></a>
 
30352
<table cellpadding="1" cellspacing="1" border="0">
 
30353
<tr><td valign="middle" align="left">[<a href="#ac_005fpearl" title="Previous section in reading order"> &lt; </a>]</td>
 
30354
<td valign="middle" align="left">[<a href="#ac_005ftop" title="Next section in reading order"> &gt; </a>]</td>
 
30355
<td valign="middle" align="left"> &nbsp; </td>
 
30356
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30357
<td valign="middle" align="left">[<a href="#Actors" title="Up section"> Up </a>]</td>
 
30358
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
30359
<td valign="middle" align="left"> &nbsp; </td>
 
30360
<td valign="middle" align="left"> &nbsp; </td>
 
30361
<td valign="middle" align="left"> &nbsp; </td>
 
30362
<td valign="middle" align="left"> &nbsp; </td>
 
30363
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30364
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30365
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30366
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30367
</tr></table>
 
30368
<a name="ac_005frotor-1"></a>
 
30369
<h3 class="subsection">10.2.6 ac_rotor</h3>
 
30370
<a name="index-ac_005frotor"></a>
 
30371
 
 
30372
<p>A rotating actor build up of 4 greenish cudgels. It is a death bringing actor
 
30373
that shatters <a href="#ac_005fmarble">ac_marble</a>s and <a href="#ac_005fpearl">ac_pearl</a>s on contact. Its behaviour
 
30374
is identical to an <a href="#ac_005ftop">ac_top</a>.
 
30375
</p>
 
30376
<p>In contrast to the main actors it can not jump or pass an <a href="#it_005fvortex">it_vortex</a>, and
 
30377
will not sink, fall or shatter. A rotor is immortal.
 
30378
</p>
 
30379
<p>Rotors do usually hunt mortal actors trying to shatter them. They accelerate by
 
30380
force given by the attribute &lsquo;<samp>strength</samp>&rsquo;, but they limit their hunt to
 
30381
actors in the given &lsquo;<samp>range</samp>&rsquo;. If no attackable actor remains in this range
 
30382
they return to their initial position if the attribute &lsquo;<samp>gohome</samp>&rsquo; is
 
30383
&lsquo;<samp>true</samp>&rsquo;.
 
30384
</p>
 
30385
<p>Note that in case multiple attackable actors are in range the rotor gets
 
30386
confused and tries to attack the center of its victims. But if you set the
 
30387
attribute &lsquo;<samp>attacknearest</samp>&rsquo; to &lsquo;<samp>true</samp>&rsquo; the rotor will concentrate just
 
30388
on the nearest victim. By adjusting the attribute &lsquo;<samp>prefercurrent</samp>&rsquo; you
 
30389
can instruct the rotors to prefer victims of the current active player with
 
30390
a certain likelihood.
 
30391
</p>
 
30392
<p>Note that you need to set &lsquo;<samp>controllers</samp>&rsquo; as well as &lsquo;<samp>adhesion</samp>&rsquo; to proper
 
30393
values if you want a player to control a rotor directly. If a rotor is owned by a
 
30394
player <a href="#fl_005fthief">fl_thief</a> and <a href="#st_005fthief">st_thief</a> will steal items from it.
 
30395
</p>
 
30396
<p>An <a href="#ac_005fmarble">ac_marble</a> will temporarily transform into a rotor when it activates
 
30397
an <a href="#it_005fdrop">it_drop</a>. During the 5 seconds of transformation the actor is a real
 
30398
immortal rotor with the identity inclusive the &lsquo;<samp>essential_id</samp>&rsquo; of the
 
30399
former marble. After the period is over it transforms back to its original
 
30400
kind.
 
30401
</p>
 
30402
<dl compact="compact">
 
30403
<dt> <b>Attributes:</b></dt>
 
30404
<dd>
 
30405
<dl compact="compact">
 
30406
<dt> <b>range</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>5.0</code></dt>
 
30407
<dd><p>The distance up to which victims are hunted.
 
30408
</p></dd>
 
30409
<dt> <b>strength</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>+10.0</code></dt>
 
30410
<dd><p>The force that drives the rotor to its victims.
 
30411
</p></dd>
 
30412
<dt> <b>gohome</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
30413
<dd><p>Behaviour of a rotor without victim in range.
 
30414
</p></dd>
 
30415
<dt> <b>attacknearest</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
30416
<dd><p>Behaviour of a rotor with multiple victims in range
 
30417
</p></dd>
 
30418
<dt> <b>prefercurrent</b> &nbsp;&nbsp;<i>values</i>: float number in range [0.0 - 1.0]; &nbsp;&nbsp;<i>default</i>: <code>+0.0</code></dt>
 
30419
<dd><p>Likelihood of attack strategy. You will usually use this attribute in
 
30420
combination with &lsquo;<samp>attacknearest</samp>&rsquo; set to &lsquo;<samp>true</samp>&rsquo;. The Level
 
30421
&lsquo;<samp>Toreador</samp>&rsquo; is an example of the behavior of such rotors.
 
30422
</p></dd>
 
30423
<dt> <b>mass</b> &nbsp;&nbsp;<i>values</i>: positive float number; &nbsp;&nbsp;<i>default</i>: <code>0.8</code>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
30424
</dl>
 
30425
 
 
30426
</dd>
 
30427
<dt> <b>Messages:</b> none</dt>
 
30428
<dt> <b>Variants:</b></dt>
 
30429
<dd>
 
30430
<dl compact="compact">
 
30431
<dt> <img src="images/ac_rotor.png" alt="images/ac_rotor"><p> <b>ac_rotor</b>: color = <code>nil</code>, controllers = <code>CTRL_NONE</code>, owner = <code>nil</code>
 
30432
</p></dt>
 
30433
</dl>
 
30434
 
 
30435
</dd>
 
30436
</dl>
 
30437
 
 
30438
<hr size="6">
 
30439
<a name="ac_005ftop"></a>
 
30440
<table cellpadding="1" cellspacing="1" border="0">
 
30441
<tr><td valign="middle" align="left">[<a href="#ac_005frotor" title="Previous section in reading order"> &lt; </a>]</td>
 
30442
<td valign="middle" align="left">[<a href="#Actor-Features" title="Next section in reading order"> &gt; </a>]</td>
 
30443
<td valign="middle" align="left"> &nbsp; </td>
 
30444
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30445
<td valign="middle" align="left">[<a href="#Actors" title="Up section"> Up </a>]</td>
 
30446
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
30447
<td valign="middle" align="left"> &nbsp; </td>
 
30448
<td valign="middle" align="left"> &nbsp; </td>
 
30449
<td valign="middle" align="left"> &nbsp; </td>
 
30450
<td valign="middle" align="left"> &nbsp; </td>
 
30451
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30452
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30453
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30454
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30455
</tr></table>
 
30456
<a name="ac_005ftop-1"></a>
 
30457
<h3 class="subsection">10.2.7 ac_top</h3>
 
30458
<a name="index-ac_005ftop"></a>
 
30459
 
 
30460
<p>A fast rotating, greenish disk like actor. It is a death bringing actor
 
30461
that shatters <a href="#ac_005fmarble">ac_marble</a>s and <a href="#ac_005fpearl">ac_pearl</a>s on contact. Its behaviour
 
30462
is identical to an <a href="#ac_005frotor">ac_rotor</a>.
 
30463
</p>
 
30464
<p>In contrast to the main actors it can not jump or pass an <a href="#it_005fvortex">it_vortex</a>, and
 
30465
will not sink, fall or shatter. A top is immortal.
 
30466
</p>
 
30467
<p>Tops do usually hunt mortal actors trying to shatter them. They accelerate by
 
30468
force given by the attribute &lsquo;<samp>strength</samp>&rsquo;, but they limit their hunt to
 
30469
actors in the given &lsquo;<samp>range</samp>&rsquo;. If no attackable actor remains in this range
 
30470
they return to their initial position if the attribute &lsquo;<samp>gohome</samp>&rsquo; is
 
30471
&lsquo;<samp>true</samp>&rsquo;.
 
30472
</p>
 
30473
<p>Note that in case multiple attackable actors are in range the top gets
 
30474
confused and tries to attack the center of its victims. But if you set the
 
30475
attribute &lsquo;<samp>attacknearest</samp>&rsquo; to &lsquo;<samp>true</samp>&rsquo; the top will concentrate just
 
30476
on the nearest victim. By adjusting the attribute &lsquo;<samp>prefercurrent</samp>&rsquo; you
 
30477
can instruct the top to prefer victims of the current active player with
 
30478
a certain likelihood.
 
30479
</p>
 
30480
<p>Note that you need to set &lsquo;<samp>controllers</samp>&rsquo; as well as &lsquo;<samp>adhesion</samp>&rsquo; to proper
 
30481
values if you want a player to control a top directly. If a top is owned by a
 
30482
player <a href="#fl_005fthief">fl_thief</a> and <a href="#st_005fthief">st_thief</a> will steal items from it.
 
30483
</p>
 
30484
<dl compact="compact">
 
30485
<dt> <b>Attributes:</b></dt>
 
30486
<dd>
 
30487
<dl compact="compact">
 
30488
<dt> <b>range</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>5.0</code></dt>
 
30489
<dd><p>The distance up to which victims are hunted.
 
30490
</p></dd>
 
30491
<dt> <b>strength</b> &nbsp;&nbsp;<i>values</i>: float number; &nbsp;&nbsp;<i>default</i>: <code>+10.0</code></dt>
 
30492
<dd><p>The force that drives the top to its victims.
 
30493
</p></dd>
 
30494
<dt> <b>gohome</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
30495
<dd><p>Behaviour of a top without victim in range.
 
30496
</p></dd>
 
30497
<dt> <b>attacknearest</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
30498
<dd><p>Behaviour of a top with multiple victims in range
 
30499
</p></dd>
 
30500
<dt> <b>prefercurrent</b> &nbsp;&nbsp;<i>values</i>: float number in range [0.0 - 1.0]; &nbsp;&nbsp;<i>default</i>: <code>+0.0</code></dt>
 
30501
<dd><p>Likelihood of attack strategy. You will usually use this attribute in
 
30502
combination with &lsquo;<samp>attacknearest</samp>&rsquo; set to &lsquo;<samp>true</samp>&rsquo;. The Level
 
30503
&lsquo;<samp>Toreador</samp>&rsquo; is an example of the behavior of such rotors.
 
30504
</p></dd>
 
30505
<dt> <b>mass</b> &nbsp;&nbsp;<i>values</i>: positive float number; &nbsp;&nbsp;<i>default</i>: <code>0.8</code>; &nbsp;&nbsp;<i>access</i>: read only</dt>
 
30506
</dl>
 
30507
 
 
30508
</dd>
 
30509
<dt> <b>Messages:</b> none</dt>
 
30510
<dt> <b>Variants:</b></dt>
 
30511
<dd>
 
30512
<dl compact="compact">
 
30513
<dt> <img src="images/ac_top.png" alt="images/ac_top"><p> <b>ac_top</b>: color = <code>nil</code>, controllers = <code>CTRL_NONE</code>, owner = <code>nil</code>
 
30514
</p></dt>
 
30515
</dl>
 
30516
 
 
30517
</dd>
 
30518
</dl>
 
30519
 
 
30520
<hr size="6">
 
30521
<a name="Actor-Features"></a>
 
30522
<table cellpadding="1" cellspacing="1" border="0">
 
30523
<tr><td valign="middle" align="left">[<a href="#ac_005ftop" title="Previous section in reading order"> &lt; </a>]</td>
 
30524
<td valign="middle" align="left">[<a href="#Flying-Actors" title="Next section in reading order"> &gt; </a>]</td>
 
30525
<td valign="middle" align="left"> &nbsp; </td>
 
30526
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30527
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Up section"> Up </a>]</td>
 
30528
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
30529
<td valign="middle" align="left"> &nbsp; </td>
 
30530
<td valign="middle" align="left"> &nbsp; </td>
 
30531
<td valign="middle" align="left"> &nbsp; </td>
 
30532
<td valign="middle" align="left"> &nbsp; </td>
 
30533
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30534
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30535
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30536
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30537
</tr></table>
 
30538
<a name="Actor-Features-1"></a>
 
30539
<h2 class="section">10.3 Actor Features</h2>
 
30540
 
 
30541
<table class="menu" border="0" cellspacing="0">
 
30542
<tr><td align="left" valign="top"><a href="#Flying-Actors">10.3.1 Flying Actors</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
 
30543
</table>
 
30544
 
 
30545
<hr size="6">
 
30546
<a name="Flying-Actors"></a>
 
30547
<table cellpadding="1" cellspacing="1" border="0">
 
30548
<tr><td valign="middle" align="left">[<a href="#Actor-Features" title="Previous section in reading order"> &lt; </a>]</td>
 
30549
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next section in reading order"> &gt; </a>]</td>
 
30550
<td valign="middle" align="left"> &nbsp; </td>
 
30551
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30552
<td valign="middle" align="left">[<a href="#Actor-Features" title="Up section"> Up </a>]</td>
 
30553
<td valign="middle" align="left">[<a href="#Other-Objects" title="Next chapter"> &gt;&gt; </a>]</td>
 
30554
<td valign="middle" align="left"> &nbsp; </td>
 
30555
<td valign="middle" align="left"> &nbsp; </td>
 
30556
<td valign="middle" align="left"> &nbsp; </td>
 
30557
<td valign="middle" align="left"> &nbsp; </td>
 
30558
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30559
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30560
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30561
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30562
</tr></table>
 
30563
<a name="Flying-Actors-1"></a>
 
30564
<h3 class="subsection">10.3.1 Flying Actors</h3>
 
30565
 
 
30566
<p>Ball like actors, namely <a href="#ac_005fmarble">ac_marble</a> and <a href="#ac_005fpearl">ac_pearl</a> are able to fly for
 
30567
short period of time if they get catapulted by some item.
 
30568
</p>
 
30569
<p>Currently there are portable <a href="#it_005fspring">it_spring</a> that let actors jump on activation,
 
30570
static <a href="#it_005fspringboard">it_springboard</a> that catapult crossing actors and <a href="#it_005fvortex">it_vortex</a>
 
30571
that catapult warping actors.
 
30572
</p>
 
30573
<p>A flying actor can pass lethal grids with <a href="#fl_005fwater">fl_water</a>, <a href="#fl_005fabyss">fl_abyss</a>,
 
30574
<a href="#it_005ftrap">it_trap</a> and even laser beams. But most stones will block flying actors,
 
30575
even some hollow ones like <a href="#st_005fgrate">st_grate</a> or <a href="#st_005foneway">st_oneway</a>. But some others as
 
30576
<a href="#st_005fdoor">st_door</a> or hollow <a href="#Standard-Stones">Standard Stones</a> let flying actors pass.
 
30577
</p>
 
30578
<p>While flying an actor can not pick up any item. But the actor can still drop
 
30579
items. Activation of a spring while sinking in <a href="#fl_005fwater">fl_water</a> or <a href="#fl_005fswamp">fl_swamp</a>
 
30580
lets the actor jump immediately out of them and starts the sinking process from
 
30581
scratch anew when landing on such a floor.
 
30582
</p>
 
30583
 
 
30584
 
 
30585
<hr size="6">
 
30586
<a name="Other-Objects"></a>
 
30587
<table cellpadding="1" cellspacing="1" border="0">
 
30588
<tr><td valign="middle" align="left">[<a href="#Flying-Actors" title="Previous section in reading order"> &lt; </a>]</td>
 
30589
<td valign="middle" align="left">[<a href="#Visible-Others" title="Next section in reading order"> &gt; </a>]</td>
 
30590
<td valign="middle" align="left"> &nbsp; </td>
 
30591
<td valign="middle" align="left">[<a href="#Actor-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30592
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
30593
<td valign="middle" align="left">[<a href="#Libraries" title="Next chapter"> &gt;&gt; </a>]</td>
 
30594
<td valign="middle" align="left"> &nbsp; </td>
 
30595
<td valign="middle" align="left"> &nbsp; </td>
 
30596
<td valign="middle" align="left"> &nbsp; </td>
 
30597
<td valign="middle" align="left"> &nbsp; </td>
 
30598
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30599
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30600
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30601
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30602
</tr></table>
 
30603
<a name="Other-Objects-1"></a>
 
30604
<h1 class="chapter">11. Other Objects</h1>
 
30605
 
 
30606
<table class="menu" border="0" cellspacing="0">
 
30607
<tr><td align="left" valign="top"><a href="#Visible-Others">11.1 Visible Others</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    Special gaming objects
 
30608
</td></tr>
 
30609
<tr><td align="left" valign="top"><a href="#Gadgets">11.2 Gadgets</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Tools for plug and play construction of levels
 
30610
</td></tr>
 
30611
</table>
 
30612
 
 
30613
 
 
30614
<hr size="6">
 
30615
<a name="Visible-Others"></a>
 
30616
<table cellpadding="1" cellspacing="1" border="0">
 
30617
<tr><td valign="middle" align="left">[<a href="#Other-Objects" title="Previous section in reading order"> &lt; </a>]</td>
 
30618
<td valign="middle" align="left">[<a href="#ot_005fcannonball" title="Next section in reading order"> &gt; </a>]</td>
 
30619
<td valign="middle" align="left"> &nbsp; </td>
 
30620
<td valign="middle" align="left">[<a href="#Other-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30621
<td valign="middle" align="left">[<a href="#Other-Objects" title="Up section"> Up </a>]</td>
 
30622
<td valign="middle" align="left">[<a href="#Libraries" title="Next chapter"> &gt;&gt; </a>]</td>
 
30623
<td valign="middle" align="left"> &nbsp; </td>
 
30624
<td valign="middle" align="left"> &nbsp; </td>
 
30625
<td valign="middle" align="left"> &nbsp; </td>
 
30626
<td valign="middle" align="left"> &nbsp; </td>
 
30627
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30628
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30629
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30630
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30631
</tr></table>
 
30632
<a name="Visible-Others-1"></a>
 
30633
<h2 class="section">11.1 Visible Others</h2>
 
30634
 
 
30635
<table class="menu" border="0" cellspacing="0">
 
30636
<tr><td align="left" valign="top"><a href="#ot_005fcannonball">11.1.1 ot_cannonball</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Projectile of a Spitter
 
30637
</td></tr>
 
30638
<tr><td align="left" valign="top"><a href="#ot_005frubberband">11.1.2 ot_rubberband</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Rubberband with forces
 
30639
</td></tr>
 
30640
<tr><td align="left" valign="top"><a href="#ot_005fwire">11.1.3 ot_wire</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Stone connection that transfers impulses
 
30641
</td></tr>
 
30642
</table>
 
30643
 
 
30644
 
 
30645
<hr size="6">
 
30646
<a name="ot_005fcannonball"></a>
 
30647
<table cellpadding="1" cellspacing="1" border="0">
 
30648
<tr><td valign="middle" align="left">[<a href="#Visible-Others" title="Previous section in reading order"> &lt; </a>]</td>
 
30649
<td valign="middle" align="left">[<a href="#ot_005frubberband" title="Next section in reading order"> &gt; </a>]</td>
 
30650
<td valign="middle" align="left"> &nbsp; </td>
 
30651
<td valign="middle" align="left">[<a href="#Other-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30652
<td valign="middle" align="left">[<a href="#Visible-Others" title="Up section"> Up </a>]</td>
 
30653
<td valign="middle" align="left">[<a href="#Libraries" title="Next chapter"> &gt;&gt; </a>]</td>
 
30654
<td valign="middle" align="left"> &nbsp; </td>
 
30655
<td valign="middle" align="left"> &nbsp; </td>
 
30656
<td valign="middle" align="left"> &nbsp; </td>
 
30657
<td valign="middle" align="left"> &nbsp; </td>
 
30658
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30659
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30660
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30661
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30662
</tr></table>
 
30663
<a name="ot_005fcannonball-1"></a>
 
30664
<h3 class="subsection">11.1.1 ot_cannonball</h3>
 
30665
<a name="index-ot_005fcannonball"></a>
 
30666
 
 
30667
<p>A short living projectile emitted by an <a href="#st_005fspitter">st_spitter</a>. It is an internal
 
30668
object that can not be directly instantiated. It is listed here just for
 
30669
completeness.
 
30670
</p>
 
30671
<hr size="6">
 
30672
<a name="ot_005frubberband"></a>
 
30673
<table cellpadding="1" cellspacing="1" border="0">
 
30674
<tr><td valign="middle" align="left">[<a href="#ot_005fcannonball" title="Previous section in reading order"> &lt; </a>]</td>
 
30675
<td valign="middle" align="left">[<a href="#ot_005fwire" title="Next section in reading order"> &gt; </a>]</td>
 
30676
<td valign="middle" align="left"> &nbsp; </td>
 
30677
<td valign="middle" align="left">[<a href="#Other-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30678
<td valign="middle" align="left">[<a href="#Visible-Others" title="Up section"> Up </a>]</td>
 
30679
<td valign="middle" align="left">[<a href="#Libraries" title="Next chapter"> &gt;&gt; </a>]</td>
 
30680
<td valign="middle" align="left"> &nbsp; </td>
 
30681
<td valign="middle" align="left"> &nbsp; </td>
 
30682
<td valign="middle" align="left"> &nbsp; </td>
 
30683
<td valign="middle" align="left"> &nbsp; </td>
 
30684
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30685
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30686
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30687
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30688
</tr></table>
 
30689
<a name="ot_005frubberband-1"></a>
 
30690
<h3 class="subsection">11.1.2 ot_rubberband</h3>
 
30691
<a name="index-ot_005frubberband"></a>
 
30692
 
 
30693
<p>An orange link between two objects that can apply attracting or repelling forces
 
30694
to them.
 
30695
</p>
 
30696
<p>The two connected objects are called anchors. The attribute &lsquo;<samp>anchor1</samp>&rsquo; holds
 
30697
the first object&rsquo;s reference that must be an actor. The &lsquo;<samp>anchor2</samp>&rsquo; references
 
30698
the second object that can either be another actor or a stone. Both objects
 
30699
must exist to <a href="#add">add</a> a rubberband to the world. If the stone sinks, breaks
 
30700
or is killed otherwise the rubberband will be destroyed, too.
 
30701
</p>
 
30702
<p>Both anchor objects will update their attributes <a href="#rubbers">rubbers</a> and <a href="#fellows">fellows</a>
 
30703
to list this rubberband and the connected object for purposes of evaluation.
 
30704
</p>
 
30705
<p>The force that is applied between the objects can be configured by several
 
30706
attributes. Every rubberband has a natural &lsquo;<samp>length</samp>&rsquo; at which it does not
 
30707
apply any force to the actors. The more the rubberband is extended from this
 
30708
point it applies a force of the given &lsquo;<samp>strength</samp>&rsquo;. A positive strength is
 
30709
a natural attracting force, whereas a negative strength would repel the actors.
 
30710
</p>
 
30711
<p>A rubberband that is shorter than its natural &lsquo;<samp>length</samp>&rsquo; would normally not
 
30712
apply any force. But this special rubber allows you to set a &lsquo;<samp>threshold</samp>&rsquo;
 
30713
where the rubberband starts to apply the opposite directed forces onto the
 
30714
actors, like a spring would do. Thus a positive &lsquo;<samp>strength</samp>&rsquo; would lead to a
 
30715
repelling force, a negative one to an attracting force. A rubberband with a
 
30716
length in between &lsquo;<samp>threshold</samp>&rsquo; and &lsquo;<samp>length</samp>&rsquo; will apply no forces.
 
30717
If you set the attribute &lsquo;<samp>length</samp>&rsquo; to the value <code>AUTOLENGTH</code>, the
 
30718
length of the rubberband is determined from the distance of its two endpoints
 
30719
at the time of creation.
 
30720
</p>
 
30721
<p>In some cases you do want to limit the length of the rubberband. You can do this
 
30722
by setting &lsquo;<samp>min</samp>&rsquo; and &lsquo;<samp>max</samp>&rsquo; attributes. Actors will bounce on these
 
30723
limits. Do not try to use artificial large &lsquo;<samp>strength</samp>&rsquo; values instead to
 
30724
ensure length limits, as this could lead to extreme forces causing unexpected and
 
30725
unstable actor movements.
 
30726
</p>
 
30727
<p>If you set &lsquo;<samp>min</samp>&rsquo; or &lsquo;<samp>max</samp>&rsquo; limits, extraordinary events like actor
 
30728
warping, actor resurrection, moving anchor stones or simply rubberbands that are
 
30729
created with an off limit length can cause trouble. When such a limit violation
 
30730
is detected an action is performed with a value &lsquo;<samp>false</samp>&rsquo;. You may want to kill
 
30731
the rubberband or react in another way by a callback function. The default
 
30732
handling is an application of a constant force to bring the actors back within
 
30733
the limits. This force value is given by <a href="#RubberViolationStrength">RubberViolationStrength</a> and
 
30734
defaults to &lsquo;<samp>50.0</samp>&rsquo;. If you really need to assure that the player is not able
 
30735
to violate the limits any further you may need to increase this constant.
 
30736
</p>
 
30737
<p>Rubberbands can be cut by <a href="#st_005fscissors">st_scissors</a>, by an <a href="#it_005fvortex">it_vortex</a> or
 
30738
<a href="#it_005fwormhole">it_wormhole</a> with a set &lsquo;<samp>scissors</samp>&rsquo; attribute, by receiving a
 
30739
<a href="#kill">kill</a> message, by one of the anchors receiving a <a href="#disconnect">disconnect</a> message
 
30740
or a stone anchor that ceases to exist.
 
30741
</p>
 
30742
<p>Rubberbands can be dynamically generated by <a href="#it_005frubberband">it_rubberband</a> and
 
30743
<a href="#st_005frubberband">st_rubberband</a>.
 
30744
</p>
 
30745
<dl compact="compact">
 
30746
<dt> <b>Attributes:</b></dt>
 
30747
<dd>
 
30748
<dl compact="compact">
 
30749
<dt> <b>anchor1</b> &nbsp;&nbsp;<i>values</i>: actor object; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
30750
<dd><p>Object reference or name of an actor that the rubber will be connected to. Note
 
30751
that the reference will be immediately evaluated and thus the actor must exist
 
30752
already.
 
30753
</p></dd>
 
30754
<dt> <b>anchor2</b> &nbsp;&nbsp;<i>values</i>: actor or stone object; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
30755
<dd><p>Object reference or name of an actor or a stone that the rubber will be
 
30756
connected to. Note that the reference will be immediately evaluated and thus the
 
30757
actor or stone must exist already.
 
30758
</p></dd>
 
30759
<dt> <b>strength</b> &nbsp;&nbsp;<i>values</i>: number; &nbsp;&nbsp;<i>default</i>: <code>10.0</code></dt>
 
30760
<dd><p>The force strength.
 
30761
</p></dd>
 
30762
<dt> <b>length</b> &nbsp;&nbsp;<i>values</i>: positive number or <code>AUTOLENGTH</code>; &nbsp;&nbsp;<i>default</i>: <code>1.0</code></dt>
 
30763
<dd><p>The natural length above which forces are applied.
 
30764
</p></dd>
 
30765
<dt> <b>threshold</b> &nbsp;&nbsp;<i>values</i>: positive number or zero; &nbsp;&nbsp;<i>default</i>: <code>0.0</code></dt>
 
30766
<dd><p>The length smaller than the natural length below which inverted forces are applied.
 
30767
</p></dd>
 
30768
<dt> <b>min</b> &nbsp;&nbsp;<i>values</i>: positive number or zero; &nbsp;&nbsp;<i>default</i>: <code>0.0</code></dt>
 
30769
<dd><p>The minimum length at which actors bounce.
 
30770
</p></dd>
 
30771
<dt> <b>max</b> &nbsp;&nbsp;<i>values</i>: positive number or zero; &nbsp;&nbsp;<i>default</i>: <code>0.0</code></dt>
 
30772
<dd><p>The maximum length at which actors bounce.
 
30773
</p></dd>
 
30774
</dl>
 
30775
 
 
30776
</dd>
 
30777
<dt> <b>Messages:</b> none</dt>
 
30778
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
30779
<dd><p>An action will be performed with value &lsquo;<samp>false</samp>&rsquo; on violation of a min or max
 
30780
limit. Additionally an action will be performed on behalf of <a href="#it_005frubberband">it_rubberband</a>
 
30781
after application and creation of this rubberband with an action value of
 
30782
&lsquo;<samp>true</samp>&rsquo;.
 
30783
</p></dd>
 
30784
</dl>
 
30785
 
 
30786
<hr size="6">
 
30787
<a name="ot_005fwire"></a>
 
30788
<table cellpadding="1" cellspacing="1" border="0">
 
30789
<tr><td valign="middle" align="left">[<a href="#ot_005frubberband" title="Previous section in reading order"> &lt; </a>]</td>
 
30790
<td valign="middle" align="left">[<a href="#Gadgets" title="Next section in reading order"> &gt; </a>]</td>
 
30791
<td valign="middle" align="left"> &nbsp; </td>
 
30792
<td valign="middle" align="left">[<a href="#Other-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30793
<td valign="middle" align="left">[<a href="#Visible-Others" title="Up section"> Up </a>]</td>
 
30794
<td valign="middle" align="left">[<a href="#Libraries" title="Next chapter"> &gt;&gt; </a>]</td>
 
30795
<td valign="middle" align="left"> &nbsp; </td>
 
30796
<td valign="middle" align="left"> &nbsp; </td>
 
30797
<td valign="middle" align="left"> &nbsp; </td>
 
30798
<td valign="middle" align="left"> &nbsp; </td>
 
30799
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30800
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30801
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30802
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30803
</tr></table>
 
30804
<a name="ot_005fwire-1"></a>
 
30805
<h3 class="subsection">11.1.3 ot_wire</h3>
 
30806
<a name="index-ot_005fwire"></a>
 
30807
 
 
30808
<p>A wire is a purple wire connecting two stones that transfers every stone pushing
 
30809
impulse from one stone to the other and vice versa. Thus both stones will move
 
30810
on the impulse if they are movable at all and not blocked in the direction of
 
30811
the impulse. The impulses may originate from an actor hitting a stone, an
 
30812
<a href="#it_005fpuller">it_puller</a>, an <a href="#st_005frotator">st_rotator</a>, an <a href="#st_005fstoneimpulse">st_stoneimpulse</a>.
 
30813
</p>
 
30814
<p>A single stone can be wired to many other stones. All these <a href="#fellows">fellows</a> will
 
30815
move on an impulse. But the impulses will not be propagated to further stones
 
30816
that are wired themselves to any of the fellows. Just the direct wired stones
 
30817
will move.
 
30818
</p>
 
30819
<p>But you can wire to stones just once. Any subsequent additional wire between
 
30820
two already wired stones will cut the old wire prior establishing the new one.
 
30821
</p>
 
30822
<p>You can request the wires connected to a stone by the stones <a href="#wires">wires</a>
 
30823
attribute. As it is tedious to evaluate both anchors, every stone supports
 
30824
an attribute <a href="#fellows">fellows</a> that reports the connected objects.
 
30825
</p>
 
30826
<dl compact="compact">
 
30827
<dt> <b>Attributes:</b></dt>
 
30828
<dd>
 
30829
<dl compact="compact">
 
30830
<dt> <b>anchor1</b> &nbsp;&nbsp;<i>values</i>: stone object; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
30831
<dd><p>Object reference or name of a stone that the wire will be connected to. Note
 
30832
that the reference will be immediately evaluated and thus the stone must exist
 
30833
already.
 
30834
</p></dd>
 
30835
<dt> <b>anchor2</b> &nbsp;&nbsp;<i>values</i>: stone object; &nbsp;&nbsp;<i>default</i>: <code>nil</code></dt>
 
30836
<dd><p>Object reference or name of a stone that the wire will be connected to. Note
 
30837
that the reference will be immediately evaluated and thus the stone must exist
 
30838
already.
 
30839
</p></dd>
 
30840
</dl>
 
30841
 
 
30842
</dd>
 
30843
<dt> <b>Messages:</b> none</dt>
 
30844
<dt> <b>Actions:</b> none</dt>
 
30845
</dl>
 
30846
 
 
30847
<hr size="6">
 
30848
<a name="Gadgets"></a>
 
30849
<table cellpadding="1" cellspacing="1" border="0">
 
30850
<tr><td valign="middle" align="left">[<a href="#ot_005fwire" title="Previous section in reading order"> &lt; </a>]</td>
 
30851
<td valign="middle" align="left">[<a href="#ot_005fcounter" title="Next section in reading order"> &gt; </a>]</td>
 
30852
<td valign="middle" align="left"> &nbsp; </td>
 
30853
<td valign="middle" align="left">[<a href="#Other-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30854
<td valign="middle" align="left">[<a href="#Other-Objects" title="Up section"> Up </a>]</td>
 
30855
<td valign="middle" align="left">[<a href="#Libraries" title="Next chapter"> &gt;&gt; </a>]</td>
 
30856
<td valign="middle" align="left"> &nbsp; </td>
 
30857
<td valign="middle" align="left"> &nbsp; </td>
 
30858
<td valign="middle" align="left"> &nbsp; </td>
 
30859
<td valign="middle" align="left"> &nbsp; </td>
 
30860
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30861
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30862
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30863
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30864
</tr></table>
 
30865
<a name="Gadgets-1"></a>
 
30866
<h2 class="section">11.2 Gadgets</h2>
 
30867
 
 
30868
 
 
30869
<table class="menu" border="0" cellspacing="0">
 
30870
<tr><td align="left" valign="top"><a href="#ot_005fcounter">11.2.1 ot_counter</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">   Threshold Switch
 
30871
</td></tr>
 
30872
<tr><td align="left" valign="top"><a href="#ot_005ftimer">11.2.2 ot_timer</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Invisible Timer
 
30873
</td></tr>
 
30874
</table>
 
30875
 
 
30876
<hr size="6">
 
30877
<a name="ot_005fcounter"></a>
 
30878
<table cellpadding="1" cellspacing="1" border="0">
 
30879
<tr><td valign="middle" align="left">[<a href="#Gadgets" title="Previous section in reading order"> &lt; </a>]</td>
 
30880
<td valign="middle" align="left">[<a href="#ot_005ftimer" title="Next section in reading order"> &gt; </a>]</td>
 
30881
<td valign="middle" align="left"> &nbsp; </td>
 
30882
<td valign="middle" align="left">[<a href="#Other-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30883
<td valign="middle" align="left">[<a href="#Gadgets" title="Up section"> Up </a>]</td>
 
30884
<td valign="middle" align="left">[<a href="#Libraries" title="Next chapter"> &gt;&gt; </a>]</td>
 
30885
<td valign="middle" align="left"> &nbsp; </td>
 
30886
<td valign="middle" align="left"> &nbsp; </td>
 
30887
<td valign="middle" align="left"> &nbsp; </td>
 
30888
<td valign="middle" align="left"> &nbsp; </td>
 
30889
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30890
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30891
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30892
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30893
</tr></table>
 
30894
<a name="ot_005fcounter-1"></a>
 
30895
<h3 class="subsection">11.2.1 ot_counter</h3>
 
30896
<a name="index-ot_005fcounter"></a>
 
30897
 
 
30898
<p>A counter that switches on given thresholds. As a supplement to single switch
 
30899
like objects as <a href="#it_005ftrigger">it_trigger</a>, <a href="#st_005fswitch">st_switch</a>, <a href="#st_005flaserswitch">st_laserswitch</a>,
 
30900
<a href="#st_005fcoinslot">st_coinslot</a>, <a href="#st_005fkey">st_key</a>, <a href="#st_005ffloppy">st_floppy</a>, etc. this gadget allows to
 
30901
react on a given number of these switches to be switched &lsquo;<samp>ON</samp>&rsquo; while the
 
30902
others being switched &lsquo;<samp>OFF</samp>&rsquo;.
 
30903
</p>
 
30904
<p>The attribute &lsquo;<samp>state</samp>&rsquo; represents the count of switches in &lsquo;<samp>ON</samp>&rsquo; state.
 
30905
Due to the <a href="#Snapshot-Principle">Snapshot Principle</a> you need to set it to the initial number
 
30906
of &lsquo;<samp>ON</samp>&rsquo; switches. All switches need to declare the counter gadget as their
 
30907
&lsquo;<samp>target</samp>&rsquo;. They all need to send a <code>&quot;signal&quot;</code> message as &lsquo;<samp>action</samp>&rsquo;.
 
30908
The counter gadget increases or decreases its count state on every received
 
30909
signal message thus keeping it up to date.
 
30910
</p>
 
30911
<p>The gadget itself can perform actions by usage of <a href="#Object-State">Object State</a> dependent
 
30912
targets and actions.
 
30913
</p>
 
30914
<p>E.g. let us assume 8 <a href="#it_005ftrigger">it_trigger</a>s and 8 <a href="#st_005fbox">st_box</a>es. Two boxes are
 
30915
initially on top of two triggers. A door should open as soon as the user
 
30916
succeeds in pushing all boxes onto the triggers.
 
30917
</p>
 
30918
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;t&quot;] = {&quot;it_trigger&quot;, target=&quot;mycounter&quot;, action=&quot;signal&quot;}
 
30919
ti[&quot;b&quot;] = {&quot;st_box&quot;}
 
30920
ti[&quot;o&quot;] = ti[&quot;t&quot;] .. ti[&quot;b&quot;]
 
30921
ti[&quot;d&quot;] = {&quot;st_door&quot;, &quot;mydoor&quot;}
 
30922
wo(ti, &quot; &quot;, {&quot;t t t o t o t t&quot;,
 
30923
             &quot;b b b   b   b b&quot;,
 
30924
             &quot;      d   @    &quot;})
 
30925
wo:add({&quot;ot_counter&quot;, &quot;mycounter&quot;, state=2, target=&quot;mydoor&quot;, action_7=&quot;close&quot;, action_8=&quot;open&quot;})
 
30926
</pre></td></tr></table>
 
30927
 
 
30928
<p>Note that it is not sufficient to send an <code>&quot;open&quot;</code> message on a
 
30929
&lsquo;<samp>state</samp>&rsquo; count of 8, as this event occurs, when 7 boxes are on top of
 
30930
triggers and the last trigger is pressed by the actor itself, too. When the
 
30931
actor leaves the 8th trigger the gadget state decreases its state to 7 and
 
30932
sends a <code>&quot;close&quot;</code> message to the door.
 
30933
</p>
 
30934
<dl compact="compact">
 
30935
<dt> <b>Attributes:</b></dt>
 
30936
<dd>
 
30937
<dl compact="compact">
 
30938
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: numbers; &nbsp;&nbsp;<i>default</i>: 0 &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
30939
<dd><p>The count of switches in &lsquo;<samp>ON</samp>&rsquo; state.
 
30940
</p></dd>
 
30941
</dl>
 
30942
 
 
30943
</dd>
 
30944
<dt> <b>Messages:</b></dt>
 
30945
<dd>
 
30946
<dl compact="compact">
 
30947
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
30948
<dd><p>Increases state on a value of &lsquo;<samp>1</samp>&rsquo;, and decreases on a value of &lsquo;<samp>0</samp>&rsquo;.
 
30949
</p></dd>
 
30950
</dl>
 
30951
 
 
30952
</dd>
 
30953
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
30954
<dd><p>Sends an action with value &lsquo;<samp>true</samp>&rsquo; just on explicitly given
 
30955
<a href="#Object-State">Object State</a> dependent target or action attributes. No default
 
30956
<code>&quot;toggle&quot;</code> actions will be issued on other states.
 
30957
</p></dd>
 
30958
</dl>
 
30959
 
 
30960
 
 
30961
<hr size="6">
 
30962
<a name="ot_005ftimer"></a>
 
30963
<table cellpadding="1" cellspacing="1" border="0">
 
30964
<tr><td valign="middle" align="left">[<a href="#ot_005fcounter" title="Previous section in reading order"> &lt; </a>]</td>
 
30965
<td valign="middle" align="left">[<a href="#Libraries" title="Next section in reading order"> &gt; </a>]</td>
 
30966
<td valign="middle" align="left"> &nbsp; </td>
 
30967
<td valign="middle" align="left">[<a href="#Other-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
30968
<td valign="middle" align="left">[<a href="#Gadgets" title="Up section"> Up </a>]</td>
 
30969
<td valign="middle" align="left">[<a href="#Libraries" title="Next chapter"> &gt;&gt; </a>]</td>
 
30970
<td valign="middle" align="left"> &nbsp; </td>
 
30971
<td valign="middle" align="left"> &nbsp; </td>
 
30972
<td valign="middle" align="left"> &nbsp; </td>
 
30973
<td valign="middle" align="left"> &nbsp; </td>
 
30974
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
30975
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
30976
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
30977
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
30978
</tr></table>
 
30979
<a name="ot_005ftimer-1"></a>
 
30980
<h3 class="subsection">11.2.2 ot_timer</h3>
 
30981
<a name="index-ot_005ftimer"></a>
 
30982
 
 
30983
<p>This gadget can be used to trigger a delayed single or periodic events. It is
 
30984
nearly identical to the <a href="#st_005ftimer">st_timer</a>, but does neither require a grid position
 
30985
nor disturb the user by a pulsing animation.
 
30986
</p>
 
30987
<p>Note that this is an exceptional object as its default state is &lsquo;<samp>ON</samp>&rsquo; to
 
30988
support the most common case of immediately running timers.
 
30989
</p>
 
30990
<p>A single shot, not looping timer will send an action value of &lsquo;<samp>true</samp>&rsquo;. A
 
30991
looping timer will alternate the boolean action values starting with value
 
30992
&lsquo;<samp>true</samp>&rsquo;. You can use <a href="#inverse">inverse</a> to start with a value of &lsquo;<samp>false</samp>&rsquo;.
 
30993
</p>
 
30994
<p>If you stop a timer by switching it off, no further events will be performed.
 
30995
Restarting the timer by switching it on again will restart the timer like
 
30996
a new timer.
 
30997
</p>
 
30998
<p>The time interval to the first event and between subsequent events can be relied
 
30999
on to an accuracy of 0.01 seconds. But due to performance reasons and visibility
 
31000
of the reactions timers should not be set to intervals below 0.1 seconds. An
 
31001
interval of less than 0.01 seconds is not valid for a looping timer.
 
31002
</p>
 
31003
<dl compact="compact">
 
31004
<dt> <b>Attributes:</b></dt>
 
31005
<dd>
 
31006
<dl compact="compact">
 
31007
<dt> <b>state</b>, &nbsp;&nbsp;<i>values</i>: <code>ON</code>, <code>OFF</code>; &nbsp;&nbsp;<i>default</i>: <code>ON</code> &nbsp;&nbsp;See section <a href="#state">state</a></dt>
 
31008
<dd><p>An &lsquo;<samp>ON</samp>&rsquo; state timer is running. A timer in state &lsquo;<samp>OFF</samp>&rsquo; is reset and
 
31009
waiting for reactivation.
 
31010
</p></dd>
 
31011
<dt> <b>interval</b> &nbsp;&nbsp;<i>values</i>: positive number; &nbsp;&nbsp;<i>default</i>: <code>1.0</code></dt>
 
31012
<dd><p>Number of seconds until the first and between subsequent events. The interval
 
31013
must be larger or equal 0.01 seconds for looping timers.
 
31014
</p></dd>
 
31015
<dt> <b>loop</b> &nbsp;&nbsp;<i>values</i>: <code>true</code>, <code>false</code>; &nbsp;&nbsp;<i>default</i>: <code>true</code></dt>
 
31016
<dd><p>A looping timer will send periodic events.
 
31017
</p></dd>
 
31018
</dl>
 
31019
 
 
31020
</dd>
 
31021
<dt> <b>Messages:</b></dt>
 
31022
<dd>
 
31023
<dl compact="compact">
 
31024
<dt> <b>signal</b> &nbsp;&nbsp;See section <a href="#signal">signal</a></dt>
 
31025
<dd><p>Switches on at value &lsquo;<samp>1</samp>&rsquo;, and off at values &lsquo;<samp>0</samp>&rsquo;.
 
31026
</p></dd>
 
31027
<dt> <b>on</b> &nbsp;&nbsp;See section <a href="#on">on</a></dt>
 
31028
<dt> <b>off</b> &nbsp;&nbsp;See section <a href="#off">off</a></dt>
 
31029
</dl>
 
31030
 
 
31031
</dd>
 
31032
<dt> <b>Action:</b> &nbsp;&nbsp;See section <a href="#target">target</a>, &nbsp;&nbsp;See section <a href="#action">action</a></dt>
 
31033
<dd><p>The action value starts with &lsquo;<samp>true</samp>&rsquo; and alternates on every event between
 
31034
&lsquo;<samp>false</samp>&rsquo; and &lsquo;<samp>true</samp>&rsquo;. A timer that is reset starts again with value
 
31035
&lsquo;<samp>true</samp>&rsquo;
 
31036
</p></dd>
 
31037
</dl>
 
31038
 
 
31039
 
 
31040
<hr size="6">
 
31041
<a name="Libraries"></a>
 
31042
<table cellpadding="1" cellspacing="1" border="0">
 
31043
<tr><td valign="middle" align="left">[<a href="#ot_005ftimer" title="Previous section in reading order"> &lt; </a>]</td>
 
31044
<td valign="middle" align="left">[<a href="#Basic-Functions" title="Next section in reading order"> &gt; </a>]</td>
 
31045
<td valign="middle" align="left"> &nbsp; </td>
 
31046
<td valign="middle" align="left">[<a href="#Other-Objects" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31047
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
31048
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31049
<td valign="middle" align="left"> &nbsp; </td>
 
31050
<td valign="middle" align="left"> &nbsp; </td>
 
31051
<td valign="middle" align="left"> &nbsp; </td>
 
31052
<td valign="middle" align="left"> &nbsp; </td>
 
31053
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31054
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31055
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31056
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31057
</tr></table>
 
31058
<a name="Libraries-1"></a>
 
31059
<h1 class="chapter">12. Libraries</h1>
 
31060
 
 
31061
<p>Libraries do contain extensions that are not necessary for every level. By
 
31062
outsourcing them into separate files they do not get loaded if not used. This
 
31063
improves the level load time and runtime resource consumption. But as a level
 
31064
author you have to declare the usage of a library by an XML metadata
 
31065
&lsquo;<samp>dependency</samp>&rsquo; element within the <a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a> element. The
 
31066
necessary line of code is listed within every library description.
 
31067
</p>
 
31068
<p>Some libraries contain collections of useful functions and methods. They are
 
31069
described in this chapter. Other libraries do contain <a href="#Resolvers">Resolvers</a> and are
 
31070
described just there.
 
31071
</p>
 
31072
<table class="menu" border="0" cellspacing="0">
 
31073
<tr><td align="left" valign="top"><a href="#Basic-Functions">12.1 Basic Functions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">  About basic lua functions and standard lua libraries.
 
31074
</td></tr>
 
31075
<tr><td align="left" valign="top"><a href="#liblua">12.2 liblua</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           General methods for tables.
 
31076
</td></tr>
 
31077
<tr><td align="left" valign="top"><a href="#libmath">12.3 libmath</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Mathematical algorithms, like random permutations.
 
31078
</td></tr>
 
31079
<tr><td align="left" valign="top"><a href="#libmap">12.4 libmap</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Methods for API 2-maps.
 
31080
</td></tr>
 
31081
<tr><td align="left" valign="top"><a href="#libimport">12.5 libimport</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Methods for importing external level files.
 
31082
</td></tr>
 
31083
<tr><td align="left" valign="top"><a href="#libsoko">12.6 libsoko</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          A library to interpret Sokoban level files.
 
31084
</td></tr>
 
31085
</table>
 
31086
 
 
31087
<hr size="6">
 
31088
<a name="Basic-Functions"></a>
 
31089
<table cellpadding="1" cellspacing="1" border="0">
 
31090
<tr><td valign="middle" align="left">[<a href="#Libraries" title="Previous section in reading order"> &lt; </a>]</td>
 
31091
<td valign="middle" align="left">[<a href="#liblua" title="Next section in reading order"> &gt; </a>]</td>
 
31092
<td valign="middle" align="left"> &nbsp; </td>
 
31093
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31094
<td valign="middle" align="left">[<a href="#Libraries" title="Up section"> Up </a>]</td>
 
31095
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31096
<td valign="middle" align="left"> &nbsp; </td>
 
31097
<td valign="middle" align="left"> &nbsp; </td>
 
31098
<td valign="middle" align="left"> &nbsp; </td>
 
31099
<td valign="middle" align="left"> &nbsp; </td>
 
31100
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31101
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31102
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31103
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31104
</tr></table>
 
31105
<a name="Basic-Functions-1"></a>
 
31106
<h2 class="section">12.1 Basic Functions</h2>
 
31107
 
 
31108
<p>Enigma supports most Lua 5.1 and above statements, i.e. you can freely use
 
31109
tables and control structures in your level, as you would expect. However, some
 
31110
Lua functions have been deactivated for security reasons or to ensure
 
31111
upwards compatibility. These are &lsquo;<samp>dofile</samp>&rsquo;, &lsquo;<samp>module</samp>&rsquo;, &lsquo;<samp>require</samp>&rsquo;
 
31112
and most or all functions of the standard libraries &lsquo;<samp>package</samp>&rsquo;, &lsquo;<samp>io</samp>&rsquo;
 
31113
and &lsquo;<samp>os</samp>&rsquo;. You should use the <a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a>-tag to include external
 
31114
libraries instead of &lsquo;<samp>require</samp>&rsquo;, &lsquo;<samp>dofile</samp>&rsquo; or &lsquo;<samp>package</samp>&rsquo;, and
 
31115
&lsquo;<samp>print</samp>&rsquo; for output to stdout instead of &lsquo;<samp>io</samp>&rsquo;. The &lsquo;<samp>print</samp>&rsquo;
 
31116
function is pretty useful for developing and debugging complex levels, but
 
31117
should not appear in the level&rsquo;s final version anymore.
 
31118
</p>
 
31119
<p>Of Lua&rsquo;s built-in mathematical functions you may use any of the following:
 
31120
&lsquo;<samp>math.abs</samp>&rsquo;, &lsquo;<samp>math.acos</samp>&rsquo;, &lsquo;<samp>math.asin</samp>&rsquo;, &lsquo;<samp>math.atan</samp>&rsquo;,
 
31121
&lsquo;<samp>math.atan2</samp>&rsquo;, &lsquo;<samp>math.ceil</samp>&rsquo;, &lsquo;<samp>math.cos</samp>&rsquo;, &lsquo;<samp>math.cosh</samp>&rsquo;,
 
31122
&lsquo;<samp>math.deg</samp>&rsquo;, &lsquo;<samp>math.exp</samp>&rsquo;, &lsquo;<samp>math.floor</samp>&rsquo;, &lsquo;<samp>math.fmod</samp>&rsquo;,
 
31123
&lsquo;<samp>math.frexp</samp>&rsquo;, &lsquo;<samp>math.huge</samp>&rsquo;, &lsquo;<samp>math.ldexp</samp>&rsquo;, &lsquo;<samp>math.log</samp>&rsquo;,
 
31124
&lsquo;<samp>math.log10</samp>&rsquo;, &lsquo;<samp>math.max</samp>&rsquo;, &lsquo;<samp>math.min</samp>&rsquo;, &lsquo;<samp>math.modf</samp>&rsquo;,
 
31125
&lsquo;<samp>math.pi</samp>&rsquo;, &lsquo;<samp>math.pow</samp>&rsquo;, &lsquo;<samp>math.rad</samp>&rsquo;, &lsquo;<samp>math.random</samp>&rsquo;,
 
31126
&lsquo;<samp>math.sin</samp>&rsquo;, &lsquo;<samp>math.sinh</samp>&rsquo;,  &lsquo;<samp>math.sqrt</samp>&rsquo;, &lsquo;<samp>math.tan</samp>&rsquo;,
 
31127
&lsquo;<samp>math.tanh</samp>&rsquo;.
 
31128
</p>
 
31129
<p>All trigonometric functions use radians, you can use &lsquo;<samp>math.deg</samp>&rsquo; and
 
31130
&lsquo;<samp>math.rad</samp>&rsquo; to convert between radians and degrees. For the differences
 
31131
between &lsquo;<samp>math.mod</samp>&rsquo;, &lsquo;<samp>%</samp>&rsquo;, and &lsquo;<samp>math.fmod</samp>&rsquo; see <a href="#lib_002elua_002emod">lib.lua.mod</a>.
 
31132
</p>
 
31133
<p>While you have access to nearly all mathematical functions Lua defines, Enigma
 
31134
uses an own random generator, which you access via &lsquo;<samp>math.random</samp>&rsquo; with the
 
31135
same syntax as Lua&rsquo;s random generator. To ensure stability in future versions
 
31136
of Enigma, &lsquo;<samp>math.randomseed</samp>&rsquo; is disabled.
 
31137
</p>
 
31138
<p>Please read the online manual of
 
31139
<a href="http://www.lua.org/manual/5.1/">Lua 5.1</a> for more detailed information.
 
31140
</p>
 
31141
 
 
31142
<hr size="6">
 
31143
<a name="liblua"></a>
 
31144
<table cellpadding="1" cellspacing="1" border="0">
 
31145
<tr><td valign="middle" align="left">[<a href="#Basic-Functions" title="Previous section in reading order"> &lt; </a>]</td>
 
31146
<td valign="middle" align="left">[<a href="#lib_002elua_002ecombine_005ftables" title="Next section in reading order"> &gt; </a>]</td>
 
31147
<td valign="middle" align="left"> &nbsp; </td>
 
31148
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31149
<td valign="middle" align="left">[<a href="#Libraries" title="Up section"> Up </a>]</td>
 
31150
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31151
<td valign="middle" align="left"> &nbsp; </td>
 
31152
<td valign="middle" align="left"> &nbsp; </td>
 
31153
<td valign="middle" align="left"> &nbsp; </td>
 
31154
<td valign="middle" align="left"> &nbsp; </td>
 
31155
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31156
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31157
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31158
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31159
</tr></table>
 
31160
<a name="liblua-1"></a>
 
31161
<h2 class="section">12.2 liblua</h2>
 
31162
 
 
31163
<p>This library of basic extensions to the Lua language is described as of release
 
31164
1.
 
31165
</p>
 
31166
<p>You can load it by adding an &lsquo;<samp>dependency</samp>&rsquo; element to the
 
31167
<a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a> XML Metadata element as follows:
 
31168
</p>
 
31169
<table><tr><td>&nbsp;</td><td><pre class="example">  &lt;<i>el</i>:<b>dependency</b> <i>el</i>:<b>path</b>=&quot;<var>lib/liblua</var>&quot; <i>el</i>:<b>id</b>=&quot;<var>lib/liblua</var>&quot; <i>el</i>:<b>release</b>=&quot;<var>1</var>&quot; <i>el</i>:<b>preload</b>=&quot;<var>true</var>&quot;/&gt;
 
31170
</pre></td></tr></table>
 
31171
 
 
31172
<table class="menu" border="0" cellspacing="0">
 
31173
<tr><td align="left" valign="top"><a href="#lib_002elua_002ecombine_005ftables">12.2.1 lib.lua.combine_tables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">  Collect entries of anonymous Lua-tables into a common table.
 
31174
</td></tr>
 
31175
<tr><td align="left" valign="top"><a href="#lib_002elua_002edeep_005fcopy">12.2.2 lib.lua.deep_copy</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Complete copies of Lua-tables.
 
31176
</td></tr>
 
31177
<tr><td align="left" valign="top"><a href="#lib_002elua_002emod">12.2.3 lib.lua.mod</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             A modulo operation.
 
31178
</td></tr>
 
31179
<tr><td align="left" valign="top"><a href="#lib_002elua_002eprint_005ftable">12.2.4 lib.lua.print_table</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Print tables for debug reasons.
 
31180
</td></tr>
 
31181
<tr><td align="left" valign="top"><a href="#lib_002elua_002eshuffle">12.2.5 lib.lua.shuffle</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Shuffle arbitrary anonymous Lua-tables.
 
31182
</td></tr>
 
31183
<tr><td align="left" valign="top"><a href="#lib_002elua_002eto_005fstring">12.2.6 lib.lua.to_string</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Takes anything as argument and tries to return a sensible description.
 
31184
</td></tr>
 
31185
</table>
 
31186
 
 
31187
 
 
31188
<hr size="6">
 
31189
<a name="lib_002elua_002ecombine_005ftables"></a>
 
31190
<table cellpadding="1" cellspacing="1" border="0">
 
31191
<tr><td valign="middle" align="left">[<a href="#liblua" title="Previous section in reading order"> &lt; </a>]</td>
 
31192
<td valign="middle" align="left">[<a href="#lib_002elua_002edeep_005fcopy" title="Next section in reading order"> &gt; </a>]</td>
 
31193
<td valign="middle" align="left"> &nbsp; </td>
 
31194
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31195
<td valign="middle" align="left">[<a href="#liblua" title="Up section"> Up </a>]</td>
 
31196
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31197
<td valign="middle" align="left"> &nbsp; </td>
 
31198
<td valign="middle" align="left"> &nbsp; </td>
 
31199
<td valign="middle" align="left"> &nbsp; </td>
 
31200
<td valign="middle" align="left"> &nbsp; </td>
 
31201
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31202
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31203
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31204
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31205
</tr></table>
 
31206
<a name="lib_002elua_002ecombine_005ftables-1"></a>
 
31207
<h3 class="subsection">12.2.1 lib.lua.combine_tables</h3>
 
31208
<a name="index-lib_002elua_002ecombine_005ftables"></a>
 
31209
 
 
31210
<p>&lsquo;<samp>combine_tables</samp>&rsquo; combines all entries of a set or table of tables into one
 
31211
common table (i.e., it joins the subtables). As some of the subtables can have
 
31212
equally named entries, the first subtable has highest priority, the second
 
31213
subtable second priority etc.
 
31214
</p>
 
31215
<dl compact="compact">
 
31216
<dt> <b>Syntax:</b></dt>
 
31217
<dd><p><b>lib.lua.combine_tables</b>(<i>overtable</i>)
 
31218
</p>
 
31219
<p><b>lib.lua.combine_tables</b>(<i>table1</i>, <i>table2</i>, ...)
 
31220
</p>
 
31221
<dl compact="compact">
 
31222
<dt> <i>overtable</i></dt>
 
31223
<dd><p>A table of tables: &lsquo;<samp>overtable = {table1, table2, ...}</samp>&rsquo;
 
31224
</p>
 
31225
</dd>
 
31226
<dt> <i>table1</i>, <i>table2</i>, ...</dt>
 
31227
<dd><p>Lua tables to be joined.
 
31228
</p></dd>
 
31229
</dl>
 
31230
 
 
31231
</dd>
 
31232
<dt> <b>Syntax Samples:</b></dt>
 
31233
<dd><table><tr><td>&nbsp;</td><td><pre class="example">all_contacts = lib.lua.combine_tables(telephone_numbers, email_addresses)
 
31234
</pre></td></tr></table>
 
31235
 
 
31236
</dd>
 
31237
<dt> <b>Details:</b></dt>
 
31238
<dd><p>Just as groups can be joined by &lsquo;<samp>grp1 + grp2</samp>&rsquo;, it can sometimes be
 
31239
necessary to join anonymous tables, as well.
 
31240
In most situations, object grouping should be used instead, but when one works
 
31241
with more abstract data (like names of objects instead of objects, or tables
 
31242
holding design information), &lsquo;<samp>combine_tables</samp>&rsquo; can be useful.
 
31243
</p>
 
31244
</dd>
 
31245
<dt> <b>Full Example:</b></dt>
 
31246
</dl>
 
31247
 
 
31248
 
 
31249
<hr size="6">
 
31250
<a name="lib_002elua_002edeep_005fcopy"></a>
 
31251
<table cellpadding="1" cellspacing="1" border="0">
 
31252
<tr><td valign="middle" align="left">[<a href="#lib_002elua_002ecombine_005ftables" title="Previous section in reading order"> &lt; </a>]</td>
 
31253
<td valign="middle" align="left">[<a href="#lib_002elua_002emod" title="Next section in reading order"> &gt; </a>]</td>
 
31254
<td valign="middle" align="left"> &nbsp; </td>
 
31255
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31256
<td valign="middle" align="left">[<a href="#liblua" title="Up section"> Up </a>]</td>
 
31257
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31258
<td valign="middle" align="left"> &nbsp; </td>
 
31259
<td valign="middle" align="left"> &nbsp; </td>
 
31260
<td valign="middle" align="left"> &nbsp; </td>
 
31261
<td valign="middle" align="left"> &nbsp; </td>
 
31262
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31263
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31264
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31265
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31266
</tr></table>
 
31267
<a name="lib_002elua_002edeep_005fcopy-1"></a>
 
31268
<h3 class="subsection">12.2.2 lib.lua.deep_copy</h3>
 
31269
<a name="index-lib_002elua_002edeep_005fcopy"></a>
 
31270
 
 
31271
<p>&lsquo;<samp>deep_copy</samp>&rsquo; returns a copy of its argument, where table entries are
 
31272
not copied as memory references (like Lua typically does), but complete
 
31273
(thereby called &quot;deep copy&quot;).
 
31274
</p>
 
31275
<dl compact="compact">
 
31276
<dt> <b>Syntax:</b></dt>
 
31277
<dd><p><b>lib.lua.deep_copy</b>(<i>source</i>)
 
31278
</p>
 
31279
<dl compact="compact">
 
31280
<dt> <i>source</i></dt>
 
31281
<dd><p>The object to be copied.
 
31282
</p></dd>
 
31283
</dl>
 
31284
 
 
31285
</dd>
 
31286
<dt> <b>Syntax Samples:</b></dt>
 
31287
<dd><table><tr><td>&nbsp;</td><td><pre class="example">a = {5}
 
31288
b = a
 
31289
c = lib.lua.deep_copy(a)
 
31290
b[1] = 4
 
31291
</pre></td></tr></table>
 
31292
 
 
31293
<p>After these four commands, &lsquo;<samp>a[1]</samp>&rsquo; and &lsquo;<samp>b[1]</samp>&rsquo; will both be &lsquo;<samp>4</samp>&rsquo;,
 
31294
but &lsquo;<samp>c[1]</samp>&rsquo; will still be &lsquo;<samp>5</samp>&rsquo;.
 
31295
</p>
 
31296
</dd>
 
31297
<dt> <b>Details:</b></dt>
 
31298
<dd><p>Metatables are transferred, but not deep-copied.
 
31299
Userdata (like tiles and positions) is not guaranteed to be deep-copied.
 
31300
</p>
 
31301
</dd>
 
31302
<dt> <b>Full Example:</b></dt>
 
31303
</dl>
 
31304
 
 
31305
 
 
31306
<hr size="6">
 
31307
<a name="lib_002elua_002emod"></a>
 
31308
<table cellpadding="1" cellspacing="1" border="0">
 
31309
<tr><td valign="middle" align="left">[<a href="#lib_002elua_002edeep_005fcopy" title="Previous section in reading order"> &lt; </a>]</td>
 
31310
<td valign="middle" align="left">[<a href="#lib_002elua_002eprint_005ftable" title="Next section in reading order"> &gt; </a>]</td>
 
31311
<td valign="middle" align="left"> &nbsp; </td>
 
31312
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31313
<td valign="middle" align="left">[<a href="#liblua" title="Up section"> Up </a>]</td>
 
31314
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31315
<td valign="middle" align="left"> &nbsp; </td>
 
31316
<td valign="middle" align="left"> &nbsp; </td>
 
31317
<td valign="middle" align="left"> &nbsp; </td>
 
31318
<td valign="middle" align="left"> &nbsp; </td>
 
31319
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31320
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31321
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31322
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31323
</tr></table>
 
31324
<a name="lib_002elua_002emod-1"></a>
 
31325
<h3 class="subsection">12.2.3 lib.lua.mod</h3>
 
31326
<a name="index-lib_002elua_002emod"></a>
 
31327
 
 
31328
<p>A wrapper for the modulo operation.
 
31329
</p>
 
31330
<dl compact="compact">
 
31331
<dt> <b>Syntax:</b></dt>
 
31332
<dd><p><b>lib.lua.mod</b>(<i>value</i>, <i>modul</i>)
 
31333
</p>
 
31334
<dl compact="compact">
 
31335
<dt> <i>value</i>, <i>modul</i></dt>
 
31336
<dd><p>Numbers. &lsquo;<samp>modul</samp>&rsquo; must be positive (non-zero).
 
31337
</p></dd>
 
31338
</dl>
 
31339
 
 
31340
</dd>
 
31341
<dt> <b>Syntax Samples:</b></dt>
 
31342
<dd><table><tr><td>&nbsp;</td><td><pre class="example">lib.lua.mod(7*7, 17)
 
31343
lib.lua.mod(5.3, 1/3)
 
31344
lib.lua.mod(no[&quot;marble&quot;].x, 1)
 
31345
</pre></td></tr></table>
 
31346
 
 
31347
</dd>
 
31348
<dt> <b>Details:</b></dt>
 
31349
<dd><p>Lua 5.0 used &lsquo;<samp>math.mod</samp>&rsquo; as modulo operation, this function is not
 
31350
available in Lua 5.1 anymore, and hence not available in Enigma. Lua 5.1
 
31351
provides &lsquo;<samp>%</samp>&rsquo; and &lsquo;<samp>math.fmod</samp>&rsquo;. Whereas all three operations agree on
 
31352
positive numbers and zero as &lsquo;<samp>value</samp>&rsquo;, there are differences on negative
 
31353
numbers:
 
31354
</p><table><tr><td>&nbsp;</td><td><pre class="example">Lua 5.0:  math.mod(-1, 4) == -1
 
31355
Lua 5.1:  math.fmod(-1, 4) == -1
 
31356
Lua 5.1:  (-1)%4 == 3
 
31357
lib.lua:  lib.lua.mod(-1, 4) == 3
 
31358
</pre></td></tr></table>
 
31359
<p>While the Lua-own modulo functions yield results even for negative
 
31360
&lsquo;<samp>modul</samp>&rsquo; (with varying signs of the outcome), &lsquo;<samp>lib.lua.mod</samp>&rsquo; will raise
 
31361
an error if &lsquo;<samp>modul &lt;= 0</samp>&rsquo;, and the result &lsquo;<samp>r</samp>&rsquo; is otherwise guaranteed
 
31362
to be <code>0 &lt;= r &lt; modul</code>.
 
31363
</p>
 
31364
</dd>
 
31365
<dt> <b>Full Example:</b></dt>
 
31366
</dl>
 
31367
 
 
31368
 
 
31369
<hr size="6">
 
31370
<a name="lib_002elua_002eprint_005ftable"></a>
 
31371
<table cellpadding="1" cellspacing="1" border="0">
 
31372
<tr><td valign="middle" align="left">[<a href="#lib_002elua_002emod" title="Previous section in reading order"> &lt; </a>]</td>
 
31373
<td valign="middle" align="left">[<a href="#lib_002elua_002eshuffle" title="Next section in reading order"> &gt; </a>]</td>
 
31374
<td valign="middle" align="left"> &nbsp; </td>
 
31375
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31376
<td valign="middle" align="left">[<a href="#liblua" title="Up section"> Up </a>]</td>
 
31377
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31378
<td valign="middle" align="left"> &nbsp; </td>
 
31379
<td valign="middle" align="left"> &nbsp; </td>
 
31380
<td valign="middle" align="left"> &nbsp; </td>
 
31381
<td valign="middle" align="left"> &nbsp; </td>
 
31382
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31383
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31384
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31385
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31386
</tr></table>
 
31387
<a name="lib_002elua_002eprint_005ftable-1"></a>
 
31388
<h3 class="subsection">12.2.4 lib.lua.print_table</h3>
 
31389
<a name="index-lib_002elua_002eprint_005ftable"></a>
 
31390
 
 
31391
<p>&lsquo;<samp>print_table</samp>&rsquo; is a debug command, which uses the API&rsquo;s &lsquo;<samp>print</samp>&rsquo;
 
31392
command to recursively print its argument to the standard output.
 
31393
</p>
 
31394
<dl compact="compact">
 
31395
<dt> <b>Syntax:</b></dt>
 
31396
<dd><p><b>lib.lua.print_table</b>(<i>table</i>, <i>prefix</i>, <i>depth</i>)
 
31397
</p>
 
31398
<dl compact="compact">
 
31399
<dt> <i>table</i></dt>
 
31400
<dd><p>The table to be printed.
 
31401
</p>
 
31402
</dd>
 
31403
<dt> <i>prefix</i></dt>
 
31404
<dd><p>A string which will be printed before the table as a
 
31405
separator. Can be &lsquo;<samp>nil</samp>&rsquo;.
 
31406
</p>
 
31407
</dd>
 
31408
<dt> <i>depth</i></dt>
 
31409
<dd><p>&lsquo;<samp>nil</samp>&rsquo; in normal use, &lsquo;<samp>-1</samp>&rsquo; if you want to suppress the recursion.
 
31410
</p></dd>
 
31411
</dl>
 
31412
 
 
31413
</dd>
 
31414
<dt> <b>Syntax Samples:</b></dt>
 
31415
<dd><table><tr><td>&nbsp;</td><td><pre class="example">a = {1, [5]=2, &quot;Hello&quot;, other_table = {x = 4, y = 5, z = &quot;World&quot;}}
 
31416
lib.lua.print_table(a, nil, -1)
 
31417
lib.lua.print_table(a, &quot;--&gt; &quot;)
 
31418
</pre></td></tr></table>
 
31419
 
 
31420
</dd>
 
31421
<dt> <b>Details:</b></dt>
 
31422
<dd><p>&lsquo;<samp>print_table</samp>&rsquo; is recursive, i.e. a table with table
 
31423
as entries will call &lsquo;<samp>print_table</samp>&rsquo; again. To avoid
 
31424
infinite loops, &lsquo;<samp>depth</samp>&rsquo; is used internally to count
 
31425
the depth level of the recursion. The recursion currently
 
31426
stops on depth 5. Set &lsquo;<samp>depth</samp>&rsquo; to &lsquo;<samp>-1</samp>&rsquo; to stop
 
31427
recursion entirely.
 
31428
</p>
 
31429
<p>Use &lsquo;<samp>print_table</samp>&rsquo; only for debugging and testing, it
 
31430
is not meant as an element of gameplay.
 
31431
</p></dd>
 
31432
<dt> <b>Full Example:</b></dt>
 
31433
</dl>
 
31434
 
 
31435
 
 
31436
<hr size="6">
 
31437
<a name="lib_002elua_002eshuffle"></a>
 
31438
<table cellpadding="1" cellspacing="1" border="0">
 
31439
<tr><td valign="middle" align="left">[<a href="#lib_002elua_002eprint_005ftable" title="Previous section in reading order"> &lt; </a>]</td>
 
31440
<td valign="middle" align="left">[<a href="#lib_002elua_002eto_005fstring" title="Next section in reading order"> &gt; </a>]</td>
 
31441
<td valign="middle" align="left"> &nbsp; </td>
 
31442
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31443
<td valign="middle" align="left">[<a href="#liblua" title="Up section"> Up </a>]</td>
 
31444
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31445
<td valign="middle" align="left"> &nbsp; </td>
 
31446
<td valign="middle" align="left"> &nbsp; </td>
 
31447
<td valign="middle" align="left"> &nbsp; </td>
 
31448
<td valign="middle" align="left"> &nbsp; </td>
 
31449
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31450
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31451
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31452
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31453
</tr></table>
 
31454
<a name="lib_002elua_002eshuffle-1"></a>
 
31455
<h3 class="subsection">12.2.5 lib.lua.shuffle</h3>
 
31456
<a name="index-lib_002elua_002eshuffle"></a>
 
31457
 
 
31458
<p>&lsquo;<samp>shuffle</samp>&rsquo; randomly resorts its argument, a numerical table.
 
31459
</p>
 
31460
<dl compact="compact">
 
31461
<dt> <b>Syntax:</b></dt>
 
31462
<dd><p><i>result</i> = <b>lib.lua.shuffle</b>(<i>source</i>)
 
31463
</p>
 
31464
<dl compact="compact">
 
31465
<dt> <i>source</i></dt>
 
31466
<dd><p>The table to be shuffled (only the numerical entries will be shuffled).
 
31467
</p></dd>
 
31468
</dl>
 
31469
 
 
31470
</dd>
 
31471
<dt> <b>Syntax Samples:</b></dt>
 
31472
<dd><table><tr><td>&nbsp;</td><td><pre class="example">orientations = lib.lua.shuffle({NORTH, SOUTH, EAST, WEST})
 
31473
a = {1, 2, 3, &quot;r&quot;, {&quot;x&quot;, &quot;y&quot;, &quot;z&quot;}, 4}
 
31474
b = lib.lua.shuffle(a)
 
31475
</pre></td></tr></table>
 
31476
 
 
31477
<p>A typical result for &lsquo;<samp>b</samp>&rsquo; would be
 
31478
</p><table><tr><td>&nbsp;</td><td><pre class="example">b = {&quot;r&quot;, 4, 2, {&quot;x&quot;, &quot;y&quot;, &quot;z&quot;}, 1, 3}
 
31479
</pre></td></tr></table>
 
31480
 
 
31481
</dd>
 
31482
<dt> <b>Details:</b></dt>
 
31483
<dd><p>The result is a permutation of the numerical entries of the source table,
 
31484
starting with entry 1 and ending with entry &lsquo;<samp>table.getn(<i>source</i>)</samp>&rsquo;. All
 
31485
other entries will simply be copied into &lsquo;<samp>result</samp>&rsquo;. All copies are shallow
 
31486
copies, i.e. table-valued and userdata-valued entries (like objects) are not
 
31487
copied, just references (pointers) to them. Use <a href="#lib_002elua_002edeep_005fcopy">lib.lua.deep_copy</a> to
 
31488
create a deep copy of the shuffled table, if needed. &lsquo;<samp>result</samp>&rsquo; will use the
 
31489
same metatable as &lsquo;<samp>source</samp>&rsquo;, and metamethods will be used during the copy
 
31490
and shuffling process.
 
31491
</p>
 
31492
<p>Currently, &lsquo;<samp>lib.lua.shuffle</samp>&rsquo; can shuffle only tables. To shuffle groups,
 
31493
use the group method of the same name:
 
31494
</p><table><tr><td>&nbsp;</td><td><pre class="example">mygroup:shuffle()
 
31495
</pre></td></tr></table>
 
31496
 
 
31497
<p>Shuffling a <a href="#libmap">libmap</a>-map results in a map with shuffled rows, i.e. the
 
31498
x-coordinates of all tile keys are kept constant. Use <a href="#Rotating-and-Mirroring-Maps">Rotating and Mirroring Maps</a> to shuffle the columns.
 
31499
</p>
 
31500
</dd>
 
31501
<dt> <b>Full Example:</b></dt>
 
31502
</dl>
 
31503
 
 
31504
 
 
31505
<hr size="6">
 
31506
<a name="lib_002elua_002eto_005fstring"></a>
 
31507
<table cellpadding="1" cellspacing="1" border="0">
 
31508
<tr><td valign="middle" align="left">[<a href="#lib_002elua_002eshuffle" title="Previous section in reading order"> &lt; </a>]</td>
 
31509
<td valign="middle" align="left">[<a href="#libmath" title="Next section in reading order"> &gt; </a>]</td>
 
31510
<td valign="middle" align="left"> &nbsp; </td>
 
31511
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31512
<td valign="middle" align="left">[<a href="#liblua" title="Up section"> Up </a>]</td>
 
31513
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31514
<td valign="middle" align="left"> &nbsp; </td>
 
31515
<td valign="middle" align="left"> &nbsp; </td>
 
31516
<td valign="middle" align="left"> &nbsp; </td>
 
31517
<td valign="middle" align="left"> &nbsp; </td>
 
31518
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31519
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31520
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31521
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31522
</tr></table>
 
31523
<a name="lib_002elua_002eto_005fstring-1"></a>
 
31524
<h3 class="subsection">12.2.6 lib.lua.to_string</h3>
 
31525
<a name="index-lib_002elua_002eto_005fstring"></a>
 
31526
 
 
31527
<p>&lsquo;<samp>to_string</samp>&rsquo; is a debug function. It may take anything as argument, and
 
31528
tries to return a sensible string describing the type and, if possible, the
 
31529
content of the argument.
 
31530
</p>
 
31531
<dl compact="compact">
 
31532
<dt> <b>Syntax:</b></dt>
 
31533
<dd><p><b>lib.lua.to_string</b>(<i>arg</i>)
 
31534
</p>
 
31535
<dl compact="compact">
 
31536
<dt> <i>arg</i></dt>
 
31537
<dd><p>The argument to be described.
 
31538
</p></dd>
 
31539
</dl>
 
31540
 
 
31541
</dd>
 
31542
<dt> <b>Syntax Samples:</b></dt>
 
31543
<dd><table><tr><td>&nbsp;</td><td><pre class="example">print(lib.lua.to_string(strange_variable))
 
31544
</pre></td></tr></table>
 
31545
 
 
31546
</dd>
 
31547
<dt> <b>Details:</b></dt>
 
31548
<dd><p>&lsquo;<samp>to_string</samp>&rsquo; is meant for debugging Lua code. Sometimes it happens that a
 
31549
variable is not what the author expected to be, and selecting the correct
 
31550
output method becomes try-and-error. &lsquo;<samp>to_string</samp>&rsquo; is a fast shortcut to
 
31551
this. It returns the content of strings, numbers, booleans, tables, positions,
 
31552
and groups. It distinguishes ordinary tables from <a href="#libmap">libmap</a>-maps. For
 
31553
objects, it returns their name and position, for position lists, it returns the
 
31554
total number of positions. It further recognizes nil, tile and tiles.
 
31555
</p>
 
31556
<p>Use &lsquo;<samp>to_string</samp>&rsquo; only for debugging and testing, it
 
31557
is not meant as an element of gameplay.
 
31558
</p>
 
31559
</dd>
 
31560
<dt> <b>Full Example:</b></dt>
 
31561
</dl>
 
31562
 
 
31563
<hr size="6">
 
31564
<a name="libmath"></a>
 
31565
<table cellpadding="1" cellspacing="1" border="0">
 
31566
<tr><td valign="middle" align="left">[<a href="#lib_002elua_002eto_005fstring" title="Previous section in reading order"> &lt; </a>]</td>
 
31567
<td valign="middle" align="left">[<a href="#lib_002emath_002ecombinations" title="Next section in reading order"> &gt; </a>]</td>
 
31568
<td valign="middle" align="left"> &nbsp; </td>
 
31569
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31570
<td valign="middle" align="left">[<a href="#Libraries" title="Up section"> Up </a>]</td>
 
31571
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31572
<td valign="middle" align="left"> &nbsp; </td>
 
31573
<td valign="middle" align="left"> &nbsp; </td>
 
31574
<td valign="middle" align="left"> &nbsp; </td>
 
31575
<td valign="middle" align="left"> &nbsp; </td>
 
31576
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31577
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31578
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31579
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31580
</tr></table>
 
31581
<a name="libmath-1"></a>
 
31582
<h2 class="section">12.3 libmath</h2>
 
31583
 
 
31584
<p>This library of basic mathematical extensions is described as of release 1.
 
31585
</p>
 
31586
<p>You can load it by adding an &lsquo;<samp>dependency</samp>&rsquo; element to the
 
31587
<a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a> XML Metadata element as follows:
 
31588
</p>
 
31589
<table><tr><td>&nbsp;</td><td><pre class="example">  &lt;<i>el</i>:<b>dependency</b> <i>el</i>:<b>path</b>=&quot;<var>lib/libmath</var>&quot; <i>el</i>:<b>id</b>=&quot;<var>lib/libmath</var>&quot; <i>el</i>:<b>release</b>=&quot;<var>1</var>&quot; <i>el</i>:<b>preload</b>=&quot;<var>true</var>&quot;/&gt;
 
31590
</pre></td></tr></table>
 
31591
 
 
31592
<p>It preloads automatically the library <a href="#liblua">liblua</a>.
 
31593
</p>
 
31594
<table class="menu" border="0" cellspacing="0">
 
31595
<tr><td align="left" valign="top"><a href="#lib_002emath_002ecombinations">12.3.1 lib.math.combinations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Calculates all possible combinations of a set.
 
31596
</td></tr>
 
31597
<tr><td align="left" valign="top"><a href="#lib_002emath_002ecubic_005fpolynomial">12.3.2 lib.math.cubic_polynomial</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">   Calculates the result of a cubic polynomial.
 
31598
</td></tr>
 
31599
<tr><td align="left" valign="top"><a href="#lib_002emath_002ecyclic_005fpermutation">12.3.3 lib.math.cyclic_permutation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> Random cyclic permutation.
 
31600
</td></tr>
 
31601
<tr><td align="left" valign="top"><a href="#lib_002emath_002edigits">12.3.4 lib.math.digits</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Decomposes a number into digits for an arbitrary base.
 
31602
</td></tr>
 
31603
<tr><td align="left" valign="top"><a href="#lib_002emath_002emanhattan_005fdistance">12.3.5 lib.math.manhattan_distance</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> Calculates the Manhattan distance of positions.
 
31604
</td></tr>
 
31605
<tr><td align="left" valign="top"><a href="#lib_002emath_002emark_005fcomponents">12.3.6 lib.math.mark_components</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    Calculate connected components of a group of floors.
 
31606
</td></tr>
 
31607
<tr><td align="left" valign="top"><a href="#lib_002emath_002epermutation">12.3.7 lib.math.permutation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Random permutation.
 
31608
</td></tr>
 
31609
<tr><td align="left" valign="top"><a href="#lib_002emath_002erandom_005fvector">12.3.8 lib.math.random_vector</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      A table with random entries.
 
31610
</td></tr>
 
31611
<tr><td align="left" valign="top"><a href="#lib_002emath_002esteps">12.3.9 lib.math.steps</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              A function to classify a number in intervals.
 
31612
</td></tr>
 
31613
</table>
 
31614
 
 
31615
 
 
31616
<hr size="6">
 
31617
<a name="lib_002emath_002ecombinations"></a>
 
31618
<table cellpadding="1" cellspacing="1" border="0">
 
31619
<tr><td valign="middle" align="left">[<a href="#libmath" title="Previous section in reading order"> &lt; </a>]</td>
 
31620
<td valign="middle" align="left">[<a href="#lib_002emath_002ecubic_005fpolynomial" title="Next section in reading order"> &gt; </a>]</td>
 
31621
<td valign="middle" align="left"> &nbsp; </td>
 
31622
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31623
<td valign="middle" align="left">[<a href="#libmath" title="Up section"> Up </a>]</td>
 
31624
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31625
<td valign="middle" align="left"> &nbsp; </td>
 
31626
<td valign="middle" align="left"> &nbsp; </td>
 
31627
<td valign="middle" align="left"> &nbsp; </td>
 
31628
<td valign="middle" align="left"> &nbsp; </td>
 
31629
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31630
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31631
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31632
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31633
</tr></table>
 
31634
<a name="lib_002emath_002ecombinations-1"></a>
 
31635
<h3 class="subsection">12.3.1 lib.math.combinations</h3>
 
31636
<a name="index-lib_002emath_002ecombinations"></a>
 
31637
 
 
31638
<p>&lsquo;<samp>lib.math.combinations</samp>&rsquo; returns a table of all combinations of
 
31639
&lsquo;<samp>depth</samp>&rsquo; entries, each of which is chosen from &lsquo;<samp>digits</samp>&rsquo;.
 
31640
</p>
 
31641
<dl compact="compact">
 
31642
<dt> <b>Syntax:</b></dt>
 
31643
<dd><p><b>lib.math.combinations</b>(<i>depth</i>, <i>digits</i>)
 
31644
</p>
 
31645
<dl compact="compact">
 
31646
<dt> <i>depth</i></dt>
 
31647
<dd><p>A positive integer.
 
31648
</p>
 
31649
</dd>
 
31650
<dt> <i>digits</i></dt>
 
31651
<dd><p>A positive integer or a table with numerical entries.
 
31652
</p></dd>
 
31653
</dl>
 
31654
 
 
31655
</dd>
 
31656
<dt> <b>Syntax Samples:</b></dt>
 
31657
<dd><table><tr><td>&nbsp;</td><td><pre class="example">lib.math.combinations(2, 2)
 
31658
 == { {1, 1}, {1, 2}, {2, 1}, {2, 2} }
 
31659
lib.math.combinations(3, {7, 8, &quot;a&quot;})
 
31660
 == { {7,7,7}, {7,7,8}, {7,7,&quot;a&quot;},
 
31661
       {7,8,7}, {7,8,8}, {7,8,&quot;a&quot;},
 
31662
       {7,&quot;a&quot;,7}, {7,&quot;a&quot;,8}, {7,&quot;a&quot;,&quot;a&quot;},
 
31663
       {8,7,7}, ... }
 
31664
</pre></td></tr></table>
 
31665
 
 
31666
</dd>
 
31667
<dt> <b>Details:</b></dt>
 
31668
<dd><p>Mathematically, it builds the leafs of an &lsquo;<samp>#digits</samp>&rsquo;-ary tree
 
31669
of depth &lsquo;<samp>depth</samp>&rsquo;.
 
31670
</p>
 
31671
</dd>
 
31672
<dt> <b>Full Example:</b></dt>
 
31673
</dl>
 
31674
 
 
31675
 
 
31676
<hr size="6">
 
31677
<a name="lib_002emath_002ecubic_005fpolynomial"></a>
 
31678
<table cellpadding="1" cellspacing="1" border="0">
 
31679
<tr><td valign="middle" align="left">[<a href="#lib_002emath_002ecombinations" title="Previous section in reading order"> &lt; </a>]</td>
 
31680
<td valign="middle" align="left">[<a href="#lib_002emath_002ecyclic_005fpermutation" title="Next section in reading order"> &gt; </a>]</td>
 
31681
<td valign="middle" align="left"> &nbsp; </td>
 
31682
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31683
<td valign="middle" align="left">[<a href="#libmath" title="Up section"> Up </a>]</td>
 
31684
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31685
<td valign="middle" align="left"> &nbsp; </td>
 
31686
<td valign="middle" align="left"> &nbsp; </td>
 
31687
<td valign="middle" align="left"> &nbsp; </td>
 
31688
<td valign="middle" align="left"> &nbsp; </td>
 
31689
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31690
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31691
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31692
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31693
</tr></table>
 
31694
<a name="lib_002emath_002ecubic_005fpolynomial-1"></a>
 
31695
<h3 class="subsection">12.3.2 lib.math.cubic_polynomial</h3>
 
31696
<a name="index-lib_002emath_002ecubic_005fpolynomial"></a>
 
31697
 
 
31698
<p>&lsquo;<samp>cubic_polynomial</samp>&rsquo; returns the result of the following polynomial with
 
31699
coefficients in &lsquo;<samp>a</samp>&rsquo;:
 
31700
</p><table><tr><td>&nbsp;</td><td><pre class="example">a[10]*y*y*y + a[9]*x*y*y + a[8]*x*x*y + a[7]*x*x*x
 
31701
  + a[6]*y*y + a[5]*x*y + a[4]*x*x + a[3]*y + a[2]*x + a[1]
 
31702
</pre></td></tr></table>
 
31703
 
 
31704
<dl compact="compact">
 
31705
<dt> <b>Syntax:</b></dt>
 
31706
<dd><p><b>lib.math.cubic_polynomial</b>(<i>a</i>, <i>x</i>, <i>y</i>)
 
31707
</p>
 
31708
<dl compact="compact">
 
31709
<dt> <i>a</i></dt>
 
31710
<dd><p>A table with numerical entries &lsquo;<samp>a[1]</samp>&rsquo; to &lsquo;<samp>a[10]</samp>&rsquo;. The entries may be
 
31711
&lsquo;<samp>nil</samp>&rsquo; (i.e. missing), then they are interpreted as zero.
 
31712
</p>
 
31713
</dd>
 
31714
<dt> <i>x</i>, <i>y</i></dt>
 
31715
<dd><p>Numbers.
 
31716
</p>
 
31717
</dd>
 
31718
</dl>
 
31719
 
 
31720
</dd>
 
31721
<dt> <b>Syntax Samples:</b></dt>
 
31722
<dd><table><tr><td>&nbsp;</td><td><pre class="example">lib.math.cubic_polynomial({1, a, b}, x, y) == a*x + b*y + 1
 
31723
</pre></td></tr></table>
 
31724
 
 
31725
</dd>
 
31726
<dt> <b>Details:</b></dt>
 
31727
<dd><p>You can use &lsquo;<samp>lib.math.random_vector(10, ...)</samp>&rsquo; and a modulo operation to
 
31728
easily form a random pattern of a floor, or choose the coefficients to your own
 
31729
liking. Entries in &lsquo;<samp>a</samp>&rsquo; which are not numbers are considered zero.
 
31730
</p>
 
31731
</dd>
 
31732
<dt> <b>Full Example:</b></dt>
 
31733
<dd><p>This is an excerpt from &quot;Weirdly Wired&quot; and demonstrates the use of
 
31734
&lsquo;<samp>cubic_polynomial</samp>&rsquo; inside a custom resolver to create random, but
 
31735
patternlike floors:
 
31736
</p><table><tr><td>&nbsp;</td><td><pre class="example">[...]
 
31737
floors = {ti[&quot; &quot;], ti[&quot;a&quot;], ti[&quot;b&quot;], ti[&quot;c&quot;]}
 
31738
polynom = lib.math.random_vector(10, 4)
 
31739
 
 
31740
function myresolver(key, x, y)
 
31741
  if key == &quot; &quot; then
 
31742
    return floors[lib.math.cubic_polynomial(a, x, y) % (#floors) + 1]
 
31743
  elseif
 
31744
    [...]
 
31745
  else
 
31746
    return ti[key]
 
31747
  end
 
31748
end
 
31749
 
 
31750
w, h = wo(myresolver, &quot; &quot;, {
 
31751
[...]
 
31752
</pre></td></tr></table>
 
31753
<p>&quot;Weirdly Wired&quot; is explained in detail in section <a href="#Weirdly-Wired">Weirdly Wired</a>.
 
31754
</p></dd>
 
31755
</dl>
 
31756
 
 
31757
 
 
31758
<hr size="6">
 
31759
<a name="lib_002emath_002ecyclic_005fpermutation"></a>
 
31760
<table cellpadding="1" cellspacing="1" border="0">
 
31761
<tr><td valign="middle" align="left">[<a href="#lib_002emath_002ecubic_005fpolynomial" title="Previous section in reading order"> &lt; </a>]</td>
 
31762
<td valign="middle" align="left">[<a href="#lib_002emath_002edigits" title="Next section in reading order"> &gt; </a>]</td>
 
31763
<td valign="middle" align="left"> &nbsp; </td>
 
31764
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31765
<td valign="middle" align="left">[<a href="#libmath" title="Up section"> Up </a>]</td>
 
31766
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31767
<td valign="middle" align="left"> &nbsp; </td>
 
31768
<td valign="middle" align="left"> &nbsp; </td>
 
31769
<td valign="middle" align="left"> &nbsp; </td>
 
31770
<td valign="middle" align="left"> &nbsp; </td>
 
31771
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31772
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31773
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31774
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31775
</tr></table>
 
31776
<a name="lib_002emath_002ecyclic_005fpermutation-1"></a>
 
31777
<h3 class="subsection">12.3.3 lib.math.cyclic_permutation</h3>
 
31778
<a name="index-lib_002emath_002ecyclic_005fpermutation"></a>
 
31779
 
 
31780
<p>&lsquo;<samp>cyclic_permutation</samp>&rsquo; returns a random permutation (i.e. a random shuffling)
 
31781
of the numbers 1 to &lsquo;<samp>n</samp>&rsquo;, which is cyclic: There exists a closed path from
 
31782
any number to any other number (see details below).
 
31783
</p>
 
31784
<dl compact="compact">
 
31785
<dt> <b>Syntax:</b></dt>
 
31786
<dd><p><b>lib.math.cyclic_permutation</b>(<i>n</i>)
 
31787
</p>
 
31788
<dl compact="compact">
 
31789
<dt> <i>n</i></dt>
 
31790
<dd><p>A positive integer.
 
31791
</p></dd>
 
31792
</dl>
 
31793
 
 
31794
</dd>
 
31795
<dt> <b>Syntax Samples:</b></dt>
 
31796
<dd><table><tr><td>&nbsp;</td><td><pre class="example">lib.math.cyclic_permutation(#no[&quot;marbles#*&quot;])
 
31797
</pre></td></tr></table>
 
31798
 
 
31799
</dd>
 
31800
<dt> <b>Details:</b></dt>
 
31801
<dd><p>A cyclic permutation is a special kind of permutation, which has only one
 
31802
cycle. The easiest way is to give an example for a cyclic permutation:
 
31803
</p><table><tr><td>&nbsp;</td><td><pre class="example">8, 1, 2, 9, 3, 7, 4, 6, 10, 5
 
31804
</pre></td></tr></table>
 
31805
<p>We may write this as:
 
31806
</p><table><tr><td>&nbsp;</td><td><pre class="example">1 -&gt; 8
 
31807
2 -&gt; 1
 
31808
3 -&gt; 2
 
31809
...
 
31810
</pre></td></tr></table>
 
31811
<p>We can now put all of these together into a sequence:
 
31812
</p><table><tr><td>&nbsp;</td><td><pre class="example">1 -&gt; 8 -&gt; 6 -&gt; 7 -&gt; 4 -&gt; 9 -&gt; 10 -&gt; 5 -&gt; 3 -&gt; 2 -&gt; 1
 
31813
</pre></td></tr></table>
 
31814
<p>This is, the sequence creates a single cycle through all 10 numbers.
 
31815
This is not always possible with a general permutation.
 
31816
</p>
 
31817
<p>If you need a fixpoint-free permutation, you might choose to use a cyclic
 
31818
permutation instead, although not every fixpoint-free permutation is cyclic.
 
31819
</p>
 
31820
</dd>
 
31821
<dt> <b>Full Example:</b></dt>
 
31822
<dd><p>If you want to connect an arbitrary number of meditation marbles with
 
31823
rubberbands in a cyclic manner, but otherwise randomly, you can use
 
31824
&lsquo;<samp>lib.math.cyclic_permutation</samp>&rsquo;:
 
31825
</p><table><tr><td>&nbsp;</td><td><pre class="example">marbles = no[&quot;marbles#*&quot;]
 
31826
p = lib.math.cyclic_permutation(#marbles)
 
31827
 
 
31828
for j = 1, #marbles do
 
31829
  wo:add({&quot;ot_rubberband&quot;, anchor1 = marbles[j], anchor2 = marbles[p[j]]})
 
31830
end
 
31831
</pre></td></tr></table>
 
31832
<p>If you want to connect them in a linear way, you can either remove a step in
 
31833
the loop:
 
31834
</p><table><tr><td>&nbsp;</td><td><pre class="example">[...]
 
31835
for j = 1, #marbles - 1 do
 
31836
[...]
 
31837
</pre></td></tr></table>
 
31838
<p>or use &lsquo;<samp>lib.math.permutation</samp>&rsquo; in the following way:
 
31839
</p><table><tr><td>&nbsp;</td><td><pre class="example">marbles = no[&quot;marbles#*&quot;]
 
31840
p = lib.math.permutation(#marbles)
 
31841
 
 
31842
for j = 1, #marbles - 1 do
 
31843
  wo:add({&quot;ot_rubberband&quot;, anchor1 = marbles[p[j]], anchor2 = marbles[p[j+1]]})
 
31844
end
 
31845
</pre></td></tr></table>
 
31846
</dd>
 
31847
</dl>
 
31848
 
 
31849
 
 
31850
<hr size="6">
 
31851
<a name="lib_002emath_002edigits"></a>
 
31852
<table cellpadding="1" cellspacing="1" border="0">
 
31853
<tr><td valign="middle" align="left">[<a href="#lib_002emath_002ecyclic_005fpermutation" title="Previous section in reading order"> &lt; </a>]</td>
 
31854
<td valign="middle" align="left">[<a href="#lib_002emath_002emanhattan_005fdistance" title="Next section in reading order"> &gt; </a>]</td>
 
31855
<td valign="middle" align="left"> &nbsp; </td>
 
31856
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31857
<td valign="middle" align="left">[<a href="#libmath" title="Up section"> Up </a>]</td>
 
31858
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31859
<td valign="middle" align="left"> &nbsp; </td>
 
31860
<td valign="middle" align="left"> &nbsp; </td>
 
31861
<td valign="middle" align="left"> &nbsp; </td>
 
31862
<td valign="middle" align="left"> &nbsp; </td>
 
31863
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31864
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31865
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31866
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31867
</tr></table>
 
31868
<a name="lib_002emath_002edigits-1"></a>
 
31869
<h3 class="subsection">12.3.4 lib.math.digits</h3>
 
31870
<a name="index-lib_002emath_002edigits"></a>
 
31871
 
 
31872
<p>&lsquo;<samp>lib.math.digits</samp>&rsquo; returns a table whose elements are the digits of
 
31873
&lsquo;<samp>number</samp>&rsquo; in base &lsquo;<samp>base</samp>&rsquo;. &lsquo;<samp>base</samp>&rsquo; can be a positive integer (e.g.
 
31874
3 to get ternary) as well as a table (then the table entries with numerical
 
31875
keys will be used as digits).
 
31876
</p>
 
31877
<dl compact="compact">
 
31878
<dt> <b>Syntax:</b></dt>
 
31879
<dd><p><b>lib.math.digits</b>(<i>number</i>, <i>base</i> [, <i>zero_is_empty</i>])
 
31880
</p>
 
31881
<dl compact="compact">
 
31882
<dt> <i>number</i></dt>
 
31883
<dd><p>A non-negative integer.
 
31884
</p>
 
31885
</dd>
 
31886
<dt> <i>base</i></dt>
 
31887
<dd><p>A positive integer other than 1, or a table with numerical keys.
 
31888
</p>
 
31889
</dd>
 
31890
<dt> <i>zero_is_empty</i></dt>
 
31891
<dd><p>If <code>number</code> is zero, a table containing the zero-th digit is returned by
 
31892
default. If <code>zero_is_empty</code> is <code>true</code>, an empty table is returned
 
31893
instead.
 
31894
</p></dd>
 
31895
</dl>
 
31896
 
 
31897
</dd>
 
31898
<dt> <b>Syntax Samples:</b></dt>
 
31899
<dd><table><tr><td>&nbsp;</td><td><pre class="example">lib.math.digits(13, 2) == {1, 0, 1, 1}
 
31900
lib.math.digits(15, 16) == {15}
 
31901
lib.math.digits(17, 3) == {2, 2, 1}
 
31902
lib.math.digits(17, {2, &quot;b&quot;, 5}) == {5, 5, &quot;b&quot;}
 
31903
</pre></td></tr></table>
 
31904
 
 
31905
<p>The following function can be used to get a table with hexadecimal entries:
 
31906
</p><table><tr><td>&nbsp;</td><td><pre class="example">lib.math.digits(x, {0,1,2,3,4,5,6,7,8,9,&quot;A&quot;,&quot;B&quot;,&quot;C&quot;,&quot;D&quot;,&quot;E&quot;,&quot;F&quot;})
 
31907
</pre></td></tr></table>
 
31908
 
 
31909
</dd>
 
31910
<dt> <b>Details:</b></dt>
 
31911
<dt> <b>Full Example:</b></dt>
 
31912
</dl>
 
31913
 
 
31914
 
 
31915
<hr size="6">
 
31916
<a name="lib_002emath_002emanhattan_005fdistance"></a>
 
31917
<table cellpadding="1" cellspacing="1" border="0">
 
31918
<tr><td valign="middle" align="left">[<a href="#lib_002emath_002edigits" title="Previous section in reading order"> &lt; </a>]</td>
 
31919
<td valign="middle" align="left">[<a href="#lib_002emath_002emark_005fcomponents" title="Next section in reading order"> &gt; </a>]</td>
 
31920
<td valign="middle" align="left"> &nbsp; </td>
 
31921
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31922
<td valign="middle" align="left">[<a href="#libmath" title="Up section"> Up </a>]</td>
 
31923
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31924
<td valign="middle" align="left"> &nbsp; </td>
 
31925
<td valign="middle" align="left"> &nbsp; </td>
 
31926
<td valign="middle" align="left"> &nbsp; </td>
 
31927
<td valign="middle" align="left"> &nbsp; </td>
 
31928
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31929
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31930
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31931
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31932
</tr></table>
 
31933
<a name="lib_002emath_002emanhattan_005fdistance-1"></a>
 
31934
<h3 class="subsection">12.3.5 lib.math.manhattan_distance</h3>
 
31935
<a name="index-lib_002emath_002emanhattan_005fdistance"></a>
 
31936
 
 
31937
<p>&lsquo;<samp>manhattan_distance</samp>&rsquo; calculates the Manhattan distance between two
 
31938
positions &lsquo;<samp>pos1</samp>&rsquo; and &lsquo;<samp>pos2</samp>&rsquo;, which is
 
31939
</p><table><tr><td>&nbsp;</td><td><pre class="example">|pos1.x - pos2.x| + |pos1.y - pos2.y|.
 
31940
</pre></td></tr></table>
 
31941
 
 
31942
<dl compact="compact">
 
31943
<dt> <b>Syntax:</b></dt>
 
31944
<dd><p><b>lib.math.manhattan_distance</b>(<i>pos1</i>, <i>pos2</i>)
 
31945
</p>
 
31946
<p><b>lib.math.manhattan_distance</b>(<i>x1</i>, <i>y1</i>, <i>x2</i>, <i>y2</i>)
 
31947
</p>
 
31948
<dl compact="compact">
 
31949
<dt> <i>pos1</i>, <i>pos2</i></dt>
 
31950
<dd><p>Positions (e.g. object references or tables &lsquo;<samp>{posx, posy}</samp>&rsquo;.
 
31951
</p>
 
31952
</dd>
 
31953
<dt> <i>x1</i>, <i>y1</i>, <i>x2</i>, <i>y2</i></dt>
 
31954
<dd><p>Coordinates of the positions &lsquo;<samp>pos1</samp>&rsquo; and &lsquo;<samp>pos2</samp>&rsquo;, respectively.
 
31955
</p></dd>
 
31956
</dl>
 
31957
 
 
31958
</dd>
 
31959
<dt> <b>Syntax Samples:</b></dt>
 
31960
<dd><table><tr><td>&nbsp;</td><td><pre class="example">lib.math.manhattan_distance(4, 5, 3, 3)
 
31961
lib.math.manhattan_distance({4, 5}, {3, 3})
 
31962
lib.math.manhattan_distance(no[&quot;marble&quot;], no[&quot;othermarble&quot;])
 
31963
</pre></td></tr></table>
 
31964
 
 
31965
</dd>
 
31966
<dt> <b>Details:</b></dt>
 
31967
<dd><p>The Manhattan distance counts the minimal number of pushes necessary to push a
 
31968
wood stone from one position to another. Its unit balls are squares with the
 
31969
diagonals parallel to the x- and y-axis (rhombi).
 
31970
</p>
 
31971
</dd>
 
31972
<dt> <b>Full Example:</b></dt>
 
31973
</dl>
 
31974
 
 
31975
 
 
31976
<hr size="6">
 
31977
<a name="lib_002emath_002emark_005fcomponents"></a>
 
31978
<table cellpadding="1" cellspacing="1" border="0">
 
31979
<tr><td valign="middle" align="left">[<a href="#lib_002emath_002emanhattan_005fdistance" title="Previous section in reading order"> &lt; </a>]</td>
 
31980
<td valign="middle" align="left">[<a href="#lib_002emath_002epermutation" title="Next section in reading order"> &gt; </a>]</td>
 
31981
<td valign="middle" align="left"> &nbsp; </td>
 
31982
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
31983
<td valign="middle" align="left">[<a href="#libmath" title="Up section"> Up </a>]</td>
 
31984
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
31985
<td valign="middle" align="left"> &nbsp; </td>
 
31986
<td valign="middle" align="left"> &nbsp; </td>
 
31987
<td valign="middle" align="left"> &nbsp; </td>
 
31988
<td valign="middle" align="left"> &nbsp; </td>
 
31989
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
31990
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
31991
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
31992
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
31993
</tr></table>
 
31994
<a name="lib_002emath_002emark_005fcomponents-1"></a>
 
31995
<h3 class="subsection">12.3.6 lib.math.mark_components</h3>
 
31996
<a name="index-lib_002emath_002emark_005fcomponents"></a>
 
31997
 
 
31998
<p>&lsquo;<samp>mark_components</samp>&rsquo; calculates the connected components of a group of
 
31999
floors. Two floors are directly connected if their difference is within a given
 
32000
polist (or <code>NEIGHBORS_4</code>, by default). A table is returned holding a
 
32001
list of groups, each group is a complete connected component.
 
32002
In turn, an attribute is attached to each floor of the group which holds the
 
32003
number of its component. The name of this attribute can be chosen freely.
 
32004
</p>
 
32005
<dl compact="compact">
 
32006
<dt> <b>Syntax:</b></dt>
 
32007
<dd><p><b>lib.math.mark_components</b>(<i>group</i>, <i>attribute_name</i> [, <i>neighborhood</i> [,
 
32008
<i>exclusive_attribute</i>]])
 
32009
</p>
 
32010
<dl compact="compact">
 
32011
<dt> <i>group</i></dt>
 
32012
<dd><p>A group of floors.
 
32013
</p>
 
32014
</dd>
 
32015
<dt> <i>attribute_name</i></dt>
 
32016
<dd><p>A non-empty string. Typically, this is the title of a user attribute, so it
 
32017
should start with an underscore &lsquo;<samp>_</samp>&rsquo;, unless you want to feat the
 
32018
information directly to a non-user attribute which takes numerical values.
 
32019
</p>
 
32020
</dd>
 
32021
<dt> <i>neighborhood</i></dt>
 
32022
<dd><p>A symmetric polist (see details). Defaults to <code>NEIGHBORS_4</code>, which results
 
32023
in a calculation of path-connected components.
 
32024
</p>
 
32025
</dd>
 
32026
<dt>  <i>exclusive_attribute</i></dt>
 
32027
<dd><p>A boolean (<code>false</code> by default) which can be set to <code>true</code>, if there is
 
32028
no other floor which uses an attribute named <i>attribute_name</i>.
 
32029
</p></dd>
 
32030
</dl>
 
32031
 
 
32032
</dd>
 
32033
<dt> <b>Syntax Samples:</b></dt>
 
32034
<dd><table><tr><td>&nbsp;</td><td><pre class="example">lib.math.mark_components(all_floors, &quot;_component&quot;)
 
32035
local number = #lib.math.mark_components(all_floors, &quot;_component&quot;, NEIGHBORS_CHESS .. NEIGHBORS_4)
 
32036
local lines = lib.math.mark_components(all_floors, &quot;_linenumber&quot;, po(-1, 0) .. po(1, 0), true)
 
32037
</pre></td></tr></table>
 
32038
 
 
32039
</dd>
 
32040
<dt> <b>Details:</b></dt>
 
32041
<dd><p>&lsquo;<samp>mark_components</samp>&rsquo; returns a Lua-table of groups, the table has natural numbers
 
32042
as indizes counting up starting from <code>1</code>, s.t. you can access the total
 
32043
number of components via &lsquo;<samp>#</samp>&rsquo;. Each entry of the table is a subgroup of
 
32044
<code>group</code>, a complete connected component. The sequence of the components is
 
32045
determined by the sequence of the floors in <code>group</code>.
 
32046
</p>
 
32047
<p>You have to choose an attribute, as it is used during the calculation.
 
32048
Note that all prior information saved in this attribute is lost.
 
32049
Also note that choosing a read-only attribute results in an error.
 
32050
</p>
 
32051
<p>The chosen neighborhood has to be a symmetric polist, i.e. if it contains the
 
32052
position <code>po(x, y)</code> it also has to contain the position <code>po(-x, -y)</code>
 
32053
at some point. Mathematically speaking, we analyze the connected components of
 
32054
an undirected graph, not of a directed graph.
 
32055
</p>
 
32056
<p>If you know that there is no other floor which uses the attribute
 
32057
<code>attribute_name</code>, you may set &lsquo;<samp>exclusive_attribute</samp>&rsquo; to &lsquo;<samp>true</samp>&rsquo;.
 
32058
This will result in a much faster algorithm.
 
32059
</p>
 
32060
</dd>
 
32061
<dt> <b>Full Example:</b></dt>
 
32062
</dl>
 
32063
 
 
32064
 
 
32065
<hr size="6">
 
32066
<a name="lib_002emath_002epermutation"></a>
 
32067
<table cellpadding="1" cellspacing="1" border="0">
 
32068
<tr><td valign="middle" align="left">[<a href="#lib_002emath_002emark_005fcomponents" title="Previous section in reading order"> &lt; </a>]</td>
 
32069
<td valign="middle" align="left">[<a href="#lib_002emath_002erandom_005fvector" title="Next section in reading order"> &gt; </a>]</td>
 
32070
<td valign="middle" align="left"> &nbsp; </td>
 
32071
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
32072
<td valign="middle" align="left">[<a href="#libmath" title="Up section"> Up </a>]</td>
 
32073
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
32074
<td valign="middle" align="left"> &nbsp; </td>
 
32075
<td valign="middle" align="left"> &nbsp; </td>
 
32076
<td valign="middle" align="left"> &nbsp; </td>
 
32077
<td valign="middle" align="left"> &nbsp; </td>
 
32078
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
32079
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
32080
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
32081
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
32082
</tr></table>
 
32083
<a name="lib_002emath_002epermutation-1"></a>
 
32084
<h3 class="subsection">12.3.7 lib.math.permutation</h3>
 
32085
<a name="index-lib_002emath_002epermutation"></a>
 
32086
 
 
32087
<p>&lsquo;<samp>permutation</samp>&rsquo; returns a random permutation (i.e. a random shuffling) of the
 
32088
numbers 1 to &lsquo;<samp>n</samp>&rsquo;.
 
32089
</p>
 
32090
<dl compact="compact">
 
32091
<dt> <b>Syntax:</b></dt>
 
32092
<dd><p><b>lib.math.permutation</b>(<i>n</i>)
 
32093
</p>
 
32094
<dl compact="compact">
 
32095
<dt> <i>n</i></dt>
 
32096
<dd><p>A positive integer.
 
32097
</p></dd>
 
32098
</dl>
 
32099
 
 
32100
</dd>
 
32101
<dt> <b>Syntax Samples:</b></dt>
 
32102
<dd><table><tr><td>&nbsp;</td><td><pre class="example">lib.math.permutation(#no[&quot;doors#*&quot;])
 
32103
</pre></td></tr></table>
 
32104
 
 
32105
</dd>
 
32106
<dt> <b>Details:</b></dt>
 
32107
<dd><p>Permutations give a simple way to randomize a level, e.g. by changing the
 
32108
assignment of action/target-pairs (&quot;Which trigger to which door?&quot;).
 
32109
</p>
 
32110
</dd>
 
32111
<dt> <b>Full Example:</b></dt>
 
32112
</dl>
 
32113
 
 
32114
 
 
32115
<hr size="6">
 
32116
<a name="lib_002emath_002erandom_005fvector"></a>
 
32117
<table cellpadding="1" cellspacing="1" border="0">
 
32118
<tr><td valign="middle" align="left">[<a href="#lib_002emath_002epermutation" title="Previous section in reading order"> &lt; </a>]</td>
 
32119
<td valign="middle" align="left">[<a href="#lib_002emath_002esteps" title="Next section in reading order"> &gt; </a>]</td>
 
32120
<td valign="middle" align="left"> &nbsp; </td>
 
32121
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
32122
<td valign="middle" align="left">[<a href="#libmath" title="Up section"> Up </a>]</td>
 
32123
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
32124
<td valign="middle" align="left"> &nbsp; </td>
 
32125
<td valign="middle" align="left"> &nbsp; </td>
 
32126
<td valign="middle" align="left"> &nbsp; </td>
 
32127
<td valign="middle" align="left"> &nbsp; </td>
 
32128
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
32129
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
32130
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
32131
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
32132
</tr></table>
 
32133
<a name="lib_002emath_002erandom_005fvector-1"></a>
 
32134
<h3 class="subsection">12.3.8 lib.math.random_vector</h3>
 
32135
<a name="index-lib_002emath_002erandom_005fvector"></a>
 
32136
 
 
32137
<p>&lsquo;<samp>random_vector</samp>&rsquo; returns a table of &lsquo;<samp>n</samp>&rsquo; random entries.
 
32138
</p>
 
32139
<dl compact="compact">
 
32140
<dt> <b>Syntax:</b></dt>
 
32141
<dd><p><b>lib.math.random_vector</b>(<i>n</i>, <i>...</i>)
 
32142
</p>
 
32143
<dl compact="compact">
 
32144
<dt> <i>n</i></dt>
 
32145
<dd><p>A non-negative integer.
 
32146
</p>
 
32147
</dd>
 
32148
<dt> <i>...</i></dt>
 
32149
<dd><p>Further arguments, which are the same as for &lsquo;<samp>math.random</samp>&rsquo;: Either no
 
32150
further arguments, then the random numbers will be float values in
 
32151
&lsquo;<samp>[0,1)</samp>&rsquo;, or with one additional number &lsquo;<samp>p</samp>&rsquo;, then the random numbers
 
32152
will be integers between 1 and &lsquo;<samp>p</samp>&rsquo; (both included), or two additional
 
32153
numbers &lsquo;<samp>p, q</samp>&rsquo;, then the random numbers will be integers between &lsquo;<samp>p</samp>&rsquo;
 
32154
and &lsquo;<samp>q</samp>&rsquo; (both included).
 
32155
</p></dd>
 
32156
</dl>
 
32157
 
 
32158
</dd>
 
32159
<dt> <b>Syntax Samples:</b></dt>
 
32160
<dd><table><tr><td>&nbsp;</td><td><pre class="example">lib.math.random_vector(4, 3)
 
32161
</pre></td></tr></table>
 
32162
<p>will return a table of 4 random numbers out of {1,2,3}, and
 
32163
</p><table><tr><td>&nbsp;</td><td><pre class="example">lib.math.random_vector(22)
 
32164
</pre></td></tr></table>
 
32165
<p>returns a table of 22 float values between 0.0 and 1.0 (excluding 1.0).
 
32166
</p>
 
32167
</dd>
 
32168
<dt> <b>Details:</b></dt>
 
32169
<dd><p>&lsquo;<samp>random_vector</samp>&rsquo; can be used in conjunction with &lsquo;<samp>cubic_polynomial</samp>&rsquo; to
 
32170
create random patterns, see <a href="#lib_002emath_002ecubic_005fpolynomial">lib.math.cubic_polynomial</a> and
 
32171
<a href="#Weirdly-Wired">Weirdly Wired</a>.
 
32172
</p>
 
32173
</dd>
 
32174
<dt> <b>Full Example:</b></dt>
 
32175
</dl>
 
32176
 
 
32177
 
 
32178
<hr size="6">
 
32179
<a name="lib_002emath_002esteps"></a>
 
32180
<table cellpadding="1" cellspacing="1" border="0">
 
32181
<tr><td valign="middle" align="left">[<a href="#lib_002emath_002erandom_005fvector" title="Previous section in reading order"> &lt; </a>]</td>
 
32182
<td valign="middle" align="left">[<a href="#libmap" title="Next section in reading order"> &gt; </a>]</td>
 
32183
<td valign="middle" align="left"> &nbsp; </td>
 
32184
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
32185
<td valign="middle" align="left">[<a href="#libmath" title="Up section"> Up </a>]</td>
 
32186
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
32187
<td valign="middle" align="left"> &nbsp; </td>
 
32188
<td valign="middle" align="left"> &nbsp; </td>
 
32189
<td valign="middle" align="left"> &nbsp; </td>
 
32190
<td valign="middle" align="left"> &nbsp; </td>
 
32191
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
32192
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
32193
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
32194
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
32195
</tr></table>
 
32196
<a name="lib_002emath_002esteps-1"></a>
 
32197
<h3 class="subsection">12.3.9 lib.math.steps</h3>
 
32198
<a name="index-lib_002emath_002esteps"></a>
 
32199
 
 
32200
<p>&lsquo;<samp>steps</samp>&rsquo; takes a number &lsquo;<samp>d</samp>&rsquo; and a table of numbers as arguments and
 
32201
returns the index of the first number larger or equal &lsquo;<samp>d</samp>&rsquo;, minus one.
 
32202
I.e. it classifies &lsquo;<samp>d</samp>&rsquo; into the intervals given by the table, starting
 
32203
with zero, when &lsquo;<samp>d</samp>&rsquo; is smaller than the first number in the table, one,
 
32204
when &lsquo;<samp>d</samp>&rsquo; is larger or equal to the first, but smaller than the second
 
32205
number, and so on.
 
32206
</p>
 
32207
<dl compact="compact">
 
32208
<dt> <b>Syntax:</b></dt>
 
32209
<dd><p><b>lib.math.steps</b>(<i>discriminator</i>, <i>steps</i>)
 
32210
</p>
 
32211
<dl compact="compact">
 
32212
<dt> <i>discriminator</i></dt>
 
32213
<dd><p>A number.
 
32214
</p>
 
32215
</dd>
 
32216
<dt> <i>steps</i></dt>
 
32217
<dd><p>A table of numbers.
 
32218
</p></dd>
 
32219
</dl>
 
32220
 
 
32221
</dd>
 
32222
<dt> <b>Syntax Samples:</b></dt>
 
32223
<dd><table><tr><td>&nbsp;</td><td><pre class="example">number_pairs = lib.math.steps(total_places, {2, 6, 10, 30})
 
32224
</pre></td></tr></table>
 
32225
 
 
32226
</dd>
 
32227
<dt> <b>Details:</b></dt>
 
32228
<dd><p>Negative and non-integer values are allowed. However, the numbers in the
 
32229
&lsquo;<samp>steps</samp>&rsquo;-table should be monotonously increasing (not necessarily strictly
 
32230
monotonously), as otherwise the result might be counter-intuitive.
 
32231
</p>
 
32232
</dd>
 
32233
<dt> <b>Full Example:</b></dt>
 
32234
<dd><table><tr><td>&nbsp;</td><td><pre class="example">lib.math.steps(x, {4, 8, 13})
 
32235
</pre></td></tr></table>
 
32236
<p>returns:
 
32237
</p><table><tr><td>&nbsp;</td><td><pre class="example">     0  if        x &lt; 4
 
32238
     1  if   4 &lt;= x &lt; 8
 
32239
     2  if   8 &lt;= x &lt; 13
 
32240
     3  if  13 &lt;= x
 
32241
</pre></td></tr></table>
 
32242
</dd>
 
32243
</dl>
 
32244
 
 
32245
 
 
32246
<hr size="6">
 
32247
<a name="libmap"></a>
 
32248
<table cellpadding="1" cellspacing="1" border="0">
 
32249
<tr><td valign="middle" align="left">[<a href="#lib_002emath_002esteps" title="Previous section in reading order"> &lt; </a>]</td>
 
32250
<td valign="middle" align="left">[<a href="#Creating-Maps" title="Next section in reading order"> &gt; </a>]</td>
 
32251
<td valign="middle" align="left"> &nbsp; </td>
 
32252
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
32253
<td valign="middle" align="left">[<a href="#Libraries" title="Up section"> Up </a>]</td>
 
32254
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
32255
<td valign="middle" align="left"> &nbsp; </td>
 
32256
<td valign="middle" align="left"> &nbsp; </td>
 
32257
<td valign="middle" align="left"> &nbsp; </td>
 
32258
<td valign="middle" align="left"> &nbsp; </td>
 
32259
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
32260
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
32261
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
32262
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
32263
</tr></table>
 
32264
<a name="libmap-1"></a>
 
32265
<h2 class="section">12.4 libmap</h2>
 
32266
 
 
32267
<p>The &lsquo;<samp>libmap</samp>&rsquo; gives the author more possibilities to work with API 2-maps.
 
32268
Up to now, a map just is a table of strings, as described in
 
32269
<a href="#World-Creation">World Creation</a>. With &lsquo;<samp>libmap</samp>&rsquo;, you can utilize maps in a more
 
32270
advanced way.
 
32271
</p>
 
32272
<p>This library is described as of release 1.
 
32273
</p>
 
32274
<p>You can load it by adding an &lsquo;<samp>dependency</samp>&rsquo; element to the
 
32275
<a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a> XML Metadata element as follows:
 
32276
</p>
 
32277
<table><tr><td>&nbsp;</td><td><pre class="example">  &lt;<i>el</i>:<b>dependency</b> <i>el</i>:<b>path</b>=&quot;<var>lib/libmap</var>&quot; <i>el</i>:<b>id</b>=&quot;<var>lib/libmap</var>&quot; <i>el</i>:<b>release</b>=&quot;<var>1</var>&quot; <i>el</i>:<b>preload</b>=&quot;<var>true</var>&quot;/&gt;
 
32278
</pre></td></tr></table>
 
32279
 
 
32280
<p>It preloads automatically the library <a href="#liblua">liblua</a>.
 
32281
</p>
 
32282
<p>We first give six task-oriented sections, then describe each function in detail.
 
32283
</p>
 
32284
<table class="menu" border="0" cellspacing="0">
 
32285
<tr><td align="left" valign="top"><a href="#Creating-Maps">12.4.1 Creating Maps</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32286
</td></tr>
 
32287
<tr><td align="left" valign="top"><a href="#Drawing-Maps">12.4.2 Drawing Maps</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32288
</td></tr>
 
32289
<tr><td align="left" valign="top"><a href="#Rotating-and-Mirroring-Maps">12.4.3 Rotating and Mirroring Maps</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32290
</td></tr>
 
32291
<tr><td align="left" valign="top"><a href="#Requesting-and-Changing-Single-Map-Entries">12.4.4 Requesting and Changing Single Map Entries</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32292
</td></tr>
 
32293
<tr><td align="left" valign="top"><a href="#Connecting-Two-Maps">12.4.5 Connecting Two Maps</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32294
</td></tr>
 
32295
<tr><td align="left" valign="top"><a href="#Other-Map-Tasks">12.4.6 Other Map Tasks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32296
</td></tr>
 
32297
<tr><td align="left" valign="top"><a href="#newMap">12.4.7 newMap</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32298
</td></tr>
 
32299
<tr><td align="left" valign="top"><a href="#Map-Entry-Request">12.4.8 Map Entry Request</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> Index Operator &lsquo;<samp>[]</samp>&rsquo; read and write
 
32300
</td></tr>
 
32301
<tr><td align="left" valign="top"><a href="#Map-Transformation">12.4.9 Map Transformation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> Operator &lsquo;<samp>^</samp>&rsquo;
 
32302
</td></tr>
 
32303
<tr><td align="left" valign="top"><a href="#Map-Horizontal-Concatenation">12.4.10 Map Horizontal Concatenation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> Operator &lsquo;<samp>..</samp>&rsquo;
 
32304
</td></tr>
 
32305
<tr><td align="left" valign="top"><a href="#Map-Vertical-Concatenation">12.4.11 Map Vertical Concatenation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> Operator &lsquo;<samp>+</samp>&rsquo;
 
32306
</td></tr>
 
32307
<tr><td align="left" valign="top"><a href="#Map-Fusing">12.4.12 Map Fusing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> Operator &lsquo;<samp>*</samp>&rsquo;
 
32308
</td></tr>
 
32309
<tr><td align="left" valign="top"><a href="#Map-Default-Keys">12.4.13 Map Default Keys</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32310
</td></tr>
 
32311
<tr><td align="left" valign="top"><a href="#Map-Width-and-Height">12.4.14 Map Width and Height</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32312
</td></tr>
 
32313
<tr><td align="left" valign="top"><a href="#lib_002emap_002ecovers">12.4.15 lib.map.covers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32314
</td></tr>
 
32315
<tr><td align="left" valign="top"><a href="#lib_002emap_002edefuse">12.4.16 lib.map.defuse</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32316
</td></tr>
 
32317
<tr><td align="left" valign="top"><a href="#lib_002emap_002eextend">12.4.17 lib.map.extend</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32318
</td></tr>
 
32319
<tr><td align="left" valign="top"><a href="#lib_002emap_002ematch">12.4.18 lib.map.match</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32320
</td></tr>
 
32321
<tr><td align="left" valign="top"><a href="#lib_002emap_002epaste">12.4.19 lib.map.paste</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32322
</td></tr>
 
32323
<tr><td align="left" valign="top"><a href="#lib_002emap_002eprint">12.4.20 lib.map.print</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32324
</td></tr>
 
32325
<tr><td align="left" valign="top"><a href="#lib_002emap_002ereplace">12.4.21 lib.map.replace</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32326
</td></tr>
 
32327
<tr><td align="left" valign="top"><a href="#lib_002emap_002ereplace_005foutside">12.4.22 lib.map.replace_outside</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32328
</td></tr>
 
32329
<tr><td align="left" valign="top"><a href="#lib_002emap_002esub">12.4.23 lib.map.sub</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32330
</td></tr>
 
32331
<tr><td align="left" valign="top"><a href="#lib_002emap_002etrim">12.4.24 lib.map.trim</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32332
</td></tr>
 
32333
<tr><td align="left" valign="top"><a href="#Map-Transformation-Index-and-MAP_005fALL">12.4.25 Map Transformation Index and MAP_ALL</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32334
</td></tr>
 
32335
<tr><td align="left" valign="top"><a href="#Map-Transformation-Composition-and-Powers">12.4.26 Map Transformation Composition and Powers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> Operators &lsquo;<samp>*</samp>&rsquo; and &lsquo;<samp>^</samp>&rsquo;
 
32336
</td></tr>
 
32337
<tr><td align="left" valign="top"><a href="#Map-Transformation-Inverse">12.4.27 Map Transformation Inverse</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                Operator &lsquo;<samp>-</samp>&rsquo;
 
32338
</td></tr>
 
32339
<tr><td align="left" valign="top"><a href="#Random-Map-Transformations">12.4.28 Random Map Transformations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
32340
</td></tr>
 
32341
</table>
 
32342
 
 
32343
 
 
32344
<hr size="6">
 
32345
<a name="Creating-Maps"></a>
 
32346
<table cellpadding="1" cellspacing="1" border="0">
 
32347
<tr><td valign="middle" align="left">[<a href="#libmap" title="Previous section in reading order"> &lt; </a>]</td>
 
32348
<td valign="middle" align="left">[<a href="#Drawing-Maps" title="Next section in reading order"> &gt; </a>]</td>
 
32349
<td valign="middle" align="left"> &nbsp; </td>
 
32350
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
32351
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
32352
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
32353
<td valign="middle" align="left"> &nbsp; </td>
 
32354
<td valign="middle" align="left"> &nbsp; </td>
 
32355
<td valign="middle" align="left"> &nbsp; </td>
 
32356
<td valign="middle" align="left"> &nbsp; </td>
 
32357
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
32358
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
32359
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
32360
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
32361
</tr></table>
 
32362
<a name="Creating-Maps-1"></a>
 
32363
<h3 class="subsection">12.4.1 Creating Maps</h3>
 
32364
 
 
32365
<p>We start by defining a table of strings representing the level we want to
 
32366
write in a two-dimensional array of tile keys:
 
32367
</p>
 
32368
<table><tr><td>&nbsp;</td><td><pre class="example">mypremap = {&quot;# # # # # # # &quot;,
 
32369
            &quot;o t1  #   t2o &quot;,
 
32370
            &quot;#     #     # &quot;,
 
32371
            &quot;#     d2d1# # &quot;,
 
32372
            &quot;# @1#     @2# &quot;,
 
32373
            &quot;# # #     t1# &quot;,
 
32374
            &quot;o   d3    t3o &quot;,
 
32375
            &quot;# # # # # # # &quot;}
 
32376
</pre></td></tr></table>
 
32377
 
 
32378
<p>To not get confused with names, in this section we&rsquo;ll call such a table of
 
32379
strings a &rsquo;premap&rsquo;. We create a map (in the sense of libmap) by applying
 
32380
&lsquo;<samp>wo:newMap</samp>&rsquo; to it, with a default key and the premap as arguments:
 
32381
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap = wo:newMap(&quot;  &quot;, mypremap)
 
32382
</pre></td></tr></table>
 
32383
<p>The default key is saved in &lsquo;<samp>mymap</samp>&rsquo; as well, it&rsquo;s part of a map.
 
32384
</p>
 
32385
<p>You can use
 
32386
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap = wo:newMap(key, height, width)
 
32387
</pre></td></tr></table>
 
32388
<p>to define map of size &lsquo;<samp>height*width</samp>&rsquo;, where every tile key is &lsquo;<samp>key</samp>&rsquo;,
 
32389
and the default key is set to &lsquo;<samp>key</samp>&rsquo; as well. You might even omit
 
32390
&lsquo;<samp>height</samp>&rsquo; and &lsquo;<samp>width</samp>&rsquo;, then you create a map consisting of only one
 
32391
character.
 
32392
</p>
 
32393
 
 
32394
<hr size="6">
 
32395
<a name="Drawing-Maps"></a>
 
32396
<table cellpadding="1" cellspacing="1" border="0">
 
32397
<tr><td valign="middle" align="left">[<a href="#Creating-Maps" title="Previous section in reading order"> &lt; </a>]</td>
 
32398
<td valign="middle" align="left">[<a href="#Rotating-and-Mirroring-Maps" title="Next section in reading order"> &gt; </a>]</td>
 
32399
<td valign="middle" align="left"> &nbsp; </td>
 
32400
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
32401
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
32402
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
32403
<td valign="middle" align="left"> &nbsp; </td>
 
32404
<td valign="middle" align="left"> &nbsp; </td>
 
32405
<td valign="middle" align="left"> &nbsp; </td>
 
32406
<td valign="middle" align="left"> &nbsp; </td>
 
32407
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
32408
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
32409
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
32410
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
32411
</tr></table>
 
32412
<a name="Drawing-Maps-1"></a>
 
32413
<h3 class="subsection">12.4.2 Drawing Maps</h3>
 
32414
 
 
32415
<p>Just as we could have used the premap with &lsquo;<samp>wo</samp>&rsquo; or &lsquo;<samp>wo:drawMap</samp>&rsquo; to draw
 
32416
it (see <a href="#drawMap">drawMap</a>), we can use the newly created map as well:
 
32417
</p><table><tr><td>&nbsp;</td><td><pre class="example">wo(resolver, mymap)
 
32418
wo:drawMap(resolver, anchor, mymap)
 
32419
wo:drawMap(resolver, anchor, ignore, mymap)
 
32420
</pre></td></tr></table>
 
32421
<p>When the &lsquo;<samp>ignore</samp>&rsquo;-attribute for &lsquo;<samp>drawMap</samp>&rsquo; is omitted, the default key
 
32422
of &lsquo;<samp>mymap</samp>&rsquo; is used instead.
 
32423
</p>
 
32424
<p>Of course you can draw the map multiple times, even from within a resolver, see
 
32425
<a href="#drawMap">drawMap</a> for a full example.
 
32426
</p>
 
32427
 
 
32428
<hr size="6">
 
32429
<a name="Rotating-and-Mirroring-Maps"></a>
 
32430
<table cellpadding="1" cellspacing="1" border="0">
 
32431
<tr><td valign="middle" align="left">[<a href="#Drawing-Maps" title="Previous section in reading order"> &lt; </a>]</td>
 
32432
<td valign="middle" align="left">[<a href="#Requesting-and-Changing-Single-Map-Entries" title="Next section in reading order"> &gt; </a>]</td>
 
32433
<td valign="middle" align="left"> &nbsp; </td>
 
32434
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
32435
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
32436
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
32437
<td valign="middle" align="left"> &nbsp; </td>
 
32438
<td valign="middle" align="left"> &nbsp; </td>
 
32439
<td valign="middle" align="left"> &nbsp; </td>
 
32440
<td valign="middle" align="left"> &nbsp; </td>
 
32441
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
32442
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
32443
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
32444
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
32445
</tr></table>
 
32446
<a name="Rotating-and-Mirroring-Maps-1"></a>
 
32447
<h3 class="subsection">12.4.3 Rotating and Mirroring Maps</h3>
 
32448
 
 
32449
<p>We can transform a single map simply by using one of the following commands:
 
32450
</p><table><tr><td>&nbsp;</td><td><pre class="example">newmap = lib.map.transform(mymap, maptransformation)
 
32451
newmap = mymap ^ maptransformation
 
32452
</pre></td></tr></table>
 
32453
<p>&lsquo;<samp>maptransformation</samp>&rsquo; can be any of the following constants:
 
32454
</p><dl compact="compact">
 
32455
<dt> &lsquo;<samp>MAP_IDENT</samp>&rsquo;</dt>
 
32456
<dd><p>No transformation.
 
32457
</p></dd>
 
32458
<dt> &lsquo;<samp>MAP_ROT_CW</samp>&rsquo;</dt>
 
32459
<dd><p>Rotate 90 degrees clockwise.
 
32460
</p></dd>
 
32461
<dt> &lsquo;<samp>MAP_ROT_180</samp>&rsquo;</dt>
 
32462
<dd><p>Rotate 180 degrees (i.e. a point reflection around the midpoint).
 
32463
</p></dd>
 
32464
<dt> &lsquo;<samp>MAP_ROT_CCW</samp>&rsquo;</dt>
 
32465
<dd><p>Rotate 90 degrees counter-clockwise.
 
32466
</p></dd>
 
32467
<dt> &lsquo;<samp>MAP_FLIP_HORIZONTAL</samp>&rsquo;</dt>
 
32468
<dd><p>Flip each horizontal line, i.e. mirror against a vertical mirror: left and right are swapped.
 
32469
</p></dd>
 
32470
<dt> &lsquo;<samp>MAP_FLIP_VERTICAL</samp>&rsquo;</dt>
 
32471
<dd><p>Flip each vertical line, i.e. mirror against a horizontal mirror: up and down are swapped.
 
32472
</p></dd>
 
32473
<dt> &lsquo;<samp>MAP_FLIP_SLASH</samp>&rsquo;</dt>
 
32474
<dd><p>Flip each <code>/</code>-diagonal, i.e. mirror against a <code>\</code>-mirror: upper-right and
 
32475
lower-left corners are swapped.
 
32476
</p></dd>
 
32477
<dt> &lsquo;<samp>MAP_FLIP_BACKSLASH</samp>&rsquo;</dt>
 
32478
<dd><p>Flip each <code>\</code>-diagonal, i.e. mirror against a <code>/</code>-mirror: upper-left
 
32479
and lower-right corners are swapped.
 
32480
</p></dd>
 
32481
</dl>
 
32482
 
 
32483
<p>When you apply multiple transformations, remember that their sequence
 
32484
matters. If you use
 
32485
</p><table><tr><td>&nbsp;</td><td><pre class="example">newmap = mymap ^ maptransformation1 ^ maptransformation2 ^ maptransformation3
 
32486
</pre></td></tr></table>
 
32487
<p>then <code>maptransformation1</code> acts first on <code>mymap</code>, then comes
 
32488
<code>maptransformation2</code>, and <code>maptransformation3</code> is
 
32489
last. However, composing transformations is associative, so you can use
 
32490
</p><table><tr><td>&nbsp;</td><td><pre class="example">newmap = mymap ^ ((maptransformation1 ^ maptransformation2) ^ maptransformation3)
 
32491
</pre></td></tr></table>
 
32492
<p>or
 
32493
</p><table><tr><td>&nbsp;</td><td><pre class="example">newmap = (mymap ^ maptransformation1) ^ (maptransformation2 ^ maptransformation3)
 
32494
</pre></td></tr></table>
 
32495
<p>to the same effect. Keep in mind that composing transformations is by far faster than
 
32496
applying transformations to maps. So the first example is faster than the
 
32497
second. Due to Lua&rsquo;s sequence of evaluating operators,
 
32498
</p><table><tr><td>&nbsp;</td><td><pre class="example">newmap = mymap ^ maptransformation1 ^ maptransformation2 ^ maptransformation3
 
32499
</pre></td></tr></table>
 
32500
<p>equals
 
32501
</p><table><tr><td>&nbsp;</td><td><pre class="example">newmap = mymap ^ (maptransformation1 ^ (maptransformation2 ^ maptransformation3))
 
32502
</pre></td></tr></table>
 
32503
<p>and hence already is the fastest possible sequence.
 
32504
</p>
 
32505
<p>For composing transformations you may use <code>^</code> as well as <code>*</code>. You
 
32506
can also use <code>maptransformation ^ n</code> to calculate the n-th power of
 
32507
<code>maptransformation</code> for any integer n. The inverse of a transformation is
 
32508
given by <code>-maptransformation</code>, so
 
32509
</p><table><tr><td>&nbsp;</td><td><pre class="example">MAP_ROT_CW * (-MAP_ROT_CW) == MAP_IDENT
 
32510
</pre></td></tr></table>
 
32511
 
 
32512
 
 
32513
<hr size="6">
 
32514
<a name="Requesting-and-Changing-Single-Map-Entries"></a>
 
32515
<table cellpadding="1" cellspacing="1" border="0">
 
32516
<tr><td valign="middle" align="left">[<a href="#Rotating-and-Mirroring-Maps" title="Previous section in reading order"> &lt; </a>]</td>
 
32517
<td valign="middle" align="left">[<a href="#Connecting-Two-Maps" title="Next section in reading order"> &gt; </a>]</td>
 
32518
<td valign="middle" align="left"> &nbsp; </td>
 
32519
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
32520
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
32521
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
32522
<td valign="middle" align="left"> &nbsp; </td>
 
32523
<td valign="middle" align="left"> &nbsp; </td>
 
32524
<td valign="middle" align="left"> &nbsp; </td>
 
32525
<td valign="middle" align="left"> &nbsp; </td>
 
32526
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
32527
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
32528
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
32529
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
32530
</tr></table>
 
32531
<a name="Requesting-and-Changing-Single-Map-Entries-1"></a>
 
32532
<h3 class="subsection">12.4.4 Requesting and Changing Single Map Entries</h3>
 
32533
 
 
32534
<p>Let&rsquo;s take a look at our example again:
 
32535
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap = wo:newMap(&quot;  &quot;, {&quot;# # # # # # # &quot;,
 
32536
                         &quot;o t1  #   t2o &quot;,
 
32537
                         &quot;#     #     # &quot;,
 
32538
                         &quot;#     d2d1# # &quot;,
 
32539
                         &quot;# @1#     @2# &quot;,
 
32540
                         &quot;# # #     t1# &quot;,
 
32541
                         &quot;o   d3    t3o &quot;,
 
32542
                         &quot;# # # # # # # &quot;})
 
32543
</pre></td></tr></table>
 
32544
<p>It&rsquo;s easy to check, what kind of tile key is at position <code>{1,1}</code> (note
 
32545
that the upper left corner is at position <code>{0,0}</code>):
 
32546
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap[{1, 1}] == &quot;t1&quot;
 
32547
</pre></td></tr></table>
 
32548
<p>It&rsquo;s similarly easy to change it. Let&rsquo;s say, we want to create a passage
 
32549
one tile right beside the second marble &lsquo;<samp>@2</samp>&rsquo;, which is named
 
32550
&lsquo;<samp>marble2</samp>&rsquo;:
 
32551
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap[no[&quot;marble2&quot;] + {1,0}] = &quot;  &quot;
 
32552
</pre></td></tr></table>
 
32553
<p>Note that the reference to &lsquo;<samp>marble2</samp>&rsquo; only works after the marble has been
 
32554
set.
 
32555
</p>
 
32556
<p>Requesting and changing map entries can be used with position lists, object and
 
32557
group references as well.
 
32558
</p>
 
32559
<p>You can replace any occurrence of a tile key &lsquo;<samp>tile1</samp>&rsquo; by &lsquo;<samp>tile2</samp>&rsquo; simply
 
32560
by
 
32561
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap:replace(tile1, tile2)
 
32562
</pre></td></tr></table>
 
32563
<p>You can omit &lsquo;<samp>tile2</samp>&rsquo;, then any occurrence of &lsquo;<samp>tile1</samp>&rsquo; will be replaced
 
32564
by the default key.
 
32565
</p>
 
32566
<p>You can also search for positions in a map which fulfill given conditions by
 
32567
using &lsquo;<samp>match</samp>&rsquo;, the return value is a position list. The syntax is simple:
 
32568
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap:match()
 
32569
mymap:match(tilekey)
 
32570
mymap:match({pos1, key1a, key1b, ...}, {pos2, key2a, key2b, ...}, ...)
 
32571
mymap:match({{pos1, key1a, key1b, ...}, {pos2, key2a, key2b, ...}, ...})
 
32572
</pre></td></tr></table>
 
32573
<p>The first call will return all positions of the map. The second call will
 
32574
return all positions with the desired <code>tilekey</code>. The third and fourth call
 
32575
will return all positions <code>x</code> such that <code>x + pos1</code> is one of the keys
 
32576
<code>key1a</code> or <code>key1b</code> or ..., and such that <code>x + pos2</code> is one of
 
32577
the keys <code>key2a</code>, <code>2b</code>, ..., and so on. A tile outside of the map is
 
32578
considered to be a default key.
 
32579
</p>
 
32580
<p>The resulting position list can then be used to replace the matching tile keys:
 
32581
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap[mymap:match(oldkey)] = newkey
 
32582
</pre></td></tr></table>
 
32583
<p>is equivalent to &lsquo;<samp>mymap:replace(oldkey, newkey)</samp>&rsquo; (only slower), and
 
32584
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap[mymap:match({po(0,0), &quot; &quot;}, {NEIGHBORS_4, &quot;.&quot;, &quot;:&quot;})] = &quot;.&quot;
 
32585
</pre></td></tr></table>
 
32586
<p>will find all occurrences of &lsquo;<samp> </samp>&rsquo;, which are completely surrounded by
 
32587
&lsquo;<samp>.</samp>&rsquo;, or &lsquo;<samp>:</samp>&rsquo;, or mixtures of these, and replace them by &lsquo;<samp>.</samp>&rsquo;. As
 
32588
all replacements are done after matching, and hence simultaneously, the newly
 
32589
introduced &lsquo;<samp>.</samp>&rsquo; will not participate in the matching.
 
32590
</p>
 
32591
 
 
32592
<hr size="6">
 
32593
<a name="Connecting-Two-Maps"></a>
 
32594
<table cellpadding="1" cellspacing="1" border="0">
 
32595
<tr><td valign="middle" align="left">[<a href="#Requesting-and-Changing-Single-Map-Entries" title="Previous section in reading order"> &lt; </a>]</td>
 
32596
<td valign="middle" align="left">[<a href="#Other-Map-Tasks" title="Next section in reading order"> &gt; </a>]</td>
 
32597
<td valign="middle" align="left"> &nbsp; </td>
 
32598
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
32599
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
32600
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
32601
<td valign="middle" align="left"> &nbsp; </td>
 
32602
<td valign="middle" align="left"> &nbsp; </td>
 
32603
<td valign="middle" align="left"> &nbsp; </td>
 
32604
<td valign="middle" align="left"> &nbsp; </td>
 
32605
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
32606
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
32607
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
32608
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
32609
</tr></table>
 
32610
<a name="Connecting-Two-Maps-1"></a>
 
32611
<h3 class="subsection">12.4.5 Connecting Two Maps</h3>
 
32612
 
 
32613
<p>Given two maps &lsquo;<samp>map1</samp>&rsquo; and &lsquo;<samp>map2</samp>&rsquo;, we can glue them together
 
32614
horizontally by &lsquo;<samp>map1 .. map2</samp>&rsquo; as well as vertically with &lsquo;<samp>map1 +
 
32615
map2</samp>&rsquo;. Missing entries will be filled with the default key of the respective
 
32616
map, the default key of the result will be the one of &lsquo;<samp>map1</samp>&rsquo;. A simple
 
32617
example:
 
32618
</p><table><tr><td>&nbsp;</td><td><pre class="example">map1 = wo:newMap(&quot; &quot;, {&quot;####&quot;,
 
32619
                       &quot;o  #&quot;,
 
32620
                       &quot;# w#&quot;,
 
32621
                       &quot;####&quot;})
 
32622
map2 = wo:newMap(&quot;.&quot;, {&quot;#######&quot;,
 
32623
                       &quot;#w.#..#&quot;,
 
32624
                       &quot;#..D..#&quot;,
 
32625
                       &quot;#..#.w#&quot;,
 
32626
                       &quot;#######&quot;})
 
32627
map1 .. map2 == wo:newMap(&quot; &quot;, {&quot;###########&quot;,
 
32628
                                &quot;o  ##w.#..#&quot;,
 
32629
                                &quot;# w##..D..#&quot;,
 
32630
                                &quot;#####..#.w#&quot;,
 
32631
                                &quot;    #######&quot;})
 
32632
map2 .. map1 == wo:newMap(&quot;.&quot;, {&quot;###########&quot;,
 
32633
                                &quot;#w.#..#o  #&quot;,
 
32634
                                &quot;#..D..## w#&quot;,
 
32635
                                &quot;#..#.w#####&quot;,
 
32636
                                &quot;#######    &quot;})
 
32637
map1 + map2 == wo:newMap(&quot; &quot;, {&quot;####   &quot;,
 
32638
                               &quot;o  #   &quot;,
 
32639
                               &quot;# w#   &quot;,
 
32640
                               &quot;####   &quot;,
 
32641
                               &quot;#######&quot;,
 
32642
                               &quot;#w.#..#&quot;,
 
32643
                               &quot;#..D..#&quot;,
 
32644
                               &quot;#..#.w#&quot;,
 
32645
                               &quot;#######&quot;})
 
32646
</pre></td></tr></table>
 
32647
 
 
32648
<p>It&rsquo;s also possible to paste a map into another map:
 
32649
</p><table><tr><td>&nbsp;</td><td><pre class="example">map1:paste(map2, pos)
 
32650
</pre></td></tr></table>
 
32651
<p>will paste &lsquo;<samp>map2</samp>&rsquo; into &lsquo;<samp>map1</samp>&rsquo; at position &lsquo;<samp>pos</samp>&rsquo; (relative to
 
32652
&lsquo;<samp>map1</samp>&rsquo;: <code>{0,0}</code> is the upper left edge). If necessary, &lsquo;<samp>map1</samp>&rsquo;
 
32653
will be extended such that the whole of &lsquo;<samp>map2</samp>&rsquo; fits into it. You can use
 
32654
&lsquo;<samp>map1.sub</samp>&rsquo; to reduce its size again (see below) as well as to define
 
32655
&lsquo;<samp>map2</samp>&rsquo; as a section of another map. During the pasting, any occurrence of
 
32656
the default key of &lsquo;<samp>map2</samp>&rsquo; will be ignored, i.e. not drawn onto
 
32657
&lsquo;<samp>map1</samp>&rsquo;. You can change the default key with &lsquo;<samp>map2.defaultkey = ...</samp>&rsquo;
 
32658
prior to the paste command to circumvent this, or use
 
32659
&lsquo;<samp>map2:replace(tile)</samp>&rsquo; to replace more tile keys by the default key, such
 
32660
that they are not drawn as well. You can use an object group or position list
 
32661
for &lsquo;<samp>pos</samp>&rsquo;, in this case several copies of &lsquo;<samp>map2</samp>&rsquo; will be pasted into
 
32662
&lsquo;<samp>map1</samp>&rsquo;. In the first case, there is no guarantee about the sequence in
 
32663
which the maps will be pasted into &lsquo;<samp>map1</samp>&rsquo;. In the second case, a latter
 
32664
entry in the position list may overwrite the result of earlier entries.
 
32665
</p>
 
32666
<p>However, there&rsquo;s a fourth possibility: Two maps may represent two different
 
32667
parts of tile keys. Let&rsquo;s give an example to fuse two tile key layers:
 
32668
</p><table><tr><td>&nbsp;</td><td><pre class="example">first_char = wo:newMap(&quot;.&quot;, {&quot;#######&quot;,
 
32669
                             &quot;#w.#..#&quot;,
 
32670
                             &quot;#..D..#&quot;,
 
32671
                             &quot;#..#.w#&quot;,
 
32672
                             &quot;#######&quot;})
 
32673
last_char  = wo:newMap(&quot;.&quot;, {&quot;C     C&quot;,
 
32674
                             &quot; 11 22 &quot;,
 
32675
                             &quot; 11322 &quot;,
 
32676
                             &quot; 11 22 &quot;,
 
32677
                             &quot;C     C&quot;})
 
32678
first_char * last_char = wo:newMap(&quot; .&quot;, {&quot;#C# # # # # #C&quot;,
 
32679
                                          &quot;# w1.1# .2.2# &quot;,
 
32680
                                          &quot;# .1.1D3.2.2# &quot;,
 
32681
                                          &quot;# .1.1# .2w2# &quot;,
 
32682
                                          &quot;#C# # # # # #C&quot;})
 
32683
</pre></td></tr></table>
 
32684
<p>The default key of the fused map is the concatenation of the two original
 
32685
default keys. You can use a string instead of any of the two maps, in this case
 
32686
the whole tile key layer will consist of this string everywhere:
 
32687
</p><table><tr><td>&nbsp;</td><td><pre class="example">first_char = wo:newMap(&quot;.&quot;, {&quot;#######&quot;,
 
32688
                             &quot;#w.#..#&quot;,
 
32689
                             &quot;#..D..#&quot;,
 
32690
                             &quot;#..#.w#&quot;,
 
32691
                             &quot;#######&quot;})
 
32692
first_char * &quot;u&quot; = wo:newMap(&quot; u&quot;, {&quot;#u#u#u#u#u#u#u&quot;,
 
32693
                                    &quot;#uwu.u#u.u.u#u&quot;,
 
32694
                                    &quot;#u.u.uDu.u.u#u&quot;,
 
32695
                                    &quot;#u.u.u#u.uwu#u&quot;,
 
32696
                                    &quot;#u#u#u#u#u#u#u&quot;})
 
32697
 
 
32698
</pre></td></tr></table>
 
32699
<p>Fusing maps can be a mighty technique in combination with the
 
32700
<a href="#res_002ecomposer">res.composer</a>- and <a href="#res_002eautotile">res.autotile</a>-resolvers.
 
32701
</p>
 
32702
<p>A map can also be defused: &lsquo;<samp>map:defuse()</samp>&rsquo; will return a table of maps,
 
32703
where each map is of keylength one, holding the corresponding subkey character.
 
32704
</p>
 
32705
 
 
32706
<hr size="6">
 
32707
<a name="Other-Map-Tasks"></a>
 
32708
<table cellpadding="1" cellspacing="1" border="0">
 
32709
<tr><td valign="middle" align="left">[<a href="#Connecting-Two-Maps" title="Previous section in reading order"> &lt; </a>]</td>
 
32710
<td valign="middle" align="left">[<a href="#newMap" title="Next section in reading order"> &gt; </a>]</td>
 
32711
<td valign="middle" align="left"> &nbsp; </td>
 
32712
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
32713
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
32714
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
32715
<td valign="middle" align="left"> &nbsp; </td>
 
32716
<td valign="middle" align="left"> &nbsp; </td>
 
32717
<td valign="middle" align="left"> &nbsp; </td>
 
32718
<td valign="middle" align="left"> &nbsp; </td>
 
32719
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
32720
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
32721
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
32722
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
32723
</tr></table>
 
32724
<a name="Other-Map-Tasks-1"></a>
 
32725
<h3 class="subsection">12.4.6 Other Map Tasks</h3>
 
32726
 
 
32727
<p>You can access the default key of a map by &lsquo;<samp>mymap.defaultkey</samp>&rsquo;, and change
 
32728
it just as easily:
 
32729
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap.defaultkey = &quot;.3&quot;
 
32730
mymap:set_default_key(&quot;.3&quot;)
 
32731
</pre></td></tr></table>
 
32732
<p>The new default key should have the same length as the old one. However, it is
 
32733
possible to choose a new key length as long as it fits to the map.
 
32734
</p>
 
32735
<p>Width and height of a map can be accessed via &lsquo;<samp>mymap.width</samp>&rsquo; and
 
32736
&lsquo;<samp>mymap.height</samp>&rsquo;. However, these values can be changed only through the
 
32737
following commands &lsquo;<samp>mymap:extend</samp>&rsquo; and &lsquo;<samp>mymap:sub</samp>&rsquo;.
 
32738
</p>
 
32739
<p>It&rsquo;s possible to extend a map to a given position, as long as both
 
32740
coordinates are non-negative:
 
32741
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap:extend({19, 12})
 
32742
</pre></td></tr></table>
 
32743
<p>will extend &lsquo;<samp>mymap</samp>&rsquo; up to position &lsquo;<samp>{19,12}</samp>&rsquo;. Missing entries will
 
32744
be filled with the default key. If the map already covers this position, no
 
32745
change will be done.
 
32746
</p>
 
32747
<p>If you want to check whether a position &lsquo;<samp>pos</samp>&rsquo; lies inside a map, you can
 
32748
use &lsquo;<samp>mymap:covers(pos)</samp>&rsquo;, which returns a boolean value. Note that a map
 
32749
always starts in &lsquo;<samp>{0,0}</samp>&rsquo;.
 
32750
</p>
 
32751
<p>&lsquo;<samp>lib.map.sub</samp>&rsquo; allows you to copy a rectangular area of a map and create a
 
32752
&quot;submap&quot; this way. &lsquo;<samp>lib.map.sub</samp>&rsquo; uses the same syntax as
 
32753
&lsquo;<samp>wo:drawRect</samp>&rsquo;, i.e. either
 
32754
</p><table><tr><td>&nbsp;</td><td><pre class="example">submap = mymap:sub(pos1, pos2)
 
32755
</pre></td></tr></table>
 
32756
<p>with &lsquo;<samp>pos1</samp>&rsquo; being the top left-hand corner and &lsquo;<samp>pos2</samp>&rsquo; the bottom
 
32757
right-hand corner, or alternatively
 
32758
</p><table><tr><td>&nbsp;</td><td><pre class="example">submap = mymap:sub(pos1, width, height)
 
32759
</pre></td></tr></table>
 
32760
<p>to define the rectangle by its top left-hand corner and the side lengths of its
 
32761
area. If the bottom right-hand corner overlaps the area of &lsquo;<samp>mymap</samp>&rsquo;, the
 
32762
resulting &lsquo;<samp>submap</samp>&rsquo; will still be just the rectangular section of
 
32763
&lsquo;<samp>mymap</samp>&rsquo;, i.e. width and height can be less than the arguments specified.
 
32764
Use &lsquo;<samp>submap:extend(width, height)</samp>&rsquo; to ensure the full width and height.
 
32765
The default key of the submap of course is the default key of the original map.
 
32766
</p>
 
32767
<p>&lsquo;<samp>lib.map.trim</samp>&rsquo; or &lsquo;<samp>mymap:trim(tilekey)</samp>&rsquo; removes all lines and
 
32768
columns from the North, South, East, and West that consist of <code>tilekey</code>
 
32769
only; it&rsquo;s like trimming a string from white spaces. You can omit
 
32770
&lsquo;<samp>tilekey</samp>&rsquo;, then the default key is used instead.
 
32771
</p>
 
32772
<p>&lsquo;<samp>mymap:replace_outside(tile1, tile2)</samp>&rsquo; is a kind of combination of
 
32773
&lsquo;<samp>replace</samp>&rsquo; and &lsquo;<samp>trim</samp>&rsquo;: All occurrences of <code>tile1</code>, which are
 
32774
connected to the border by a path of &lsquo;<samp>tile1</samp>&rsquo;, are replaced by
 
32775
<code>tile2</code> (or default key). Example:
 
32776
</p><table><tr><td>&nbsp;</td><td><pre class="example">map1 = wo:newMap(&quot; &quot;, {&quot; ##########&quot;,
 
32777
                       &quot;###      ##&quot;,
 
32778
                       &quot;F# D ## # #&quot;,
 
32779
                       &quot;#       # #&quot;,
 
32780
                       &quot;########   &quot;})
 
32781
map2 = wo:newMap(&quot; &quot;, map1)
 
32782
map1:replace_outside(&quot; &quot;, &quot;.&quot;)
 
32783
map2:replace_outside(&quot; &quot;, &quot;#&quot;)
 
32784
map2:replace_outside(&quot;#&quot;, &quot;.&quot;)
 
32785
</pre></td></tr></table>
 
32786
<p>will yield:
 
32787
</p><table><tr><td>&nbsp;</td><td><pre class="example">map1 = {&quot;.##########&quot;,
 
32788
        &quot;###      ##&quot;,
 
32789
        &quot;F# D ## #.#&quot;,
 
32790
        &quot;#       #.#&quot;,
 
32791
        &quot;########...&quot;})
 
32792
map2 = {&quot;...........&quot;,
 
32793
        &quot;...      ..&quot;,
 
32794
        &quot;F. D ## ...&quot;,
 
32795
        &quot;.       ...&quot;,
 
32796
        &quot;...........&quot;})
 
32797
</pre></td></tr></table>
 
32798
<p>You can combine &lsquo;<samp>replace_outside</samp>&rsquo; with &lsquo;<samp>match</samp>&rsquo; to remove irrelevant
 
32799
walls:
 
32800
</p><table><tr><td>&nbsp;</td><td><pre class="example">map1.defaultkey = &quot;-&quot;
 
32801
map1:replace_outside(&quot; &quot;)
 
32802
map1[map1:match({{po(0,0), &quot;#&quot;}, {NEIGHBORS_4, &quot;-&quot;, &quot;#&quot;, &quot;F&quot;}})] = &quot;-&quot;
 
32803
map1:trim()
 
32804
map1.defaultkey = &quot; &quot;
 
32805
</pre></td></tr></table>
 
32806
<p>will yield:
 
32807
</p><table><tr><td>&nbsp;</td><td><pre class="example">map1 = {&quot;---######-&quot;,
 
32808
        &quot;--#      #&quot;,
 
32809
        &quot;F# D ## #-&quot;,
 
32810
        &quot;#       #-&quot;,
 
32811
        &quot;-#######--&quot;})
 
32812
</pre></td></tr></table>
 
32813
 
 
32814
<p>Finally, you can use &lsquo;<samp>mymap:print()</samp>&rsquo; to print &lsquo;<samp>mymap</samp>&rsquo; to standard
 
32815
output. Similar to <a href="#lib_002elua_002eprint_005ftable">lib.lua.print_table</a>, this is useful for debugging a
 
32816
level by taking a look at its maps, but should not appear in the final level.
 
32817
&lsquo;<samp>mymap:print()</samp>&rsquo; allows several optional arguments:
 
32818
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap:print(withXYCounts, left_separator, right_separator)
 
32819
</pre></td></tr></table>
 
32820
<p>If &lsquo;<samp>withXYCounts</samp>&rsquo; is &lsquo;<samp>true</samp>&rsquo;, the map is printed with coordinates on
 
32821
the top and on the left. &lsquo;<samp>left_separator</samp>&rsquo; and &lsquo;<samp>right_separator</samp>&rsquo; can
 
32822
be strings to be put between the left coordinate axis and the map, and behind
 
32823
the map (to analyse space characters).
 
32824
</p>
 
32825
 
 
32826
<hr size="6">
 
32827
<a name="newMap"></a>
 
32828
<table cellpadding="1" cellspacing="1" border="0">
 
32829
<tr><td valign="middle" align="left">[<a href="#Other-Map-Tasks" title="Previous section in reading order"> &lt; </a>]</td>
 
32830
<td valign="middle" align="left">[<a href="#Map-Entry-Request" title="Next section in reading order"> &gt; </a>]</td>
 
32831
<td valign="middle" align="left"> &nbsp; </td>
 
32832
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
32833
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
32834
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
32835
<td valign="middle" align="left"> &nbsp; </td>
 
32836
<td valign="middle" align="left"> &nbsp; </td>
 
32837
<td valign="middle" align="left"> &nbsp; </td>
 
32838
<td valign="middle" align="left"> &nbsp; </td>
 
32839
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
32840
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
32841
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
32842
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
32843
</tr></table>
 
32844
<a name="newMap-1"></a>
 
32845
<h3 class="subsection">12.4.7 newMap</h3>
 
32846
<a name="index-lib_002emap_002enewMap"></a>
 
32847
 
 
32848
<p>&lsquo;<samp>wo:newMap</samp>&rsquo; takes a default key, and a premap or width and height as
 
32849
arguments, and returns a libmap-map.
 
32850
</p>
 
32851
<dl compact="compact">
 
32852
<dt> <b>Syntax:</b></dt>
 
32853
<dd><p><i>mymap</i> = <b>wo:newMap</b>(<i>defaultkey</i>, <i>premap</i>)
 
32854
</p>
 
32855
<p><i>mymap</i> = <b>wo:newMap</b>(<i>defaultkey</i>, <i>width</i>, <i>height</i>)
 
32856
</p>
 
32857
<p><i>mymap</i> = <b>wo:newMap</b>(<i>defaultkey</i>)
 
32858
</p>
 
32859
<dl compact="compact">
 
32860
<dt> <i>defaultkey</i></dt>
 
32861
<dd><p>A non-empty string, which becomes the default key of the new map.
 
32862
</p>
 
32863
</dd>
 
32864
<dt> <i>premap</i></dt>
 
32865
<dd><p>A table of strings. It may have lines of varying length, but each line length
 
32866
must be divisible by the length of the default key.
 
32867
</p>
 
32868
</dd>
 
32869
<dt> <i>width</i>, <i>height</i></dt>
 
32870
<dd><p>Positive integers. If width and height are given instead of a premap, a
 
32871
rectangular map consisting of the default key only is returned.
 
32872
</p></dd>
 
32873
</dl>
 
32874
 
 
32875
<p>If neither a premap, nor width and height are given, a 1x1-map with the default
 
32876
key is returned.
 
32877
</p>
 
32878
</dd>
 
32879
<dt> <b>Syntax Samples:</b></dt>
 
32880
<dd><p>See <a href="#Creating-Maps">Creating Maps</a>.
 
32881
</p>
 
32882
</dd>
 
32883
<dt> <b>Details:</b></dt>
 
32884
<dd><p>The syntax with neither premap nor width and height is useful in conjunction
 
32885
with <a href="#Map-Fusing">Map Fusing</a>.
 
32886
</p>
 
32887
<p>A libmap-map is always rectangular. But you may use an ignore-key when you draw
 
32888
the map with <a href="#drawMap">drawMap</a> to create arbitrarily shaped areas.
 
32889
</p>
 
32890
<p>If the premap is not rectangular, missing positions are set to the default key.
 
32891
However, each line length must be divisible by the default key&rsquo;s length, otherwise
 
32892
an error is thrown.
 
32893
</p>
 
32894
<p>You may feed arbitrary tables to <code>wo:newMap</code>, but only their positive
 
32895
integer entries are used, all other entries are ignored. You might even skip
 
32896
lines, like in this example:
 
32897
</p><table><tr><td>&nbsp;</td><td><pre class="example">wo:newMap(&quot; &quot;, {[25] = &quot;g&quot;})
 
32898
</pre></td></tr></table>
 
32899
<p>This will return a map of width 1 and height 25 filled with spaces, except for
 
32900
the last line, which will be <code>&quot;g&quot;</code>.
 
32901
</p>
 
32902
<p>Each libmap-map is a table and can be used as a premap as well. Its default
 
32903
key is ignored when a libmap-map is considered as a premap. In particular,
 
32904
you may use <code>wo:newMap</code> to copy a libmap-map with:
 
32905
</p><table><tr><td>&nbsp;</td><td><pre class="example">newcopy = wo:newMap(mymap.defaultkey, mymap)
 
32906
</pre></td></tr></table>
 
32907
</dd>
 
32908
</dl>
 
32909
 
 
32910
 
 
32911
<hr size="6">
 
32912
<a name="Map-Entry-Request"></a>
 
32913
<table cellpadding="1" cellspacing="1" border="0">
 
32914
<tr><td valign="middle" align="left">[<a href="#newMap" title="Previous section in reading order"> &lt; </a>]</td>
 
32915
<td valign="middle" align="left">[<a href="#Map-Transformation" title="Next section in reading order"> &gt; </a>]</td>
 
32916
<td valign="middle" align="left"> &nbsp; </td>
 
32917
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
32918
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
32919
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
32920
<td valign="middle" align="left"> &nbsp; </td>
 
32921
<td valign="middle" align="left"> &nbsp; </td>
 
32922
<td valign="middle" align="left"> &nbsp; </td>
 
32923
<td valign="middle" align="left"> &nbsp; </td>
 
32924
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
32925
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
32926
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
32927
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
32928
</tr></table>
 
32929
<a name="Map-Entry-Request-1"></a>
 
32930
<h3 class="subsection">12.4.8 Map Entry Request</h3>
 
32931
<a name="index-lib_002emap_002eget"></a>
 
32932
<a name="index-lib_002emap_002eset"></a>
 
32933
 
 
32934
<p>You may request and set single entries within a libmap-map, using the
 
32935
index-operator &lsquo;<samp>[]</samp>&rsquo;.
 
32936
</p>
 
32937
<dl compact="compact">
 
32938
<dt> <b>Syntax:</b></dt>
 
32939
<dd><p><i>entry</i> = <i>mymap</i><b>[</b><i>posarg</i><b>]</b>
 
32940
</p>
 
32941
<p><i>entry</i> = <b>lib.map.get</b>(<i>mymap</i>, <i>posarg</i>)
 
32942
</p>
 
32943
<p><i>mymap</i><b>[</b><i>posarg</i><b>]</b> = <b>newentry</b>
 
32944
</p>
 
32945
<p><b>lib.map.set</b>(<i>mymap</i>, <i>posarg</i>, <i>newentry</i>)
 
32946
</p>
 
32947
<dl compact="compact">
 
32948
<dt> <i>entry</i>, <i>newentry</i></dt>
 
32949
<dd><p>Non-empty strings of the same length as the default key of <code>mymap</code>.
 
32950
</p>
 
32951
</dd>
 
32952
<dt> <i>mymap</i></dt>
 
32953
<dd><p>A libmap-map.
 
32954
</p>
 
32955
</dd>
 
32956
<dt> <i>posarg</i></dt>
 
32957
<dd><p>A position, object, group, position list, string, or table (interpretable as
 
32958
single position).
 
32959
</p></dd>
 
32960
</dl>
 
32961
 
 
32962
</dd>
 
32963
<dt> <b>Syntax Samples:</b></dt>
 
32964
<dd><p>See <a href="#Requesting-and-Changing-Single-Map-Entries">Requesting and Changing Single Map Entries</a>.
 
32965
</p>
 
32966
</dd>
 
32967
<dt> <b>Details:</b></dt>
 
32968
<dd><p>A read-access with a group or position list will return a table of all key
 
32969
entries at the positions in the group or position list, in their corresponding
 
32970
sequence. Empty groups and position lists will return empty tables.
 
32971
</p>
 
32972
<p>Correspondingly, a write-access with a group or position list changes the key
 
32973
at each position in the group or position list to the given string.
 
32974
</p>
 
32975
<p>A read-access with a string invokes a <a href="#Positions-Repository-Request">Positions Repository Request</a> to
 
32976
retrieve a named position, unless the string equals one of <code>&quot;type&quot;</code>,
 
32977
<code>&quot;width&quot;</code>, <code>&quot;height&quot;</code>, <code>&quot;defaultkey&quot;</code>, or <code>&quot;keylength&quot;</code>,
 
32978
which return the corresponding properties of the map instead.
 
32979
</p>
 
32980
<p>A write-access with a string similarly is interpreted as access to a named
 
32981
position, unless the string equals <code>&quot;defaultkey&quot;</code>, see
 
32982
<a href="#Map-Default-Keys">Map Default Keys</a>. A write-access to a non-existing position throws an
 
32983
error.
 
32984
</p>
 
32985
<p>You may request any position outside of the scope of the map, even with
 
32986
negative coordinates. If you do so, the default key is returned. This accounts
 
32987
for non-existing positions as well (for example positions of items in the
 
32988
inventory, or the position of a string which doesn&rsquo;t describe a named position).
 
32989
</p>
 
32990
<p>If you try to set an entry to a position with a negative coordinate an error
 
32991
is returned. However, if you use non-negative coordinates outside of the scope
 
32992
of the map, the map is subsequently extended to the new position, setting
 
32993
the default key as entry where necessary.
 
32994
</p>
 
32995
<p>Floating-point coordinates are always rounded to a grid position
 
32996
(see <a href="#Position-Grid-Rounding">Position Grid Rounding</a>).
 
32997
</p></dd>
 
32998
</dl>
 
32999
 
 
33000
 
 
33001
<hr size="6">
 
33002
<a name="Map-Transformation"></a>
 
33003
<table cellpadding="1" cellspacing="1" border="0">
 
33004
<tr><td valign="middle" align="left">[<a href="#Map-Entry-Request" title="Previous section in reading order"> &lt; </a>]</td>
 
33005
<td valign="middle" align="left">[<a href="#Map-Horizontal-Concatenation" title="Next section in reading order"> &gt; </a>]</td>
 
33006
<td valign="middle" align="left"> &nbsp; </td>
 
33007
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
33008
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
33009
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
33010
<td valign="middle" align="left"> &nbsp; </td>
 
33011
<td valign="middle" align="left"> &nbsp; </td>
 
33012
<td valign="middle" align="left"> &nbsp; </td>
 
33013
<td valign="middle" align="left"> &nbsp; </td>
 
33014
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
33015
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
33016
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
33017
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
33018
</tr></table>
 
33019
<a name="Map-Transformation-1"></a>
 
33020
<h3 class="subsection">12.4.9 Map Transformation</h3>
 
33021
<a name="index-lib_002emap_002etransform"></a>
 
33022
 
 
33023
<p>You may transform any libmap-map according to the eight map transformation
 
33024
constants given in <a href="#Rotating-and-Mirroring-Maps">Rotating and Mirroring Maps</a>.
 
33025
</p>
 
33026
<dl compact="compact">
 
33027
<dt> <b>Syntax:</b></dt>
 
33028
<dd><p><i>newmap</i> = <i>mymap</i><b>^</b><i>maptransformation</i>
 
33029
</p>
 
33030
<p><i>newmap</i> = <b>lib.map.transform</b>(<i>mymap</i>, <i>maptransformation</i>)
 
33031
</p>
 
33032
<dl compact="compact">
 
33033
<dt> <i>mymap</i>, <i>newmap</i></dt>
 
33034
<dd><p>libmap-maps.
 
33035
</p>
 
33036
</dd>
 
33037
<dt> <i>maptransformation</i></dt>
 
33038
<dd><p>One of the following eight constants: <code>MAP_IDENT</code>, <code>MAP_ROT_CW</code>,
 
33039
<code>MAP_ROT_180</code>, <code>MAP_ROT_CCW</code>, <code>MAP_FLIP_HORIZONTAL</code>,
 
33040
<code>MAP_FLIP_VERTICAL</code>, <code>MAP_FLIP_SLASH</code>, <code>MAP_FLIP_BACKSLASH</code>.
 
33041
</p></dd>
 
33042
</dl>
 
33043
 
 
33044
</dd>
 
33045
<dt> <b>Syntax Samples:</b></dt>
 
33046
<dd><p>See <a href="#Rotating-and-Mirroring-Maps">Rotating and Mirroring Maps</a>.
 
33047
</p>
 
33048
</dd>
 
33049
<dt> <b>Details:</b></dt>
 
33050
<dd><p>As map transformations can be composed with &lsquo;<samp>^</samp>&rsquo;, it is possible to combine
 
33051
several transformations without brackets; it&rsquo;s only important to always have the
 
33052
map on the left side of the &lsquo;<samp>^</samp>&rsquo;-sign:
 
33053
</p><table><tr><td>&nbsp;</td><td><pre class="example">newmap = mymap ^ MAP_ROT_CW ^ MAP_FLIP_HORIZONTAL
 
33054
</pre></td></tr></table>
 
33055
<p>However, each such combination can equally well be expressed with a single constant.
 
33056
</p>
 
33057
<p>After a transformation, height and width of a map might have swapped.
 
33058
</p></dd>
 
33059
</dl>
 
33060
 
 
33061
 
 
33062
<hr size="6">
 
33063
<a name="Map-Horizontal-Concatenation"></a>
 
33064
<table cellpadding="1" cellspacing="1" border="0">
 
33065
<tr><td valign="middle" align="left">[<a href="#Map-Transformation" title="Previous section in reading order"> &lt; </a>]</td>
 
33066
<td valign="middle" align="left">[<a href="#Map-Vertical-Concatenation" title="Next section in reading order"> &gt; </a>]</td>
 
33067
<td valign="middle" align="left"> &nbsp; </td>
 
33068
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
33069
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
33070
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
33071
<td valign="middle" align="left"> &nbsp; </td>
 
33072
<td valign="middle" align="left"> &nbsp; </td>
 
33073
<td valign="middle" align="left"> &nbsp; </td>
 
33074
<td valign="middle" align="left"> &nbsp; </td>
 
33075
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
33076
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
33077
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
33078
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
33079
</tr></table>
 
33080
<a name="Map-Horizontal-Concatenation-1"></a>
 
33081
<h3 class="subsection">12.4.10 Map Horizontal Concatenation</h3>
 
33082
<a name="index-lib_002emap_002econcat_005fhorizontally"></a>
 
33083
 
 
33084
<p>You may glue libmap-maps one after another in horizontal direction using
 
33085
&lsquo;<samp>..</samp>&rsquo;. Note the similarity to the meaning of &lsquo;<samp>..</samp>&rsquo; in the context of
 
33086
strings to remember its meaning in contrast to &lsquo;<samp>+</samp>&rsquo; (see
 
33087
<a href="#Map-Vertical-Concatenation">Map Vertical Concatenation</a>).
 
33088
</p>
 
33089
<dl compact="compact">
 
33090
<dt> <b>Syntax:</b></dt>
 
33091
<dd><p><i>newmap</i> = <i>mymap1</i> <b>..</b> <i>mymap2</i>
 
33092
</p>
 
33093
<p><i>newmap</i> = <b>lib.map.concat_horizontally</b>(<i>mymap1</i>, <i>mymap2</i>)
 
33094
</p>
 
33095
<dl compact="compact">
 
33096
<dt> <i>mymap1</i>, <i>mymap2</i>, <i>newmap</i></dt>
 
33097
<dd><p>libmap-maps.
 
33098
</p></dd>
 
33099
</dl>
 
33100
 
 
33101
</dd>
 
33102
<dt> <b>Syntax Samples:</b></dt>
 
33103
<dd><p>See <a href="#Connecting-Two-Maps">Connecting Two Maps</a>.
 
33104
</p>
 
33105
</dd>
 
33106
<dt> <b>Details:</b></dt>
 
33107
<dd><p>The upper-left corner of the second map is set beneath the upper-right corner
 
33108
of the first, i.e. the bottom lines of the maps are aligned. If you want to
 
33109
align them in another way, you may first vertically concat a map of suitable
 
33110
height to the second (or first) map, like in this example:
 
33111
</p><table><tr><td>&nbsp;</td><td><pre class="example">newmap = mymap1 .. (wo:newMap(&quot; &quot;, 1, 13) + mymap2)
 
33112
</pre></td></tr></table>
 
33113
 
 
33114
<p>The default key of the new map is the default key of the first map. Any missing
 
33115
position to gain a rectangular map is subsequently set to this default key.
 
33116
</p></dd>
 
33117
</dl>
 
33118
 
 
33119
 
 
33120
<hr size="6">
 
33121
<a name="Map-Vertical-Concatenation"></a>
 
33122
<table cellpadding="1" cellspacing="1" border="0">
 
33123
<tr><td valign="middle" align="left">[<a href="#Map-Horizontal-Concatenation" title="Previous section in reading order"> &lt; </a>]</td>
 
33124
<td valign="middle" align="left">[<a href="#Map-Fusing" title="Next section in reading order"> &gt; </a>]</td>
 
33125
<td valign="middle" align="left"> &nbsp; </td>
 
33126
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
33127
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
33128
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
33129
<td valign="middle" align="left"> &nbsp; </td>
 
33130
<td valign="middle" align="left"> &nbsp; </td>
 
33131
<td valign="middle" align="left"> &nbsp; </td>
 
33132
<td valign="middle" align="left"> &nbsp; </td>
 
33133
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
33134
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
33135
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
33136
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
33137
</tr></table>
 
33138
<a name="Map-Vertical-Concatenation-1"></a>
 
33139
<h3 class="subsection">12.4.11 Map Vertical Concatenation</h3>
 
33140
<a name="index-lib_002emap_002econcat_005fvertically"></a>
 
33141
 
 
33142
<p>You may glue libmap-maps on top of each other in vertical direction using
 
33143
&lsquo;<samp>+</samp>&rsquo;. Compare with the meaning of &lsquo;<samp>..</samp>&rsquo; (see
 
33144
<a href="#Map-Horizontal-Concatenation">Map Horizontal Concatenation</a>).
 
33145
</p>
 
33146
<dl compact="compact">
 
33147
<dt> <b>Syntax:</b></dt>
 
33148
<dd><p><i>newmap</i> = <i>mymap1</i> <b>+</b> <i>mymap2</i>
 
33149
</p>
 
33150
<p><i>newmap</i> = <b>lib.map.concat_vertically</b>(<i>mymap1</i>, <i>mymap2</i>)
 
33151
</p>
 
33152
<dl compact="compact">
 
33153
<dt> <i>mymap1</i>, <i>mymap2</i>, <i>newmap</i></dt>
 
33154
<dd><p>libmap-maps.
 
33155
</p></dd>
 
33156
</dl>
 
33157
 
 
33158
</dd>
 
33159
<dt> <b>Syntax Samples:</b></dt>
 
33160
<dd><p>See <a href="#Connecting-Two-Maps">Connecting Two Maps</a>.
 
33161
</p>
 
33162
</dd>
 
33163
<dt> <b>Details:</b></dt>
 
33164
<dd><p>The upper-left corner of the second map is set below the lower-left corner
 
33165
of the first, i.e. the left borders of the maps are aligned. If you want to
 
33166
align them in another way, you may first horizontally concat a map of suitable
 
33167
width to the second (or first) map, like in this example:
 
33168
</p><table><tr><td>&nbsp;</td><td><pre class="example">newmap = mymap1 + (wo:newMap(&quot; &quot;, 13, 1) .. mymap2)
 
33169
</pre></td></tr></table>
 
33170
 
 
33171
<p>The default key of the new map is the default key of the first map. Any missing
 
33172
position to gain a rectangular map is subsequently set to this default key.
 
33173
</p></dd>
 
33174
</dl>
 
33175
 
 
33176
 
 
33177
<hr size="6">
 
33178
<a name="Map-Fusing"></a>
 
33179
<table cellpadding="1" cellspacing="1" border="0">
 
33180
<tr><td valign="middle" align="left">[<a href="#Map-Vertical-Concatenation" title="Previous section in reading order"> &lt; </a>]</td>
 
33181
<td valign="middle" align="left">[<a href="#Map-Default-Keys" title="Next section in reading order"> &gt; </a>]</td>
 
33182
<td valign="middle" align="left"> &nbsp; </td>
 
33183
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
33184
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
33185
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
33186
<td valign="middle" align="left"> &nbsp; </td>
 
33187
<td valign="middle" align="left"> &nbsp; </td>
 
33188
<td valign="middle" align="left"> &nbsp; </td>
 
33189
<td valign="middle" align="left"> &nbsp; </td>
 
33190
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
33191
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
33192
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
33193
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
33194
</tr></table>
 
33195
<a name="Map-Fusing-1"></a>
 
33196
<h3 class="subsection">12.4.12 Map Fusing</h3>
 
33197
<a name="index-lib_002emap_002efuse"></a>
 
33198
 
 
33199
<p>You may fuse libmap-maps in the way described in <a href="#Connecting-Two-Maps">Connecting Two Maps</a>, by
 
33200
interpreting the two keys of the two maps at a position as parts of a combined
 
33201
(fused) key at this position.
 
33202
</p>
 
33203
<dl compact="compact">
 
33204
<dt> <b>Syntax:</b></dt>
 
33205
<dd><p><i>newmap</i> = <i>mymap1</i> <b>*</b> <i>mymap2</i>
 
33206
</p>
 
33207
<p><i>newmap</i> = <b>lib.map.fuse</b>(<i>mymap1</i>, <i>mymap2</i>)
 
33208
</p>
 
33209
<dl compact="compact">
 
33210
<dt> <i>mymap1</i>, <i>mymap2</i>, <i>newmap</i></dt>
 
33211
<dd><p>libmap-maps.
 
33212
</p></dd>
 
33213
</dl>
 
33214
 
 
33215
</dd>
 
33216
<dt> <b>Syntax Samples:</b></dt>
 
33217
<dd><p>See <a href="#Connecting-Two-Maps">Connecting Two Maps</a>.
 
33218
</p>
 
33219
</dd>
 
33220
<dt> <b>Details:</b></dt>
 
33221
<dd><p>Missing keys in one map are replaced by the default key of this map.
 
33222
</p>
 
33223
<p>The default key of the result is the concatenation of the default key of the
 
33224
first map with the default key of the second map (as expected).
 
33225
</p>
 
33226
<p>The inverse of the fusing operation is given by <a href="#lib_002emap_002edefuse">lib.map.defuse</a>.
 
33227
</p>
 
33228
<p>One of the maps is allowed to be a string, which is then interpreted as a
 
33229
1x1-map with the given string as default key. The result of the fusing process
 
33230
then is that each tile key is concatenated with the given string.
 
33231
</p></dd>
 
33232
</dl>
 
33233
 
 
33234
 
 
33235
<hr size="6">
 
33236
<a name="Map-Default-Keys"></a>
 
33237
<table cellpadding="1" cellspacing="1" border="0">
 
33238
<tr><td valign="middle" align="left">[<a href="#Map-Fusing" title="Previous section in reading order"> &lt; </a>]</td>
 
33239
<td valign="middle" align="left">[<a href="#Map-Width-and-Height" title="Next section in reading order"> &gt; </a>]</td>
 
33240
<td valign="middle" align="left"> &nbsp; </td>
 
33241
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
33242
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
33243
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
33244
<td valign="middle" align="left"> &nbsp; </td>
 
33245
<td valign="middle" align="left"> &nbsp; </td>
 
33246
<td valign="middle" align="left"> &nbsp; </td>
 
33247
<td valign="middle" align="left"> &nbsp; </td>
 
33248
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
33249
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
33250
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
33251
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
33252
</tr></table>
 
33253
<a name="Map-Default-Keys-1"></a>
 
33254
<h3 class="subsection">12.4.13 Map Default Keys</h3>
 
33255
<a name="index-lib_002emap_002eset_005fdefault_005fkey"></a>
 
33256
 
 
33257
<p>A libmap-map always includes a default key, which is used in various places
 
33258
throughout the library. It is the placeholder whenever a key out of scope of
 
33259
the map is requested, or when <a href="#drawMap">drawMap</a> or <code>wo</code> (see
 
33260
<a href="#World-Creation">World Creation</a>) are invoked without a default or ignore key. Hence, it is
 
33261
sometimes necessary to retrieve or change the default key of a map.
 
33262
</p>
 
33263
<dl compact="compact">
 
33264
<dt> <b>Syntax:</b></dt>
 
33265
<dd><p><i>defaultkey</i> = <i>mymap</i><b>.defaultkey</b>
 
33266
</p>
 
33267
<p><i>defaultkey</i> = <i>mymap</i><b>[&quot;defaultkey&quot;]</b>
 
33268
</p>
 
33269
<p><i>keylength</i> = <i>mymap</i><b>.keylength</b>
 
33270
</p>
 
33271
<p><i>keylength</i> = <i>mymap</i><b>[&quot;keylength&quot;]</b>
 
33272
</p>
 
33273
<p><i>mymap</i><b>.defaultkey</b> = <i>newkey</i>
 
33274
</p>
 
33275
<p><i>mymap</i><b>[&quot;defaultkey&quot;]</b> = <i>newkey</i>
 
33276
</p>
 
33277
<p><i>mymap</i>:<b>set_default_key</b>(<i>newkey</i>)
 
33278
</p>
 
33279
<p><b>lib.map.set_default_key</b>(<i>mymap</i>, <i>newkey</i>)
 
33280
</p>
 
33281
<dl compact="compact">
 
33282
<dt> <i>defaultkey</i>, <i>newkey</i></dt>
 
33283
<dd><p>A non-empty string.
 
33284
</p>
 
33285
</dd>
 
33286
<dt> <i>mymap</i></dt>
 
33287
<dd><p>A libmap-map.
 
33288
</p>
 
33289
</dd>
 
33290
<dt> <i>keylength</i></dt>
 
33291
<dd><p>A positive integer, which equals the length of the default key.
 
33292
</p></dd>
 
33293
</dl>
 
33294
 
 
33295
</dd>
 
33296
<dt> <b>Syntax Samples:</b></dt>
 
33297
<dd><p>See <a href="#Other-Map-Tasks">Other Map Tasks</a>.
 
33298
</p>
 
33299
</dd>
 
33300
<dt> <b>Details:</b></dt>
 
33301
<dd><p>It typically makes sense to change the default key of a map, when two or more
 
33302
keys can be equally well thought of as being &quot;default&quot;. Such an example occurs
 
33303
during the import of Sokoban levels: While the canonical default key would be
 
33304
the key of the inner free tiles, it is temporarily set to the key of the outer
 
33305
area to allow a simple matching and trimming. It is then set back again:
 
33306
</p><table><tr><td>&nbsp;</td><td><pre class="example">local map = lib.import.level_to_map(level, &quot;\n&quot;, &quot; &quot;)
 
33307
map:replace(&quot;_&quot;)
 
33308
map:replace(&quot;-&quot;)
 
33309
map:replace_outside(&quot; &quot;, &quot;-&quot;)
 
33310
-- Remove redundant walls by outside:
 
33311
-- A wall is redundant, if it is surrounded by &quot;-&quot; or &quot;#&quot;.
 
33312
-- In this case, it can be replaced by &quot;-&quot;.
 
33313
map.defaultkey = &quot;-&quot;
 
33314
map[map:match({{po(0,0), &quot;#&quot;}, {NEIGHBORS_8, &quot;-&quot;, &quot;#&quot;}})] = &quot;-&quot;
 
33315
map = map:trim()
 
33316
map.defaultkey = &quot; &quot;
 
33317
</pre></td></tr></table>
 
33318
<p>See <a href="#lib_002emap_002ematch">lib.map.match</a> and <a href="#lib_002emap_002etrim">lib.map.trim</a> for details on their use of
 
33319
default keys.
 
33320
</p>
 
33321
<p>The keylength of a map can be read, but not written. To change the keylength,
 
33322
a new default key has to be assigned. On the other hand, it is possible to
 
33323
change the default key to a key of different length; however, this rarely makes
 
33324
sense, as each line will be reinterpreted, and the width of the map changes.
 
33325
Still, the width has to fit to the new keylength, otherwise an error is
 
33326
thrown.
 
33327
</p>
 
33328
<p>If you want to change the keylength without reinterpreting each line, you
 
33329
should instead fuse or defuse the map (see <a href="#Map-Fusing">Map Fusing</a>,
 
33330
<a href="#lib_002emap_002edefuse">lib.map.defuse</a>). <a href="#newMap">newMap</a> allows this quite easily:
 
33331
</p><table><tr><td>&nbsp;</td><td><pre class="example">extendedmap = mymap * wo:newMap(&quot; &quot;)
 
33332
restrictedmap = (mymap:defuse())[1] * (mymap:defuse())[3]
 
33333
</pre></td></tr></table>
 
33334
</dd>
 
33335
</dl>
 
33336
 
 
33337
 
 
33338
<hr size="6">
 
33339
<a name="Map-Width-and-Height"></a>
 
33340
<table cellpadding="1" cellspacing="1" border="0">
 
33341
<tr><td valign="middle" align="left">[<a href="#Map-Default-Keys" title="Previous section in reading order"> &lt; </a>]</td>
 
33342
<td valign="middle" align="left">[<a href="#lib_002emap_002ecovers" title="Next section in reading order"> &gt; </a>]</td>
 
33343
<td valign="middle" align="left"> &nbsp; </td>
 
33344
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
33345
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
33346
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
33347
<td valign="middle" align="left"> &nbsp; </td>
 
33348
<td valign="middle" align="left"> &nbsp; </td>
 
33349
<td valign="middle" align="left"> &nbsp; </td>
 
33350
<td valign="middle" align="left"> &nbsp; </td>
 
33351
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
33352
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
33353
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
33354
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
33355
</tr></table>
 
33356
<a name="Map-Width-and-Height-1"></a>
 
33357
<h3 class="subsection">12.4.14 Map Width and Height</h3>
 
33358
 
 
33359
<p>A libmap-map always includes its width and height. These determine for example
 
33360
the exact position of the second map during a concatenation (see
 
33361
<a href="#Connecting-Two-Maps">Connecting Two Maps</a>).
 
33362
</p>
 
33363
<dl compact="compact">
 
33364
<dt> <b>Syntax:</b></dt>
 
33365
<dd><p><i>width</i> = <i>mymap</i><b>.width</b>
 
33366
</p>
 
33367
<p><i>width</i> = <i>mymap</i><b>[&quot;width&quot;]</b>
 
33368
</p>
 
33369
<p><i>height</i> = <i>mymap</i><b>.height</b>
 
33370
</p>
 
33371
<p><i>height</i> = <i>mymap</i><b>[&quot;height&quot;]</b>
 
33372
</p>
 
33373
<dl compact="compact">
 
33374
<dt> <i>width</i>, <i>height</i></dt>
 
33375
<dd><p>Positive integers.
 
33376
</p>
 
33377
</dd>
 
33378
<dt> <i>mymap</i></dt>
 
33379
<dd><p>A libmap-map.
 
33380
</p></dd>
 
33381
</dl>
 
33382
 
 
33383
</dd>
 
33384
<dt> <b>Details:</b></dt>
 
33385
<dd><p>See also <a href="#Other-Map-Tasks">Other Map Tasks</a>.
 
33386
</p>
 
33387
<p>It is not possible (and rarely necessary) to directly change width and height
 
33388
of a map. Instead, you might use <a href="#lib_002emap_002eextend">lib.map.extend</a> to extend a map to a
 
33389
given position, <a href="#lib_002emap_002esub">lib.map.sub</a> to retrieve a rectangular part of a map, or
 
33390
<a href="#lib_002emap_002etrim">lib.map.trim</a> to remove unused lines and columns from the map.
 
33391
</p>
 
33392
<p>Note that width and height are not invariant. They change with many operations,
 
33393
like transformations, concatenations or setting a key outside the former scope
 
33394
of a map.
 
33395
</p>
 
33396
<p>Also note that the upper-left corner of a map has coordinates <code>{0, 0}</code>,
 
33397
so the lower-right corner is <code>{width - 1, height - 1}</code>.
 
33398
</p></dd>
 
33399
</dl>
 
33400
 
 
33401
 
 
33402
<hr size="6">
 
33403
<a name="lib_002emap_002ecovers"></a>
 
33404
<table cellpadding="1" cellspacing="1" border="0">
 
33405
<tr><td valign="middle" align="left">[<a href="#Map-Width-and-Height" title="Previous section in reading order"> &lt; </a>]</td>
 
33406
<td valign="middle" align="left">[<a href="#lib_002emap_002edefuse" title="Next section in reading order"> &gt; </a>]</td>
 
33407
<td valign="middle" align="left"> &nbsp; </td>
 
33408
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
33409
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
33410
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
33411
<td valign="middle" align="left"> &nbsp; </td>
 
33412
<td valign="middle" align="left"> &nbsp; </td>
 
33413
<td valign="middle" align="left"> &nbsp; </td>
 
33414
<td valign="middle" align="left"> &nbsp; </td>
 
33415
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
33416
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
33417
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
33418
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
33419
</tr></table>
 
33420
<a name="lib_002emap_002ecovers-1"></a>
 
33421
<h3 class="subsection">12.4.15 lib.map.covers</h3>
 
33422
<a name="index-lib_002emap_002ecovers"></a>
 
33423
 
 
33424
<p><code>covers</code> checks whether a position is within the scope of a map.
 
33425
</p>
 
33426
<dl compact="compact">
 
33427
<dt> <b>Syntax:</b></dt>
 
33428
<dd><p><i>result</i> = <i>mymap</i>:<b>covers</b>(<i>position</i>)
 
33429
</p>
 
33430
<p><i>result</i> = <b>lib.map.covers</b>(<i>mymap</i>, <i>position</i>)
 
33431
</p>
 
33432
<dl compact="compact">
 
33433
<dt> <i>result</i></dt>
 
33434
<dd><p>A boolean value: <code>true</code>, if <i>position</i> is within the rectangle of grids
 
33435
spanned by <code>(0,0)</code> and <code>(mymap.width - 1, mymap.height - 1)</code>,
 
33436
otherwise <code>false</code>.
 
33437
</p>
 
33438
</dd>
 
33439
<dt> <i>mymap</i></dt>
 
33440
<dd><p>A libmap-map.
 
33441
</p>
 
33442
</dd>
 
33443
<dt> <i>position</i></dt>
 
33444
<dd><p>A positional value (position or table with two entries).
 
33445
</p></dd>
 
33446
</dl>
 
33447
 
 
33448
</dd>
 
33449
<dt> <b>Syntax Samples:</b></dt>
 
33450
<dd><table><tr><td>&nbsp;</td><td><pre class="example">if map1:covers(po(no[&quot;mycoin&quot;]) - po(no[&quot;anchor1&quot;])) then
 
33451
    wo(no[&quot;mycoin&quot;]) = ti[&quot;-&quot;]
 
33452
end
 
33453
</pre></td></tr></table>
 
33454
 
 
33455
</dd>
 
33456
<dt> <b>Details:</b></dt>
 
33457
<dd><p>Floating-point positions are handled as expected, i.e. the position of a marble
 
33458
which is on a grid corresponding to the map lets <code>cover</code> return
 
33459
<code>true</code>.
 
33460
</p>
 
33461
<p>Remember to subtract the anchor of an already drawn map to get the correct
 
33462
information when you use positions of the level world.
 
33463
</p></dd>
 
33464
</dl>
 
33465
 
 
33466
 
 
33467
<hr size="6">
 
33468
<a name="lib_002emap_002edefuse"></a>
 
33469
<table cellpadding="1" cellspacing="1" border="0">
 
33470
<tr><td valign="middle" align="left">[<a href="#lib_002emap_002ecovers" title="Previous section in reading order"> &lt; </a>]</td>
 
33471
<td valign="middle" align="left">[<a href="#lib_002emap_002eextend" title="Next section in reading order"> &gt; </a>]</td>
 
33472
<td valign="middle" align="left"> &nbsp; </td>
 
33473
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
33474
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
33475
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
33476
<td valign="middle" align="left"> &nbsp; </td>
 
33477
<td valign="middle" align="left"> &nbsp; </td>
 
33478
<td valign="middle" align="left"> &nbsp; </td>
 
33479
<td valign="middle" align="left"> &nbsp; </td>
 
33480
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
33481
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
33482
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
33483
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
33484
</tr></table>
 
33485
<a name="lib_002emap_002edefuse-1"></a>
 
33486
<h3 class="subsection">12.4.16 lib.map.defuse</h3>
 
33487
<a name="index-lib_002emap_002edefuse"></a>
 
33488
 
 
33489
<p><code>defuse</code> returns a table of maps of keylength one, which correspond to the
 
33490
first, second, n-th character of each key at each position, respectively.
 
33491
</p>
 
33492
<dl compact="compact">
 
33493
<dt> <b>Syntax:</b></dt>
 
33494
<dd><p><i>result</i> = <i>mymap</i>:<b>defuse</b>()
 
33495
</p>
 
33496
<p><i>result</i> = <b>lib.map.defuse</b>(<i>mymap</i>)
 
33497
</p>
 
33498
<dl compact="compact">
 
33499
<dt> <i>result</i></dt>
 
33500
<dd><p>A non-empty table with maps as entries at integer positions. There are as many
 
33501
maps as the keylength of <code>mymap</code>.
 
33502
</p>
 
33503
</dd>
 
33504
<dt> <i>mymap</i></dt>
 
33505
<dd><p>A libmap-map.
 
33506
</p></dd>
 
33507
</dl>
 
33508
 
 
33509
</dd>
 
33510
<dt> <b>Full Example:</b></dt>
 
33511
<dd><p>Given the following map,
 
33512
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap = wo:newMap(&quot; .&quot;, {&quot;#C# # # # # #C&quot;,
 
33513
                         &quot;# w1.1# .2.2# &quot;,
 
33514
                         &quot;# .1.1D3.2.2# &quot;,
 
33515
                         &quot;# .1.1# .2w2# &quot;,
 
33516
                         &quot;#C# # # # # #C&quot;})
 
33517
</pre></td></tr></table>
 
33518
<p><code>mymap:defuse()</code> will return a table
 
33519
</p><table><tr><td>&nbsp;</td><td><pre class="example">result = {map1, map2}
 
33520
</pre></td></tr></table>
 
33521
<p>containing the following two maps:
 
33522
</p><table><tr><td>&nbsp;</td><td><pre class="example">map1 = wo:newMap(&quot;.&quot;, {&quot;#######&quot;,
 
33523
                       &quot;#w.#..#&quot;,
 
33524
                       &quot;#..D..#&quot;,
 
33525
                       &quot;#..#.w#&quot;,
 
33526
                       &quot;#######&quot;})
 
33527
map2  = wo:newMap(&quot;.&quot;, {&quot;C     C&quot;,
 
33528
                        &quot; 11 22 &quot;,
 
33529
                        &quot; 11322 &quot;,
 
33530
                        &quot; 11 22 &quot;,
 
33531
                        &quot;C     C&quot;})
 
33532
</pre></td></tr></table>
 
33533
 
 
33534
</dd>
 
33535
<dt> <b>Details:</b></dt>
 
33536
<dd><p>The default keys of the defused maps are the single characters of the default
 
33537
key, in corresponding sequence.
 
33538
</p>
 
33539
<p>The inverse of defusing is <a href="#Map-Fusing">Map Fusing</a>.
 
33540
</p></dd>
 
33541
</dl>
 
33542
 
 
33543
 
 
33544
<hr size="6">
 
33545
<a name="lib_002emap_002eextend"></a>
 
33546
<table cellpadding="1" cellspacing="1" border="0">
 
33547
<tr><td valign="middle" align="left">[<a href="#lib_002emap_002edefuse" title="Previous section in reading order"> &lt; </a>]</td>
 
33548
<td valign="middle" align="left">[<a href="#lib_002emap_002ematch" title="Next section in reading order"> &gt; </a>]</td>
 
33549
<td valign="middle" align="left"> &nbsp; </td>
 
33550
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
33551
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
33552
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
33553
<td valign="middle" align="left"> &nbsp; </td>
 
33554
<td valign="middle" align="left"> &nbsp; </td>
 
33555
<td valign="middle" align="left"> &nbsp; </td>
 
33556
<td valign="middle" align="left"> &nbsp; </td>
 
33557
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
33558
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
33559
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
33560
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
33561
</tr></table>
 
33562
<a name="lib_002emap_002eextend-1"></a>
 
33563
<h3 class="subsection">12.4.17 lib.map.extend</h3>
 
33564
<a name="index-lib_002emap_002eextend"></a>
 
33565
 
 
33566
<p><code>extend</code> changes a map in-place such that it covers a given position. If
 
33567
the position already is within the scope of the map, nothing happens.
 
33568
</p>
 
33569
<dl compact="compact">
 
33570
<dt> <b>Syntax:</b></dt>
 
33571
<dd><p><i>mymap</i>:<b>extend</b>(<i>position</i>)
 
33572
</p>
 
33573
<p><b>lib.map.extend</b>(<i>mymap</i>, <i>position</i>)
 
33574
</p>
 
33575
<dl compact="compact">
 
33576
<dt> <i>mymap</i></dt>
 
33577
<dd><p>A libmap-map.
 
33578
</p>
 
33579
</dd>
 
33580
<dt> <i>position</i></dt>
 
33581
<dd><p>A positional value (position, table with two entries, valid object, or string).
 
33582
</p></dd>
 
33583
</dl>
 
33584
 
 
33585
</dd>
 
33586
<dt> <b>Syntax Samples:</b></dt>
 
33587
<dd><table><tr><td>&nbsp;</td><td><pre class="example">mymap:extend(po(no[&quot;mycoin1&quot;]) - po(no[&quot;anchor1&quot;]))
 
33588
mymap:extend(&quot;secondanchor&quot;)
 
33589
</pre></td></tr></table>
 
33590
 
 
33591
</dd>
 
33592
<dt> <b>Details:</b></dt>
 
33593
<dd><p>Negative coordinates are silently ignored. However, if the other coordinate
 
33594
makes sense, the map might still get extended.
 
33595
</p>
 
33596
<p>Floating-point coordinates are rounded to a grid position
 
33597
(see <a href="#Position-Grid-Rounding">Position Grid Rounding</a>).
 
33598
</p></dd>
 
33599
</dl>
 
33600
 
 
33601
 
 
33602
<hr size="6">
 
33603
<a name="lib_002emap_002ematch"></a>
 
33604
<table cellpadding="1" cellspacing="1" border="0">
 
33605
<tr><td valign="middle" align="left">[<a href="#lib_002emap_002eextend" title="Previous section in reading order"> &lt; </a>]</td>
 
33606
<td valign="middle" align="left">[<a href="#lib_002emap_002epaste" title="Next section in reading order"> &gt; </a>]</td>
 
33607
<td valign="middle" align="left"> &nbsp; </td>
 
33608
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
33609
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
33610
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
33611
<td valign="middle" align="left"> &nbsp; </td>
 
33612
<td valign="middle" align="left"> &nbsp; </td>
 
33613
<td valign="middle" align="left"> &nbsp; </td>
 
33614
<td valign="middle" align="left"> &nbsp; </td>
 
33615
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
33616
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
33617
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
33618
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
33619
</tr></table>
 
33620
<a name="lib_002emap_002ematch-1"></a>
 
33621
<h3 class="subsection">12.4.18 lib.map.match</h3>
 
33622
<a name="index-lib_002emap_002ematch"></a>
 
33623
 
 
33624
<p>You may use <code>match</code> to search for patterns or keys within a map.
 
33625
<code>match</code> then returns a position list of grid positions.
 
33626
</p>
 
33627
<dl compact="compact">
 
33628
<dt> <b>Syntax:</b></dt>
 
33629
<dd><p><i>result</i> = <i>mymap</i>:<b>match</b>()
 
33630
</p>
 
33631
<p><i>result</i> = <i>mymap</i>:<b>match</b>(<i>tilekey</i>)
 
33632
</p>
 
33633
<p><i>result</i> = <i>mymap</i>:<b>match</b>(<i>conditionlist</i>)
 
33634
</p>
 
33635
<p><i>result</i> = <i>mymap</i>:<b>match</b>({conditionlist})
 
33636
</p>
 
33637
<p><i>result</i> = <b>lib.map.match</b>(<i>mymap</i>, <i>conditionlist</i>)
 
33638
</p>
 
33639
<dl compact="compact">
 
33640
<dt> <i>result</i></dt>
 
33641
<dd><p>The position list of all matched positions.
 
33642
</p>
 
33643
</dd>
 
33644
<dt> <i>mymap</i></dt>
 
33645
<dd><p>A libmap-map.
 
33646
</p>
 
33647
</dd>
 
33648
<dt> <i>conditionlist</i> = condition, condition, ...</dt>
 
33649
<dd><p>A list of conditions. A position is matched if and only if all conditions of the
 
33650
<i>conditionlist</i> are matched.
 
33651
</p>
 
33652
</dd>
 
33653
<dt> <i>condition</i> = {<i>positionlist</i>, <i>tilekey</i>, <i>tilekey</i>, ...}</dt>
 
33654
<dd><p>A position <code>pos</code> is matched by this condition if and only if for each position
 
33655
<code>relativepos</code> in <code>positionlist</code> the tilekey
 
33656
<code>mymap[pos + relativepos]</code> equals one of the tilekeys in the list. If
 
33657
<code>pos + relativepos</code> is outside the scope of <i>mymap</i>, its tilekey is the
 
33658
default key.
 
33659
</p>
 
33660
</dd>
 
33661
<dt> <i>tilekey</i></dt>
 
33662
<dd><p>Non-empty string of the same length as the default key of <code>mymap</code>
 
33663
(no wildcards).
 
33664
</p>
 
33665
</dd>
 
33666
<dt> <i>positionlist</i></dt>
 
33667
<dd><p>A single relative position or a position list of relative positions.
 
33668
</p></dd>
 
33669
</dl>
 
33670
 
 
33671
</dd>
 
33672
<dt> <b>Full Example:</b></dt>
 
33673
<dd><p>Given the following map,
 
33674
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap = wo:newMap(&quot; &quot;, {&quot;#####&quot;,
 
33675
                        &quot;#w# #&quot;,
 
33676
                        &quot;# D #&quot;,
 
33677
                        &quot;# #w#&quot;,
 
33678
                        &quot;#####&quot;})
 
33679
</pre></td></tr></table>
 
33680
<p><code>mymap:match(&quot;#&quot;)</code> will return a position list of all walls <code>&quot;#&quot;</code>, it
 
33681
is identical to <code>mymap:match({po(0, 0), &quot;#&quot;})</code> and
 
33682
<code>mymap:match({{po(0, 0), &quot;#&quot;}})</code>.
 
33683
</p>
 
33684
<p>We may search for all positions <code>pos</code> which are between two walls with:
 
33685
</p><table><tr><td>&nbsp;</td><td><pre class="example">result = mymap:match({po(-1, 0), &quot;#&quot;}, {po(1, 0), &quot;#&quot;})
 
33686
</pre></td></tr></table>
 
33687
<p>The two positions <code>po(-1, 0)</code> and <code>po(1, 0)</code> are relative to the
 
33688
returned position. This returns a position list including positions like the
 
33689
wall at <code>{1,0}</code> (which indeed is between two walls at <code>po(1, 0) +
 
33690
po(-1, 0)</code> and <code>po(1, 0) + po(1, 0)</code>), but also <code>{1,1}</code>. If we want
 
33691
to exclude walls at our position, we have to give all other keys instead:
 
33692
</p><table><tr><td>&nbsp;</td><td><pre class="example">result = mymap:match({po(-1, 0), &quot;#&quot;}, {po(1, 0), &quot;#&quot;}, {po(0, 0), &quot;w&quot;, &quot; &quot;, &quot;D&quot;})
 
33693
</pre></td></tr></table>
 
33694
 
 
33695
<p>Finally, <code>mymap:match()</code> will return all positions of the map, i.e. a
 
33696
position list with all positions between <code>{0,0}</code> and
 
33697
<code>{mymap.width - 1, mymap.height - 1}</code>.
 
33698
</p>
 
33699
<p>See also <a href="#Requesting-and-Changing-Single-Map-Entries">Requesting and Changing Single Map Entries</a>.
 
33700
</p>
 
33701
</dd>
 
33702
<dt> <b>Details:</b></dt>
 
33703
<dd><p>You can, but need not pack the condition list <code>match</code> into a single table.
 
33704
This possibility exists to easily work with automatically generated condition
 
33705
lists, but should be avoided in other cases due to readability.
 
33706
</p>
 
33707
<p>The result of <code>match</code> is sorted primarily vertical, and secondarily
 
33708
horizontal, i.e. a typical result would be:
 
33709
</p><table><tr><td>&nbsp;</td><td><pre class="example">po(1, 1) .. po(1, 3) .. po(1, 4) .. po(2, 2) .. po(2, 3) .. po(5, 1)
 
33710
</pre></td></tr></table>
 
33711
 
 
33712
<p>If you feed the position list back into a replacing command, like in
 
33713
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap = wo:newMap(&quot; &quot;, {&quot;####&quot;,
 
33714
                        &quot;#  #&quot;,
 
33715
                        &quot;####&quot;})
 
33716
mymap[mymap:match({NEIGHBORS_8, &quot;#&quot;})] = &quot;#&quot;
 
33717
</pre></td></tr></table>
 
33718
<p>remember that the newly added changes could not be respected by the
 
33719
<code>match</code>; so in the above example, the match returns an empty position list
 
33720
and no tilekey is subsequently replaced.
 
33721
</p>
 
33722
<p>Floating-point coordinates are rounded to a grid position
 
33723
(see <a href="#Position-Grid-Rounding">Position Grid Rounding</a>).
 
33724
</p></dd>
 
33725
</dl>
 
33726
 
 
33727
 
 
33728
<hr size="6">
 
33729
<a name="lib_002emap_002epaste"></a>
 
33730
<table cellpadding="1" cellspacing="1" border="0">
 
33731
<tr><td valign="middle" align="left">[<a href="#lib_002emap_002ematch" title="Previous section in reading order"> &lt; </a>]</td>
 
33732
<td valign="middle" align="left">[<a href="#lib_002emap_002eprint" title="Next section in reading order"> &gt; </a>]</td>
 
33733
<td valign="middle" align="left"> &nbsp; </td>
 
33734
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
33735
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
33736
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
33737
<td valign="middle" align="left"> &nbsp; </td>
 
33738
<td valign="middle" align="left"> &nbsp; </td>
 
33739
<td valign="middle" align="left"> &nbsp; </td>
 
33740
<td valign="middle" align="left"> &nbsp; </td>
 
33741
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
33742
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
33743
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
33744
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
33745
</tr></table>
 
33746
<a name="lib_002emap_002epaste-1"></a>
 
33747
<h3 class="subsection">12.4.19 lib.map.paste</h3>
 
33748
<a name="index-lib_002emap_002epaste"></a>
 
33749
 
 
33750
<p><code>paste</code> copies a map into another map at a given position. This command
 
33751
works in-place, i.e. the receiving map is changed, instead of returning a new map.
 
33752
</p>
 
33753
<dl compact="compact">
 
33754
<dt> <b>Syntax:</b></dt>
 
33755
<dd><p><i>map1</i>:<b>paste</b>(<i>map2</i>, <i>position</i>)
 
33756
</p>
 
33757
<p><b>lib.map.paste</b>(<i>map1</i>, <i>map2</i>, <i>position</i>)
 
33758
</p>
 
33759
<dl compact="compact">
 
33760
<dt> <i>map1</i></dt>
 
33761
<dd><p>The libmap-map to receive the copy.
 
33762
</p>
 
33763
</dd>
 
33764
<dt> <i>map2</i></dt>
 
33765
<dd><p>The libmap-map which is to be copied into <code>map1</code>.
 
33766
</p>
 
33767
</dd>
 
33768
<dt> <i>position</i></dt>
 
33769
<dd><p>A positional value (position, table with two entries, valid object, position
 
33770
list, group, or string). The upper-left position <code>{0, 0}</code> of <code>map2</code>
 
33771
is inserted at this position (or these positions) into <code>map1</code>.
 
33772
</p></dd>
 
33773
</dl>
 
33774
 
 
33775
</dd>
 
33776
<dt> <b>Full Example:</b></dt>
 
33777
<dd><table><tr><td>&nbsp;</td><td><pre class="example">map1 = wo:newMap(&quot; &quot;, {&quot;#######&quot;,
 
33778
                       &quot;#w #  #&quot;,
 
33779
                       &quot;#  D  #&quot;,
 
33780
                       &quot;#  # w#&quot;,
 
33781
                       &quot;#######&quot;})
 
33782
map2 = wo:newMap(&quot;.&quot;, {&quot;F.E&quot;,
 
33783
                       &quot;E.E&quot;})
 
33784
</pre></td></tr></table>
 
33785
<p>In this situation, <code>map1:paste(map2, po(1, 1) .. po(5, 3))</code> will change
 
33786
map1 into:
 
33787
</p><table><tr><td>&nbsp;</td><td><pre class="example">{&quot;####### &quot;,
 
33788
 &quot;#F E  # &quot;,
 
33789
 &quot;#E E  # &quot;,
 
33790
 &quot;#  # F#E&quot;,
 
33791
 &quot;#####E#E&quot;}
 
33792
</pre></td></tr></table>
 
33793
 
 
33794
</dd>
 
33795
<dt> <b>Details:</b></dt>
 
33796
<dd><p>The receiving map will be extended with its default key as necessary.
 
33797
</p>
 
33798
<p>Each tilekey of the copied map which equals its default key will be ignored
 
33799
during the pasting process.
 
33800
</p>
 
33801
<p>Floating-point coordinates are rounded to a grid position
 
33802
(see <a href="#Position-Grid-Rounding">Position Grid Rounding</a>).
 
33803
</p>
 
33804
<p>If a part of a map is to be copied to a position with negative coordinates, an
 
33805
error is thrown. However, if this part is to be ignored anyway (because it is
 
33806
the default key), then the negative coordinate is silently ignored.
 
33807
If for example we have
 
33808
</p><table><tr><td>&nbsp;</td><td><pre class="example">map1 = wo:newMap(&quot; &quot;, {&quot;#######&quot;,
 
33809
                       &quot;#w #  #&quot;,
 
33810
                       &quot;#  D  #&quot;,
 
33811
                       &quot;#  # w#&quot;,
 
33812
                       &quot;#######&quot;})
 
33813
map2 = wo:newMap(&quot;.&quot;, {&quot;.FE&quot;,
 
33814
                       &quot;.EE&quot;})
 
33815
</pre></td></tr></table>
 
33816
<p>then <code>map1:paste(map2, po(-1, 0))</code> will change
 
33817
map1 into
 
33818
</p><table><tr><td>&nbsp;</td><td><pre class="example">{&quot;FE#####&quot;,
 
33819
 &quot;EE #  #&quot;,
 
33820
 &quot;#  D  #&quot;,
 
33821
 &quot;#  #  #&quot;,
 
33822
 &quot;#######&quot;}
 
33823
</pre></td></tr></table>
 
33824
<p>while <code>map1:paste(map2, po(0, -1))</code> throws an error.
 
33825
</p>
 
33826
<p>A map can be pasted multiple times into another map by providing a position
 
33827
list or object group. The sequence of pastings is then given by the sequence of
 
33828
the list or group, so the pasting at the second entry might overwrite the
 
33829
changes done by the first entry.
 
33830
</p></dd>
 
33831
</dl>
 
33832
 
 
33833
 
 
33834
<hr size="6">
 
33835
<a name="lib_002emap_002eprint"></a>
 
33836
<table cellpadding="1" cellspacing="1" border="0">
 
33837
<tr><td valign="middle" align="left">[<a href="#lib_002emap_002epaste" title="Previous section in reading order"> &lt; </a>]</td>
 
33838
<td valign="middle" align="left">[<a href="#lib_002emap_002ereplace" title="Next section in reading order"> &gt; </a>]</td>
 
33839
<td valign="middle" align="left"> &nbsp; </td>
 
33840
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
33841
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
33842
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
33843
<td valign="middle" align="left"> &nbsp; </td>
 
33844
<td valign="middle" align="left"> &nbsp; </td>
 
33845
<td valign="middle" align="left"> &nbsp; </td>
 
33846
<td valign="middle" align="left"> &nbsp; </td>
 
33847
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
33848
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
33849
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
33850
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
33851
</tr></table>
 
33852
<a name="lib_002emap_002eprint-1"></a>
 
33853
<h3 class="subsection">12.4.20 lib.map.print</h3>
 
33854
<a name="index-lib_002emap_002eprint"></a>
 
33855
 
 
33856
<p><code>print</code> prints a map to standard output. You may use this command for
 
33857
debugging purposes, or to support development or translation of a level, but it
 
33858
should not be used in the released form of a level.
 
33859
</p>
 
33860
<dl compact="compact">
 
33861
<dt> <b>Syntax:</b></dt>
 
33862
<dd><p><i>mymap</i>:<b>print</b>([<i>withXYCounts</i> [, <i>left_separator</i> [, <i>right_separator</i>]]])
 
33863
</p>
 
33864
<p><b>lib.map.print</b>(<i>mymap</i> [, <i>withXYCounts</i> [, <i>left_separator</i> [, <i>right_separator</i>]]])
 
33865
</p>
 
33866
<dl compact="compact">
 
33867
<dt> <i>mymap</i></dt>
 
33868
<dd><p>A libmap-map.
 
33869
</p>
 
33870
</dd>
 
33871
<dt> <i>withXYCounts</i></dt>
 
33872
<dd><p>A boolean value, <code>false</code> by default.
 
33873
</p>
 
33874
</dd>
 
33875
<dt> <i>left_separator</i>, <i>right_separator</i></dt>
 
33876
<dd><p>Strings to be printed on the left and on the right side of the map, empty
 
33877
strings by default.
 
33878
</p></dd>
 
33879
</dl>
 
33880
 
 
33881
</dd>
 
33882
<dt> <b>Full Example:</b></dt>
 
33883
<dd><table><tr><td>&nbsp;</td><td><pre class="example">mymap = wo:newMap(&quot; &quot;, {&quot;#######&quot;,
 
33884
                        &quot;#w #  #&quot;,
 
33885
                        &quot;#  D  #&quot;,
 
33886
                        &quot;#  # w#&quot;,
 
33887
                        &quot;#######&quot;})
 
33888
</pre></td></tr></table>
 
33889
<p>Then <code>mymap:print(true, &quot; -&gt; &quot;, &quot;|&quot;)</code> prints the following to standard output:
 
33890
</p><table><tr><td>&nbsp;</td><td><pre class="example">  -&gt; 0123456|
 
33891
0 -&gt; #######|
 
33892
1 -&gt; #w #  #|
 
33893
2 -&gt; #  D  #|
 
33894
3 -&gt; #  # w#|
 
33895
4 -&gt; #######|
 
33896
</pre></td></tr></table>
 
33897
 
 
33898
</dd>
 
33899
<dt> <b>Details:</b></dt>
 
33900
<dd><p>If you use maps wider than ten times its keylength, the x-count will show
 
33901
only the last digits of the x coordinate.
 
33902
</p>
 
33903
<p>If you want to insert lines between the columns, you can fuse the map
 
33904
with your desired character, like in <code>(mymap * &quot;|&quot;):print(...)</code>.
 
33905
</p>
 
33906
<p>You can actually use <code>print</code> to generate a map for a level file if you
 
33907
provide appropriate separators:
 
33908
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap:print(false, &quot;    \&quot;&quot;, &quot;\&quot;,&quot;)
 
33909
</pre></td></tr></table>
 
33910
</dd>
 
33911
</dl>
 
33912
 
 
33913
 
 
33914
<hr size="6">
 
33915
<a name="lib_002emap_002ereplace"></a>
 
33916
<table cellpadding="1" cellspacing="1" border="0">
 
33917
<tr><td valign="middle" align="left">[<a href="#lib_002emap_002eprint" title="Previous section in reading order"> &lt; </a>]</td>
 
33918
<td valign="middle" align="left">[<a href="#lib_002emap_002ereplace_005foutside" title="Next section in reading order"> &gt; </a>]</td>
 
33919
<td valign="middle" align="left"> &nbsp; </td>
 
33920
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
33921
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
33922
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
33923
<td valign="middle" align="left"> &nbsp; </td>
 
33924
<td valign="middle" align="left"> &nbsp; </td>
 
33925
<td valign="middle" align="left"> &nbsp; </td>
 
33926
<td valign="middle" align="left"> &nbsp; </td>
 
33927
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
33928
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
33929
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
33930
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
33931
</tr></table>
 
33932
<a name="lib_002emap_002ereplace-1"></a>
 
33933
<h3 class="subsection">12.4.21 lib.map.replace</h3>
 
33934
<a name="index-lib_002emap_002ereplace"></a>
 
33935
 
 
33936
<p><code>replace</code> replaces all occurrences of a single tile key in a map in-place
 
33937
with another tile key.
 
33938
</p>
 
33939
<dl compact="compact">
 
33940
<dt> <b>Syntax:</b></dt>
 
33941
<dd><p><i>mymap</i>:<b>replace</b>(<i>oldkey</i> [, <i>newkey</i>])
 
33942
</p>
 
33943
<p><b>lib.map.replace</b>(<i>mymap</i>, <i>oldkey</i> [, <i>newkey</i>])
 
33944
</p>
 
33945
<dl compact="compact">
 
33946
<dt> <i>mymap</i></dt>
 
33947
<dd><p>A libmap-map.
 
33948
</p>
 
33949
</dd>
 
33950
<dt> <i>oldkey</i></dt>
 
33951
<dd><p>A non-empty string of the same length as <code>mymap</code>&rsquo;s default key.
 
33952
</p>
 
33953
</dd>
 
33954
<dt> <i>newkey</i></dt>
 
33955
<dd><p>A non-empty string of the same length as <code>mymap</code>&rsquo;s default key, which is the
 
33956
replacement for <code>oldkey</code>. The default replacement key is the default key itself.
 
33957
</p></dd>
 
33958
</dl>
 
33959
 
 
33960
</dd>
 
33961
<dt> <b>Syntax Samples:</b></dt>
 
33962
<dd><table><tr><td>&nbsp;</td><td><pre class="example">mymap:replace(&quot;#&quot;, &quot;-&quot;)
 
33963
</pre></td></tr></table>
 
33964
<p>will change <code>mymap</code> in such a way that each <code>&quot;#&quot;</code> is replaced by
 
33965
<code>&quot;-&quot;</code>. If <code>&quot;-&quot;</code> is omitted, each <code>&quot;#&quot;</code> is replaced by the
 
33966
default key instead.
 
33967
</p>
 
33968
</dd>
 
33969
<dt> <b>Details:</b></dt>
 
33970
<dd><p>&lsquo;<samp>mymap:replace(tile1, tile2)</samp>&rsquo; is equivalent to
 
33971
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap[mymap:match(tile1)] = tile2 or mymap.defaultkey
 
33972
</pre></td></tr></table>
 
33973
<p>but faster, because no position list is constructed in between (see
 
33974
<a href="#lib_002emap_002ematch">lib.map.match</a>).
 
33975
</p>
 
33976
<p>See also <a href="#lib_002emap_002ereplace_005foutside">lib.map.replace_outside</a> and
 
33977
<a href="#Requesting-and-Changing-Single-Map-Entries">Requesting and Changing Single Map Entries</a>.
 
33978
</p></dd>
 
33979
</dl>
 
33980
 
 
33981
 
 
33982
<hr size="6">
 
33983
<a name="lib_002emap_002ereplace_005foutside"></a>
 
33984
<table cellpadding="1" cellspacing="1" border="0">
 
33985
<tr><td valign="middle" align="left">[<a href="#lib_002emap_002ereplace" title="Previous section in reading order"> &lt; </a>]</td>
 
33986
<td valign="middle" align="left">[<a href="#lib_002emap_002esub" title="Next section in reading order"> &gt; </a>]</td>
 
33987
<td valign="middle" align="left"> &nbsp; </td>
 
33988
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
33989
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
33990
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
33991
<td valign="middle" align="left"> &nbsp; </td>
 
33992
<td valign="middle" align="left"> &nbsp; </td>
 
33993
<td valign="middle" align="left"> &nbsp; </td>
 
33994
<td valign="middle" align="left"> &nbsp; </td>
 
33995
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
33996
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
33997
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
33998
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
33999
</tr></table>
 
34000
<a name="lib_002emap_002ereplace_005foutside-1"></a>
 
34001
<h3 class="subsection">12.4.22 lib.map.replace_outside</h3>
 
34002
<a name="index-lib_002emap_002ereplace_005foutside"></a>
 
34003
 
 
34004
<p><code>replace_outside</code> is a very specialized command, which is used to replace
 
34005
all occurrences of a tile key which are connected to the border of the map by a
 
34006
path of this tile key with another tile key. The replacement is done in-place,
 
34007
i.e. no new map is created or returned.
 
34008
</p>
 
34009
<dl compact="compact">
 
34010
<dt> <b>Syntax:</b></dt>
 
34011
<dd><p><i>mymap</i>:<b>replace_outside</b>(<i>oldkey</i> [, <i>newkey</i>])
 
34012
</p>
 
34013
<p><b>lib.map.replace_outside</b>(<i>mymap</i>, <i>oldkey</i> [, <i>newkey</i>])
 
34014
</p>
 
34015
<dl compact="compact">
 
34016
<dt> <i>mymap</i></dt>
 
34017
<dd><p>A libmap-map.
 
34018
</p>
 
34019
</dd>
 
34020
<dt> <i>oldkey</i></dt>
 
34021
<dd><p>A non-empty string of the same length as <code>mymap</code>&rsquo;s default key.
 
34022
</p>
 
34023
</dd>
 
34024
<dt> <i>newkey</i></dt>
 
34025
<dd><p>A non-empty string of the same length as <code>mymap</code>&rsquo;s default key, which is the
 
34026
replacement for <code>oldkey</code>. The default replacement key is the default key itself.
 
34027
</p></dd>
 
34028
</dl>
 
34029
 
 
34030
</dd>
 
34031
<dt> <b>Syntax Samples:</b></dt>
 
34032
<dd><p>See <a href="#Other-Map-Tasks">Other Map Tasks</a>.
 
34033
</p>
 
34034
</dd>
 
34035
<dt> <b>Details:</b></dt>
 
34036
<dd><p><code>replace_outside</code> shows similarities with <a href="#lib_002emap_002ereplace">lib.map.replace</a> and
 
34037
<a href="#lib_002emap_002etrim">lib.map.trim</a>. It is the only universal way to handle the area near
 
34038
the border of a map, and can be combined with <a href="#lib_002emap_002ematch">lib.map.match</a> and
 
34039
<a href="#lib_002emap_002etrim">lib.map.trim</a> to show its full potential.
 
34040
</p>
 
34041
<p>Because of its recursive nature, old and new tile key must be different; in
 
34042
contrast to the situation of <a href="#lib_002emap_002ereplace">lib.map.replace</a> identical tile keys are not
 
34043
silently ignored, but throw an error message.
 
34044
</p></dd>
 
34045
</dl>
 
34046
 
 
34047
 
 
34048
<hr size="6">
 
34049
<a name="lib_002emap_002esub"></a>
 
34050
<table cellpadding="1" cellspacing="1" border="0">
 
34051
<tr><td valign="middle" align="left">[<a href="#lib_002emap_002ereplace_005foutside" title="Previous section in reading order"> &lt; </a>]</td>
 
34052
<td valign="middle" align="left">[<a href="#lib_002emap_002etrim" title="Next section in reading order"> &gt; </a>]</td>
 
34053
<td valign="middle" align="left"> &nbsp; </td>
 
34054
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
34055
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
34056
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
34057
<td valign="middle" align="left"> &nbsp; </td>
 
34058
<td valign="middle" align="left"> &nbsp; </td>
 
34059
<td valign="middle" align="left"> &nbsp; </td>
 
34060
<td valign="middle" align="left"> &nbsp; </td>
 
34061
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
34062
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
34063
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
34064
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
34065
</tr></table>
 
34066
<a name="lib_002emap_002esub-1"></a>
 
34067
<h3 class="subsection">12.4.23 lib.map.sub</h3>
 
34068
<a name="index-lib_002emap_002esub"></a>
 
34069
 
 
34070
<p><code>sub</code> returns a copy of a rectangular section of a map as a new map.
 
34071
</p>
 
34072
<dl compact="compact">
 
34073
<dt> <b>Syntax:</b></dt>
 
34074
<dd><p><i>submap</i> = <i>mymap</i>:<b>sub</b>(<i>upperleft</i>, <i>lowerright</i>)
 
34075
</p>
 
34076
<p><i>submap</i> = <i>mymap</i>:<b>sub</b>(<i>upperleft</i>, <i>width</i>, <i>height</i>)
 
34077
</p>
 
34078
<p><i>submap</i> = <b>lib.map.sub</b>(<i>mymap</i>, <i>upperleft</i>, <i>lowerright</i>)
 
34079
</p>
 
34080
<p><i>submap</i> = <b>lib.map.sub</b>(<i>mymap</i>, <i>upperleft</i>, <i>width</i>, <i>height</i>)
 
34081
</p>
 
34082
<dl compact="compact">
 
34083
<dt> <i>submap</i></dt>
 
34084
<dd><p>A libmap-map, the rectangular section of <code>mymap</code>.
 
34085
</p>
 
34086
</dd>
 
34087
<dt> <i>mymap</i></dt>
 
34088
<dd><p>A libmap-map.
 
34089
</p>
 
34090
</dd>
 
34091
<dt> <i>upperleft</i>, <i>lowerright</i></dt>
 
34092
<dd><p>Positional values (position, valid object, table with two entries, or name of a
 
34093
named position.
 
34094
</p>
 
34095
</dd>
 
34096
<dt> <i>width</i>, <i>height</i></dt>
 
34097
<dd><p>Positive integers.
 
34098
</p></dd>
 
34099
</dl>
 
34100
 
 
34101
</dd>
 
34102
<dt> <b>Syntax Samples:</b></dt>
 
34103
<dd><p>See <a href="#Other-Map-Tasks">Other Map Tasks</a>.
 
34104
</p>
 
34105
</dd>
 
34106
<dt> <b>Details:</b></dt>
 
34107
<dd><p>If the bottom right-hand corner overlaps the area of <code>mymap</code>, the resulting
 
34108
<code>submap</code> will still be just the rectangular section of <code>mymap</code>, i.e.
 
34109
width and height can be less than the arguments specified. Use
 
34110
<code>submap:extend(width, height)</code> to ensure the full width and height.
 
34111
</p>
 
34112
<p>Floating point positions are rounded to grid positions, and the lower-right
 
34113
corner may not have coordinates less than those of the upper-left corner,
 
34114
otherwise an error is thrown.
 
34115
</p>
 
34116
<p>The default key of the submap is the default key of the original map.
 
34117
</p>
 
34118
<p>The upper-left corner of the submap of course is <code>{0,0}</code>, i.e. the
 
34119
coordinates are shifted accordingly.
 
34120
</p></dd>
 
34121
</dl>
 
34122
 
 
34123
 
 
34124
<hr size="6">
 
34125
<a name="lib_002emap_002etrim"></a>
 
34126
<table cellpadding="1" cellspacing="1" border="0">
 
34127
<tr><td valign="middle" align="left">[<a href="#lib_002emap_002esub" title="Previous section in reading order"> &lt; </a>]</td>
 
34128
<td valign="middle" align="left">[<a href="#Map-Transformation-Index-and-MAP_005fALL" title="Next section in reading order"> &gt; </a>]</td>
 
34129
<td valign="middle" align="left"> &nbsp; </td>
 
34130
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
34131
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
34132
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
34133
<td valign="middle" align="left"> &nbsp; </td>
 
34134
<td valign="middle" align="left"> &nbsp; </td>
 
34135
<td valign="middle" align="left"> &nbsp; </td>
 
34136
<td valign="middle" align="left"> &nbsp; </td>
 
34137
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
34138
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
34139
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
34140
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
34141
</tr></table>
 
34142
<a name="lib_002emap_002etrim-1"></a>
 
34143
<h3 class="subsection">12.4.24 lib.map.trim</h3>
 
34144
<a name="index-lib_002emap_002etrim"></a>
 
34145
 
 
34146
<p><code>trim</code> returns the smallest rectangular section of a map as new map such
 
34147
that its border consists of a given tile key only, i.e. it trims the original
 
34148
map from the North, East, South, and West.
 
34149
</p>
 
34150
<dl compact="compact">
 
34151
<dt> <b>Syntax:</b></dt>
 
34152
<dd><p><i>trimmedmap</i> = <i>mymap</i>:<b>trim</b>([<i>tilekey</i>])
 
34153
</p>
 
34154
<p><i>trimmedmap</i> = <b>lib.map.trim</b>(<i>mymap</i> [, <i>tilekey</i>])
 
34155
</p>
 
34156
<dl compact="compact">
 
34157
<dt> <i>trimmedmap</i></dt>
 
34158
<dd><p>A libmap-map, the trimmed copy of <code>mymap</code>.
 
34159
</p>
 
34160
</dd>
 
34161
<dt> <i>mymap</i></dt>
 
34162
<dd><p>A libmap-map.
 
34163
</p>
 
34164
</dd>
 
34165
<dt> <i>tilekey</i></dt>
 
34166
<dd><p>A non-empty string of the same length as the default key. If omitted, the
 
34167
default key is used instead.
 
34168
</p></dd>
 
34169
</dl>
 
34170
 
 
34171
</dd>
 
34172
<dt> <b>Full Example:</b></dt>
 
34173
<dd><p>With the following map:
 
34174
</p><table><tr><td>&nbsp;</td><td><pre class="example">mymap = wo:newMap(&quot; &quot;, {&quot;#######&quot;,
 
34175
                        &quot;#w #  #&quot;,
 
34176
                        &quot;#  D  #&quot;,
 
34177
                        &quot;#  # w#&quot;,
 
34178
                        &quot;#######&quot;})
 
34179
</pre></td></tr></table>
 
34180
<p>Trimming with &lsquo;<samp>mymap:trim()</samp>&rsquo; will return just a copy of the original map,
 
34181
but &lsquo;<samp>mymap:trim(&quot;#&quot;)</samp>&rsquo; returns a map as follows:
 
34182
</p><table><tr><td>&nbsp;</td><td><pre class="example">{&quot;w #  &quot;,
 
34183
 &quot;  D  &quot;,
 
34184
 &quot;  # w&quot;})
 
34185
</pre></td></tr></table>
 
34186
 
 
34187
</dd>
 
34188
<dt> <b>Details:</b></dt>
 
34189
<dd><p>The default key of the trimmed map is the default key of the original map.
 
34190
</p>
 
34191
<p>If the original map consists of the trimmed key only, then <code>trim</code> returns
 
34192
a 1x1-map with the trimmed key as only entry, and the default key of the
 
34193
original map.
 
34194
</p></dd>
 
34195
</dl>
 
34196
 
 
34197
 
 
34198
<hr size="6">
 
34199
<a name="Map-Transformation-Index-and-MAP_005fALL"></a>
 
34200
<table cellpadding="1" cellspacing="1" border="0">
 
34201
<tr><td valign="middle" align="left">[<a href="#lib_002emap_002etrim" title="Previous section in reading order"> &lt; </a>]</td>
 
34202
<td valign="middle" align="left">[<a href="#Map-Transformation-Composition-and-Powers" title="Next section in reading order"> &gt; </a>]</td>
 
34203
<td valign="middle" align="left"> &nbsp; </td>
 
34204
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
34205
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
34206
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
34207
<td valign="middle" align="left"> &nbsp; </td>
 
34208
<td valign="middle" align="left"> &nbsp; </td>
 
34209
<td valign="middle" align="left"> &nbsp; </td>
 
34210
<td valign="middle" align="left"> &nbsp; </td>
 
34211
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
34212
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
34213
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
34214
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
34215
</tr></table>
 
34216
<a name="Map-Transformation-Index-and-MAP_005fALL-1"></a>
 
34217
<h3 class="subsection">12.4.25 Map Transformation Index and MAP_ALL</h3>
 
34218
 
 
34219
<p>All eight transformation constants (see <a href="#map-read-directions">map read directions</a>,
 
34220
<a href="#Rotating-and-Mirroring-Maps">Rotating and Mirroring Maps</a>, <a href="#Map-Transformation">Map Transformation</a>) are additionally
 
34221
packed into the table <code>MAP_ALL</code>, so a simple call to
 
34222
<code>ipairs(MAP_ALL)</code> can iterate over all of them. <code>MAP_ALL</code> is provided
 
34223
without need to load libmap.
 
34224
</p>
 
34225
<p>Each transformation offers the field <code>&quot;index&quot;</code>, which returns the number at
 
34226
which the transformation appears in <code>MAP_ALL</code>. libmap is not needed to use
 
34227
<code>&quot;index&quot;</code> either.
 
34228
</p>
 
34229
<dl compact="compact">
 
34230
<dt> <b>Syntax:</b></dt>
 
34231
<dd><p><b>MAP_ALL</b> = {<b>MAP_IDENT</b>, <b>MAP_ROT_CW</b>, <b>MAP_ROT_180</b>, <b>MAP_ROT_CCW</b>, <b>MAP_FLIP_BACKSLASH</b>,
 
34232
           <b>MAP_FLIP_HORIZONTAL</b>, <b>MAP_FLIP_SLASH</b>, <b>MAP_FLIP_VERTICAL</b>}
 
34233
</p>
 
34234
<p><b>transformation_index</b> = <i>maptransformation</i>.<b>index</b>
 
34235
</p>
 
34236
<dl compact="compact">
 
34237
<dt> <i>transformation_index</i></dt>
 
34238
<dd><p>An integer between 1 and 8.
 
34239
</p>
 
34240
</dd>
 
34241
<dt> <i>maptransformation</i></dt>
 
34242
<dd><p>A map transformation.
 
34243
</p></dd>
 
34244
</dl>
 
34245
 
 
34246
</dd>
 
34247
<dt> <b>Syntax Samples:</b></dt>
 
34248
<dd><table><tr><td>&nbsp;</td><td><pre class="example">MAP_ALL[MAP_ROT_CW.index] == MAP_ROT_CW
 
34249
</pre></td></tr></table>
 
34250
 
 
34251
</dd>
 
34252
<dt> <b>Details:</b></dt>
 
34253
<dd><p>You may not safe map transformations as attributes of objects, for example the
 
34254
following will throw an error:
 
34255
</p><table><tr><td>&nbsp;</td><td><pre class="example">no[&quot;stone_a&quot;][&quot;_mytrafo&quot;] = MAP_ROT_CCW
 
34256
</pre></td></tr></table>
 
34257
<p>Instead, you have to use <code>index</code> and retrieve the correct transformation
 
34258
from <code>MAP_ALL</code>:
 
34259
</p><table><tr><td>&nbsp;</td><td><pre class="example">no[&quot;stone_a&quot;][&quot;_mytrafo&quot;] = MAP_ROT_CCW.index
 
34260
...
 
34261
oldtrafo = MAP_ALL[no[&quot;stone_a&quot;][&quot;_mytrafo&quot;]]
 
34262
</pre></td></tr></table>
 
34263
</dd>
 
34264
</dl>
 
34265
 
 
34266
 
 
34267
<hr size="6">
 
34268
<a name="Map-Transformation-Composition-and-Powers"></a>
 
34269
<table cellpadding="1" cellspacing="1" border="0">
 
34270
<tr><td valign="middle" align="left">[<a href="#Map-Transformation-Index-and-MAP_005fALL" title="Previous section in reading order"> &lt; </a>]</td>
 
34271
<td valign="middle" align="left">[<a href="#Map-Transformation-Inverse" title="Next section in reading order"> &gt; </a>]</td>
 
34272
<td valign="middle" align="left"> &nbsp; </td>
 
34273
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
34274
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
34275
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
34276
<td valign="middle" align="left"> &nbsp; </td>
 
34277
<td valign="middle" align="left"> &nbsp; </td>
 
34278
<td valign="middle" align="left"> &nbsp; </td>
 
34279
<td valign="middle" align="left"> &nbsp; </td>
 
34280
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
34281
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
34282
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
34283
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
34284
</tr></table>
 
34285
<a name="Map-Transformation-Composition-and-Powers-1"></a>
 
34286
<h3 class="subsection">12.4.26 Map Transformation Composition and Powers</h3>
 
34287
<a name="index-lib_002emap_002etransformation_005fcompose"></a>
 
34288
<a name="index-lib_002emap_002etransformation_005fpower"></a>
 
34289
 
 
34290
<p>The transformation constants (see <a href="#map-read-directions">map read directions</a>,
 
34291
<a href="#Rotating-and-Mirroring-Maps">Rotating and Mirroring Maps</a>, <a href="#Map-Transformation">Map Transformation</a>) can be composed
 
34292
according to their true operation on a map, as soon as libmap is loaded. The
 
34293
composition is returned by the operations &lsquo;<samp>*</samp>&rsquo; and &lsquo;<samp>^</samp>&rsquo;.
 
34294
</p>
 
34295
<dl compact="compact">
 
34296
<dt> <b>Syntax:</b></dt>
 
34297
<dd><p><i>composition</i> = <i>maptransformation1</i> <b>*</b> <i>maptransformation2</i>
 
34298
</p>
 
34299
<p><i>composition</i> = <i>maptransformation1</i> <b>^</b> <i>maptransformation2</i>
 
34300
</p>
 
34301
<p><i>composition</i> = <b>lib.map.transformation_compose</b>(<i>maptransformation1</i>, <i>maptransformation2</i>)
 
34302
</p>
 
34303
<p><i>composition</i> = <b>lib.map.transformation_power</b>(<i>maptransformation1</i>, <i>maptransformation2</i>)
 
34304
</p>
 
34305
<p><i>power</i> = <i>maptransformation</i> <b>^</b> <i>exponent</i>
 
34306
</p>
 
34307
<p><i>power</i> = <b>lib.map.transformation_power</b>(<i>maptransformation</i>, <i>exponent</i>)
 
34308
</p>
 
34309
<dl compact="compact">
 
34310
<dt> <i>composition</i></dt>
 
34311
<dd><p>The result of composing two map transformations.
 
34312
</p>
 
34313
</dd>
 
34314
<dt> <i>maptransformation1</i>, <i>maptransformation2</i>, <i>maptransformation</i></dt>
 
34315
<dd><p>Map transformations.
 
34316
</p>
 
34317
</dd>
 
34318
<dt> <i>power</i></dt>
 
34319
<dd><p>The <code>exponent</code>-th power of <code>maptransformation</code> (again a map
 
34320
transformation).
 
34321
</p>
 
34322
</dd>
 
34323
<dt> <i>exponent</i></dt>
 
34324
<dd><p>An integer.
 
34325
</p></dd>
 
34326
</dl>
 
34327
 
 
34328
</dd>
 
34329
<dt> <b>Syntax Samples:</b></dt>
 
34330
<dd><table><tr><td>&nbsp;</td><td><pre class="example">new_transformation = (MAP_ROT_CW * MAP_FLIP_HORIZONTAL) ^ 2
 
34331
another_transformation = (new_transformation ^ MAP_ROT_180) ^ (-1)
 
34332
</pre></td></tr></table>
 
34333
 
 
34334
</dd>
 
34335
<dt> <b>Details:</b></dt>
 
34336
<dd><p>The eight possible map transformations are the elements of a mathematical
 
34337
group, the dihedral group of order 8. Composition of any two map
 
34338
transformations therefore yields another one of the eight map transformations.
 
34339
An <i>n</i>-th power of a map transformation is the composition of <i>n</i> such
 
34340
transformations. In the case of the dihedral group, any 4-th power returns the
 
34341
original element. This fact is applied during calculating a power, so it
 
34342
doesn&rsquo;t make a difference to the performance when you use large numbers as
 
34343
exponents.
 
34344
</p>
 
34345
<p>Composing with <code>MAP_IDENT</code> doesn&rsquo;t change the value; it&rsquo;s like adding zero
 
34346
to a number, or multiplying with one.
 
34347
</p>
 
34348
<p>Keeping to group theoretic notions, the operation &lsquo;<samp>^</samp>&rsquo; between map
 
34349
transformations should denote conjugation instead of composition. Instead of
 
34350
this, it is chosen to be synonymous to &lsquo;<samp>*</samp>&rsquo; to allow for associativity of
 
34351
expressions like:
 
34352
</p><table><tr><td>&nbsp;</td><td><pre class="example">new_map = old_map ^ MAP_ROT_CCW ^ MAP_FLIP_VERTICAL
 
34353
</pre></td></tr></table>
 
34354
<p>(Remember that Lua evaluates &lsquo;<samp>^</samp>&rsquo; from the right.)
 
34355
</p>
 
34356
<p>The inverse can be calculated with a power to <code>-1</code>, but also by &lsquo;<samp>-</samp>&rsquo;,
 
34357
see <a href="#Map-Transformation-Inverse">Map Transformation Inverse</a>.
 
34358
</p></dd>
 
34359
</dl>
 
34360
 
 
34361
 
 
34362
<hr size="6">
 
34363
<a name="Map-Transformation-Inverse"></a>
 
34364
<table cellpadding="1" cellspacing="1" border="0">
 
34365
<tr><td valign="middle" align="left">[<a href="#Map-Transformation-Composition-and-Powers" title="Previous section in reading order"> &lt; </a>]</td>
 
34366
<td valign="middle" align="left">[<a href="#Random-Map-Transformations" title="Next section in reading order"> &gt; </a>]</td>
 
34367
<td valign="middle" align="left"> &nbsp; </td>
 
34368
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
34369
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
34370
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
34371
<td valign="middle" align="left"> &nbsp; </td>
 
34372
<td valign="middle" align="left"> &nbsp; </td>
 
34373
<td valign="middle" align="left"> &nbsp; </td>
 
34374
<td valign="middle" align="left"> &nbsp; </td>
 
34375
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
34376
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
34377
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
34378
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
34379
</tr></table>
 
34380
<a name="Map-Transformation-Inverse-1"></a>
 
34381
<h3 class="subsection">12.4.27 Map Transformation Inverse</h3>
 
34382
 
 
34383
<p>The transformation constants (see <a href="#map-read-directions">map read directions</a>,
 
34384
<a href="#Rotating-and-Mirroring-Maps">Rotating and Mirroring Maps</a>, <a href="#Map-Transformation">Map Transformation</a>) have proper
 
34385
inverses, i.e. map transformations that reverse their action. These inverse
 
34386
transformations are returned by &lsquo;<samp>-</samp>&rsquo;.
 
34387
</p>
 
34388
<dl compact="compact">
 
34389
<dt> <b>Syntax:</b></dt>
 
34390
<dd><p><i>inverse</i> = <b>-</b><i>maptransformation</i>
 
34391
</p>
 
34392
<p><i>inverse</i> = <b>lib.map.transformation_inverse</b>(<i>maptransformation</i>)
 
34393
</p>
 
34394
<dl compact="compact">
 
34395
<dt> <i>inverse</i></dt>
 
34396
<dd><p>The inverse map transformation of <code>maptransformation</code>.
 
34397
</p>
 
34398
</dd>
 
34399
<dt> <i>maptransformation</i></dt>
 
34400
<dd><p>A map transformation.
 
34401
</p></dd>
 
34402
</dl>
 
34403
 
 
34404
</dd>
 
34405
<dt> <b>Syntax Samples:</b></dt>
 
34406
<dd><table><tr><td>&nbsp;</td><td><pre class="example">reverse_transformation = -MAP_ROT_CW
 
34407
</pre></td></tr></table>
 
34408
<p>In this case, <code>reverse_transformation</code> equals <code>MAP_ROT_CCW</code>, because
 
34409
their composition <code>MAP_ROT_CW * MAP_ROT_CCW</code> equals the trivial
 
34410
transformation (or identity) <code>MAP_IDENT</code>.
 
34411
</p>
 
34412
</dd>
 
34413
<dt> <b>Details:</b></dt>
 
34414
<dd><p>The eight possible map transformations are the elements of a mathematical
 
34415
group, the dihedral group of order 8. The inverse of any map transformation
 
34416
therefore yields another one of the eight map transformations. Composition of
 
34417
any map transformation with its inverse results in <code>MAP_IDENT</code>. However,
 
34418
within the dihedral group of order 8, only two elements have inverses that are
 
34419
not their own inverses: the two rotations by 90 degrees.
 
34420
</p>
 
34421
<p>Keeping to group theoretic notions, the inverse is denoted by &lsquo;<samp>^ (-1)</samp>&rsquo;,
 
34422
which works just as well(see <a href="#Map-Transformation-Composition-and-Powers">Map Transformation Composition and Powers</a>).
 
34423
</p></dd>
 
34424
</dl>
 
34425
 
 
34426
 
 
34427
<hr size="6">
 
34428
<a name="Random-Map-Transformations"></a>
 
34429
<table cellpadding="1" cellspacing="1" border="0">
 
34430
<tr><td valign="middle" align="left">[<a href="#Map-Transformation-Inverse" title="Previous section in reading order"> &lt; </a>]</td>
 
34431
<td valign="middle" align="left">[<a href="#libimport" title="Next section in reading order"> &gt; </a>]</td>
 
34432
<td valign="middle" align="left"> &nbsp; </td>
 
34433
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
34434
<td valign="middle" align="left">[<a href="#libmap" title="Up section"> Up </a>]</td>
 
34435
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
34436
<td valign="middle" align="left"> &nbsp; </td>
 
34437
<td valign="middle" align="left"> &nbsp; </td>
 
34438
<td valign="middle" align="left"> &nbsp; </td>
 
34439
<td valign="middle" align="left"> &nbsp; </td>
 
34440
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
34441
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
34442
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
34443
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
34444
</tr></table>
 
34445
<a name="Random-Map-Transformations-1"></a>
 
34446
<h3 class="subsection">12.4.28 Random Map Transformations</h3>
 
34447
<a name="index-lib_002emap_002erandom_005ftransformation"></a>
 
34448
 
 
34449
<p>libmap provides the function <code>lib.map.random_transformation()</code> to pick one
 
34450
of the eight transformations by random.
 
34451
</p>
 
34452
<dl compact="compact">
 
34453
<dt> <b>Syntax:</b></dt>
 
34454
<dd><p><i>randomtransformation</i> = <b>lib.map.random_transformation</b>()
 
34455
</p>
 
34456
<dl compact="compact">
 
34457
<dt> <i>randomtransformation</i></dt>
 
34458
<dd><p>A map transformation, randomly chosen from <code>MAP_ALL</code>.
 
34459
</p></dd>
 
34460
</dl>
 
34461
 
 
34462
</dd>
 
34463
<dt> <b>Syntax Samples:</b></dt>
 
34464
<dd><table><tr><td>&nbsp;</td><td><pre class="example">wo:drawMap(ti, po(5, 4), mymap, lib.map.random_transformation())
 
34465
</pre></td></tr></table>
 
34466
 
 
34467
</dd>
 
34468
<dt> <b>Details:</b></dt>
 
34469
<dd><p>When you use random map transformations, remember that four out of the eight map
 
34470
transformations switch height and width of the map they are applied to.
 
34471
</p></dd>
 
34472
</dl>
 
34473
 
 
34474
 
 
34475
<hr size="6">
 
34476
<a name="libimport"></a>
 
34477
<table cellpadding="1" cellspacing="1" border="0">
 
34478
<tr><td valign="middle" align="left">[<a href="#Random-Map-Transformations" title="Previous section in reading order"> &lt; </a>]</td>
 
34479
<td valign="middle" align="left">[<a href="#lib_002eimport_002eunpack_005fmultilevel" title="Next section in reading order"> &gt; </a>]</td>
 
34480
<td valign="middle" align="left"> &nbsp; </td>
 
34481
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
34482
<td valign="middle" align="left">[<a href="#Libraries" title="Up section"> Up </a>]</td>
 
34483
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
34484
<td valign="middle" align="left"> &nbsp; </td>
 
34485
<td valign="middle" align="left"> &nbsp; </td>
 
34486
<td valign="middle" align="left"> &nbsp; </td>
 
34487
<td valign="middle" align="left"> &nbsp; </td>
 
34488
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
34489
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
34490
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
34491
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
34492
</tr></table>
 
34493
<a name="libimport-1"></a>
 
34494
<h2 class="section">12.5 libimport</h2>
 
34495
<a name="index-lib_002eimport"></a>
 
34496
 
 
34497
<p>libimport is dedicated to parse level files of other games or formats and
 
34498
typically returns <a href="#libmap">libmap</a>-maps. In this context, the word &quot;level&quot; refers to
 
34499
a string, representing a level of the other game. A &quot;monolevel&quot; is a string
 
34500
which holds a single level, but also additional information, like titles or
 
34501
author names. A &quot;multilevel&quot; is a string composed of one or more monolevels.
 
34502
A &quot;map&quot; is a map in the libmap-sense, i.e. an Enigma level.
 
34503
</p>
 
34504
<p>Apart from the following functions, lib.import includes the minor routines
 
34505
&lsquo;<samp>lib.import.string_replace</samp>&rsquo;, which is a wrapper for <code>string.gsub</code>,
 
34506
and &lsquo;<samp>lib.import.string_remove_multiples</samp>&rsquo;, which removes multiple
 
34507
occurrences of a string in another string.
 
34508
</p>
 
34509
<p>This library is described as of release 1.
 
34510
</p>
 
34511
<p>You can load it by adding an &lsquo;<samp>dependency</samp>&rsquo; element to the
 
34512
<a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a> XML Metadata element as follows:
 
34513
</p>
 
34514
<table><tr><td>&nbsp;</td><td><pre class="example">  &lt;<i>el</i>:<b>dependency</b> <i>el</i>:<b>path</b>=&quot;<var>lib/libimport</var>&quot; <i>el</i>:<b>id</b>=&quot;<var>lib/libimport</var>&quot; <i>el</i>:<b>release</b>=&quot;<var>1</var>&quot; <i>el</i>:<b>preload</b>=&quot;<var>true</var>&quot;/&gt;
 
34515
</pre></td></tr></table>
 
34516
 
 
34517
<p>It preloads automatically the libraries <a href="#libmap">libmap</a> and <a href="#liblua">liblua</a>.
 
34518
</p>
 
34519
 
 
34520
<table class="menu" border="0" cellspacing="0">
 
34521
<tr><td align="left" valign="top"><a href="#lib_002eimport_002eunpack_005fmultilevel">12.5.1 lib.import.unpack_multilevel</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Extract a level from a multilevel.
 
34522
</td></tr>
 
34523
<tr><td align="left" valign="top"><a href="#lib_002eimport_002euncompress_005frle">12.5.2 lib.import.uncompress_rle</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Decode run-length encoding.
 
34524
</td></tr>
 
34525
<tr><td align="left" valign="top"><a href="#lib_002eimport_002elevel_005fto_005fmap">12.5.3 lib.import.level_to_map</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Converts a level into a map.
 
34526
</td></tr>
 
34527
<tr><td align="left" valign="top"><a href="#lib_002eimport_002emap_005fsokoban">12.5.4 lib.import.map_sokoban</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              Converts a Sokoban level into a map.
 
34528
</td></tr>
 
34529
<tr><td align="left" valign="top"><a href="#lib_002eimport_002emap_005fwanderer">12.5.5 lib.import.map_wanderer</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Converts a Wanderer level into a map.
 
34530
</td></tr>
 
34531
</table>
 
34532
 
 
34533
 
 
34534
<hr size="6">
 
34535
<a name="lib_002eimport_002eunpack_005fmultilevel"></a>
 
34536
<table cellpadding="1" cellspacing="1" border="0">
 
34537
<tr><td valign="middle" align="left">[<a href="#libimport" title="Previous section in reading order"> &lt; </a>]</td>
 
34538
<td valign="middle" align="left">[<a href="#lib_002eimport_002euncompress_005frle" title="Next section in reading order"> &gt; </a>]</td>
 
34539
<td valign="middle" align="left"> &nbsp; </td>
 
34540
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
34541
<td valign="middle" align="left">[<a href="#libimport" title="Up section"> Up </a>]</td>
 
34542
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
34543
<td valign="middle" align="left"> &nbsp; </td>
 
34544
<td valign="middle" align="left"> &nbsp; </td>
 
34545
<td valign="middle" align="left"> &nbsp; </td>
 
34546
<td valign="middle" align="left"> &nbsp; </td>
 
34547
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
34548
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
34549
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
34550
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
34551
</tr></table>
 
34552
<a name="lib_002eimport_002eunpack_005fmultilevel-1"></a>
 
34553
<h3 class="subsection">12.5.1 lib.import.unpack_multilevel</h3>
 
34554
<a name="index-lib_002eimport_002eunpack_005fmultilevel"></a>
 
34555
 
 
34556
<p>&lsquo;<samp>unpack_multilevel</samp>&rsquo; extracts a level from a multilevel string. For this,
 
34557
it needs a regexp describing a single level line.
 
34558
</p>
 
34559
<dl compact="compact">
 
34560
<dt> <b>Syntax:</b></dt>
 
34561
<dd><p><b>lib.import.unpack_multilevel</b>(<i>multilevel</i>, <i>sublevel_number</i>, <i>format</i>)
 
34562
</p>
 
34563
<dl compact="compact">
 
34564
<dt> <i>multilevel</i></dt>
 
34565
<dd><p>A multilevel string.
 
34566
</p>
 
34567
</dd>
 
34568
<dt> <i>sublevel_number</i></dt>
 
34569
<dd><p>The number of the level in <code>multilevel</code> to be extracted. First level is
 
34570
&lsquo;<samp>1</samp>&rsquo;. If <code>nil</code>, &lsquo;<samp>1</samp>&rsquo; is taken as default.
 
34571
</p>
 
34572
</dd>
 
34573
<dt> <i>format</i></dt>
 
34574
<dd><p>A string referencing an entry in &lsquo;<samp>lib.import.line_regexp</samp>&rsquo;. Currently, only
 
34575
&lsquo;<samp>sokoban</samp>&rsquo; and &lsquo;<samp>wanderer</samp>&rsquo; are supported. But you can add further
 
34576
entries to &lsquo;<samp>lib.import.line_regexp</samp>&rsquo; if necessary.
 
34577
</p></dd>
 
34578
</dl>
 
34579
 
 
34580
</dd>
 
34581
<dt> <b>Syntax Samples:</b></dt>
 
34582
<dd><table><tr><td>&nbsp;</td><td><pre class="example">level_four = lib.import.unpack_multilevel(large_string, 4, &quot;sokoban&quot;)
 
34583
</pre></td></tr></table>
 
34584
 
 
34585
</dd>
 
34586
<dt> <b>Details:</b></dt>
 
34587
<dd><p>A level extracted with <code>unpack_multilevel</code> has still to be converted into
 
34588
a format Enigma understands. A level is a string, and lines of the level are to
 
34589
be determined by line endings, which can be quite different. In contrast to
 
34590
this, an Enigma map is a table of strings, with each line in a separate entry
 
34591
of the table. Hence, at least the line endings have to be dealt with.
 
34592
</p></dd>
 
34593
</dl>
 
34594
 
 
34595
 
 
34596
<hr size="6">
 
34597
<a name="lib_002eimport_002euncompress_005frle"></a>
 
34598
<table cellpadding="1" cellspacing="1" border="0">
 
34599
<tr><td valign="middle" align="left">[<a href="#lib_002eimport_002eunpack_005fmultilevel" title="Previous section in reading order"> &lt; </a>]</td>
 
34600
<td valign="middle" align="left">[<a href="#lib_002eimport_002elevel_005fto_005fmap" title="Next section in reading order"> &gt; </a>]</td>
 
34601
<td valign="middle" align="left"> &nbsp; </td>
 
34602
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
34603
<td valign="middle" align="left">[<a href="#libimport" title="Up section"> Up </a>]</td>
 
34604
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
34605
<td valign="middle" align="left"> &nbsp; </td>
 
34606
<td valign="middle" align="left"> &nbsp; </td>
 
34607
<td valign="middle" align="left"> &nbsp; </td>
 
34608
<td valign="middle" align="left"> &nbsp; </td>
 
34609
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
34610
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
34611
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
34612
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
34613
</tr></table>
 
34614
<a name="lib_002eimport_002euncompress_005frle-1"></a>
 
34615
<h3 class="subsection">12.5.2 lib.import.uncompress_rle</h3>
 
34616
<a name="index-lib_002eimport_002euncompress_005frle"></a>
 
34617
 
 
34618
<p>&lsquo;<samp>uncompress_rle</samp>&rsquo; takes a string as argument and returns a decoded version
 
34619
without run-length encoding.
 
34620
</p>
 
34621
<dl compact="compact">
 
34622
<dt> <b>Syntax:</b></dt>
 
34623
<dd><p><b>lib.import.uncompress_rle</b>(<i>level</i>, <i>attribs</i>)
 
34624
</p>
 
34625
<dl compact="compact">
 
34626
<dt> <i>level</i></dt>
 
34627
<dd><p>A level string.
 
34628
</p>
 
34629
</dd>
 
34630
<dt> <i>attribs</i></dt>
 
34631
<dd><p>A table containing further parameters. Currently, the only supported parameter
 
34632
is &lsquo;<samp>error_on_multiple</samp>&rsquo;.
 
34633
</p></dd>
 
34634
</dl>
 
34635
 
 
34636
</dd>
 
34637
<dt> <b>Syntax Samples:</b></dt>
 
34638
<dd><table><tr><td>&nbsp;</td><td><pre class="example">uncompressed = lib.import.uncompress_rle(compressed, {error_on_multiple = &quot;\n&quot;})
 
34639
</pre></td></tr></table>
 
34640
 
 
34641
</dd>
 
34642
<dt> <b>Details:</b></dt>
 
34643
<dd><p>Levels typically include long lines of repeating characters, like walls or
 
34644
spaces. To save space, these are sometimes counted and replaced by the total
 
34645
number and a single example of the character. This is called &quot;run-length
 
34646
encoding&quot;, or RLE.
 
34647
</p><table><tr><td>&nbsp;</td><td><pre class="example">&quot;############  A #####BB#&quot; compresses to &quot;12#2 A5#2B#&quot;
 
34648
</pre></td></tr></table>
 
34649
<p>However, some characters don&rsquo;t make sense to be repeated, like line endings.
 
34650
To return an error when trying to repeat a line ending during decompression,
 
34651
you can hand a string to the attribute &lsquo;<samp>error_on_multiple</samp>&rsquo;. Any character
 
34652
in this string is then forbidden to be repeated. Remember that the &lsquo;<samp>new
 
34653
line</samp>&rsquo;-character is represented by &lsquo;<samp>\n</samp>&rsquo; in Lua.
 
34654
</p></dd>
 
34655
</dl>
 
34656
 
 
34657
 
 
34658
<hr size="6">
 
34659
<a name="lib_002eimport_002elevel_005fto_005fmap"></a>
 
34660
<table cellpadding="1" cellspacing="1" border="0">
 
34661
<tr><td valign="middle" align="left">[<a href="#lib_002eimport_002euncompress_005frle" title="Previous section in reading order"> &lt; </a>]</td>
 
34662
<td valign="middle" align="left">[<a href="#lib_002eimport_002emap_005fsokoban" title="Next section in reading order"> &gt; </a>]</td>
 
34663
<td valign="middle" align="left"> &nbsp; </td>
 
34664
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
34665
<td valign="middle" align="left">[<a href="#libimport" title="Up section"> Up </a>]</td>
 
34666
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
34667
<td valign="middle" align="left"> &nbsp; </td>
 
34668
<td valign="middle" align="left"> &nbsp; </td>
 
34669
<td valign="middle" align="left"> &nbsp; </td>
 
34670
<td valign="middle" align="left"> &nbsp; </td>
 
34671
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
34672
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
34673
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
34674
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
34675
</tr></table>
 
34676
<a name="lib_002eimport_002elevel_005fto_005fmap-1"></a>
 
34677
<h3 class="subsection">12.5.3 lib.import.level_to_map</h3>
 
34678
<a name="index-lib_002eimport_002elevel_005fto_005fmap"></a>
 
34679
 
 
34680
<p>&lsquo;<samp>level_to_map</samp>&rsquo; breaks a level string down into a table of strings, which
 
34681
is then converted into a <a href="#libmap">libmap</a>-map.
 
34682
</p>
 
34683
<dl compact="compact">
 
34684
<dt> <b>Syntax:</b></dt>
 
34685
<dd><p><b>lib.import.level_to_map</b>(<i>level</i>, <i>line_ending</i>, <i>default_key</i>)
 
34686
</p>
 
34687
<dl compact="compact">
 
34688
<dt> <i>level</i></dt>
 
34689
<dd><p>A level string.
 
34690
</p>
 
34691
</dd>
 
34692
<dt> <i>line_ending</i></dt>
 
34693
<dd><p>A string describing a single line ending. Default: &lsquo;<samp>\n</samp>&rsquo;
 
34694
</p>
 
34695
</dd>
 
34696
<dt> <i>default_key</i></dt>
 
34697
<dd><p>The default key of the returned map. Default: &lsquo;<samp> </samp>&rsquo;
 
34698
</p></dd>
 
34699
</dl>
 
34700
 
 
34701
</dd>
 
34702
<dt> <b>Syntax Samples:</b></dt>
 
34703
<dd><table><tr><td>&nbsp;</td><td><pre class="example">mymap = lib.import.level_to_map(level, &quot;|&quot;, &quot; &quot;)
 
34704
</pre></td></tr></table>
 
34705
 
 
34706
</dd>
 
34707
<dt> <b>Details:</b></dt>
 
34708
<dd><p>Multiple line endings are interpreted as multiple lines (of which the last
 
34709
lines are filled with the default key).
 
34710
</p>
 
34711
<p>Make sure that the last line of the level ends in a proper line ending, and only
 
34712
one line ending. Otherwise, the returned map will be too short or too long.
 
34713
</p></dd>
 
34714
</dl>
 
34715
 
 
34716
 
 
34717
<hr size="6">
 
34718
<a name="lib_002eimport_002emap_005fsokoban"></a>
 
34719
<table cellpadding="1" cellspacing="1" border="0">
 
34720
<tr><td valign="middle" align="left">[<a href="#lib_002eimport_002elevel_005fto_005fmap" title="Previous section in reading order"> &lt; </a>]</td>
 
34721
<td valign="middle" align="left">[<a href="#lib_002eimport_002emap_005fwanderer" title="Next section in reading order"> &gt; </a>]</td>
 
34722
<td valign="middle" align="left"> &nbsp; </td>
 
34723
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
34724
<td valign="middle" align="left">[<a href="#libimport" title="Up section"> Up </a>]</td>
 
34725
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
34726
<td valign="middle" align="left"> &nbsp; </td>
 
34727
<td valign="middle" align="left"> &nbsp; </td>
 
34728
<td valign="middle" align="left"> &nbsp; </td>
 
34729
<td valign="middle" align="left"> &nbsp; </td>
 
34730
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
34731
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
34732
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
34733
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
34734
</tr></table>
 
34735
<a name="lib_002eimport_002emap_005fsokoban-1"></a>
 
34736
<h3 class="subsection">12.5.4 lib.import.map_sokoban</h3>
 
34737
<a name="index-lib_002eimport_002emap_005fsokoban"></a>
 
34738
 
 
34739
<p>&lsquo;<samp>map_sokoban</samp>&rsquo; takes a Sokoban multilevel as argument, and returns a
 
34740
beautified <a href="#libmap">libmap</a>-map.
 
34741
</p>
 
34742
<dl compact="compact">
 
34743
<dt> <b>Syntax:</b></dt>
 
34744
<dd><p><b>lib.import.map_sokoban</b>(<i>multilevel</i>, <i>sublevel_number</i>, <i>keylength_one</i>)
 
34745
</p>
 
34746
<dl compact="compact">
 
34747
<dt> <i>multilevel</i></dt>
 
34748
<dd><p>A multilevel string.
 
34749
</p>
 
34750
</dd>
 
34751
<dt> <i>sublevel_number</i></dt>
 
34752
<dd><p>The number of the level to be extracted. First level is &lsquo;<samp>1</samp>&rsquo;. Default:
 
34753
&lsquo;<samp>1</samp>&rsquo;
 
34754
</p>
 
34755
</dd>
 
34756
<dt> <i>keylength_one</i></dt>
 
34757
<dd><p>A boolean value. If <code>false</code>, the returned map has keylength two. Otherwise,
 
34758
it has keylength one. Default: &lsquo;<samp>false</samp>&rsquo;
 
34759
</p></dd>
 
34760
</dl>
 
34761
 
 
34762
</dd>
 
34763
<dt> <b>Syntax Samples:</b></dt>
 
34764
<dd><table><tr><td>&nbsp;</td><td><pre class="example">map_four = lib.import.map_sokoban(multilevel, 4, true)
 
34765
</pre></td></tr></table>
 
34766
 
 
34767
</dd>
 
34768
<dt> <b>Details:</b></dt>
 
34769
<dd><p>Sokoban level files can be very different - they can use run-length encoding and
 
34770
multilevel files. Sometimes, &lsquo;<samp>|</samp>&rsquo; is used as line ending instead of or even
 
34771
together with &lsquo;<samp>\n</samp>&rsquo;. &lsquo;<samp> </samp>&rsquo;, &lsquo;<samp>_</samp>&rsquo; and &lsquo;<samp>-</samp>&rsquo; can all represent
 
34772
space. Sometimes, the outside is filled with &lsquo;<samp> </samp>&rsquo;, then again with &lsquo;<samp>#</samp>&rsquo;.
 
34773
Finally, line width can vary. We use a slightly generalized version, to include
 
34774
chessoban levels. Allowed characters are:
 
34775
</p><table><tr><td>&nbsp;</td><td><pre class="example">   - _ space  space
 
34776
   #          wall
 
34777
   .          goal
 
34778
   $ *        box, box with goal
 
34779
   n N        st_chess, st_chess with goal
 
34780
   @ +        player, player with goal
 
34781
</pre></td></tr></table>
 
34782
<p>The returned map will use &lsquo;<samp> </samp>&rsquo; for inside space, &lsquo;<samp>-</samp>&rsquo; for
 
34783
outside space, default key is &lsquo;<samp> </samp>&rsquo;.
 
34784
</p>
 
34785
<p>If you chose &lsquo;<samp>keylength_one = true</samp>&rsquo;, the returned map will use the
 
34786
characters as described above. Otherwise, the returned map will have keylength
 
34787
two, and the characters &lsquo;<samp>*</samp>&rsquo;, &lsquo;<samp>N</samp>&rsquo;, and &lsquo;<samp>+</samp>&rsquo; are resolved into
 
34788
&lsquo;<samp>$.</samp>&rsquo;, &lsquo;<samp>n.</samp>&rsquo;, and &lsquo;<samp>@.</samp>&rsquo; respectively, while the other keys become
 
34789
&lsquo;<samp>  </samp>&rsquo;, &lsquo;<samp>- </samp>&rsquo;, &lsquo;<samp># </samp>&rsquo;, &lsquo;<samp> .</samp>&rsquo;, &lsquo;<samp>$ </samp>&rsquo;, &lsquo;<samp>n </samp>&rsquo;, and
 
34790
&lsquo;<samp>@ </samp>&rsquo;. You can then use <a href="#res_002ecomposer">res.composer</a> to easily draw your map.
 
34791
</p>
 
34792
<p>Remember that the returned map uses the inner space &lsquo;<samp> </samp>&rsquo; or &lsquo;<samp>  </samp>&rsquo; as
 
34793
default key. Hence, if you want to paste the map into another one
 
34794
(<a href="#Connecting-Two-Maps">Connecting Two Maps</a>), you will have to switch the default key to
 
34795
&lsquo;<samp>-</samp>&rsquo; or &lsquo;<samp>- </samp>&rsquo; in beforehand to yield a good result.
 
34796
</p></dd>
 
34797
</dl>
 
34798
 
 
34799
<hr size="6">
 
34800
<a name="lib_002eimport_002emap_005fwanderer"></a>
 
34801
<table cellpadding="1" cellspacing="1" border="0">
 
34802
<tr><td valign="middle" align="left">[<a href="#lib_002eimport_002emap_005fsokoban" title="Previous section in reading order"> &lt; </a>]</td>
 
34803
<td valign="middle" align="left">[<a href="#libsoko" title="Next section in reading order"> &gt; </a>]</td>
 
34804
<td valign="middle" align="left"> &nbsp; </td>
 
34805
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
34806
<td valign="middle" align="left">[<a href="#libimport" title="Up section"> Up </a>]</td>
 
34807
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
34808
<td valign="middle" align="left"> &nbsp; </td>
 
34809
<td valign="middle" align="left"> &nbsp; </td>
 
34810
<td valign="middle" align="left"> &nbsp; </td>
 
34811
<td valign="middle" align="left"> &nbsp; </td>
 
34812
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
34813
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
34814
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
34815
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
34816
</tr></table>
 
34817
<a name="lib_002eimport_002emap_005fwanderer-1"></a>
 
34818
<h3 class="subsection">12.5.5 lib.import.map_wanderer</h3>
 
34819
<a name="index-lib_002eimport_002emap_005fwanderer"></a>
 
34820
 
 
34821
<p>&lsquo;<samp>map_wanderer</samp>&rsquo; takes a Wanderer monolevel as argument, and returns a
 
34822
<a href="#libmap">libmap</a>-map. Note that Enigma does not yet have the necessary game objects
 
34823
to simulate Wanderer.
 
34824
</p>
 
34825
<dl compact="compact">
 
34826
<dt> <b>Syntax:</b></dt>
 
34827
<dd><p><b>lib.import.map_wanderer</b>(<i>monolevel</i>)
 
34828
</p>
 
34829
<dl compact="compact">
 
34830
<dt> <i>monolevel</i></dt>
 
34831
<dd><p>A monolevel string.
 
34832
</p></dd>
 
34833
</dl>
 
34834
 
 
34835
</dd>
 
34836
<dt> <b>Syntax Samples:</b></dt>
 
34837
<dd><table><tr><td>&nbsp;</td><td><pre class="example">mymap = lib.import.map_wanderer(monolevel)
 
34838
</pre></td></tr></table>
 
34839
 
 
34840
</dd>
 
34841
<dt> <b>Details:</b></dt>
 
34842
<dd><p>Wanderer is a game originally created by Steven Shipway in 1988.
 
34843
Wanderer level files are uncompressed monolevels with fixed
 
34844
width. The level itself is followed by a short description
 
34845
(title/author/email) in a single line or a line of &lsquo;<samp>#</samp>&rsquo;. Last
 
34846
line optionally is a number. A Wanderer level knows the
 
34847
following characters (taken from Wanderer&rsquo;s editor):
 
34848
</p><table><tr><td>&nbsp;</td><td><pre class="example">   : _ #      earth, rock, indestructible rock
 
34849
   * - space  treasure, alternative space, space
 
34850
   O &lt; &gt; ^    falling boulder, arrow from right, arrow from left, balloon
 
34851
   ! + B      landmine, cage, bomb
 
34852
   / \        deflectors
 
34853
   T A X @    teleport, arrival, exit, start
 
34854
   M S C ~    big monster, baby monster, time capsule, thingy
 
34855
</pre></td></tr></table>
 
34856
<p>Due to its fixed width (40) and height (16), a Wanderer level is not always
 
34857
surrounded by walls; you might have to add them.
 
34858
</p>
 
34859
<p>Note that Enigma does not yet support the game elements of Wanderer, hence this
 
34860
function currently is only of use to developers.
 
34861
</p></dd>
 
34862
</dl>
 
34863
 
 
34864
<hr size="6">
 
34865
<a name="libsoko"></a>
 
34866
<table cellpadding="1" cellspacing="1" border="0">
 
34867
<tr><td valign="middle" align="left">[<a href="#lib_002eimport_002emap_005fwanderer" title="Previous section in reading order"> &lt; </a>]</td>
 
34868
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next section in reading order"> &gt; </a>]</td>
 
34869
<td valign="middle" align="left"> &nbsp; </td>
 
34870
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
34871
<td valign="middle" align="left">[<a href="#Libraries" title="Up section"> Up </a>]</td>
 
34872
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
 
34873
<td valign="middle" align="left"> &nbsp; </td>
 
34874
<td valign="middle" align="left"> &nbsp; </td>
 
34875
<td valign="middle" align="left"> &nbsp; </td>
 
34876
<td valign="middle" align="left"> &nbsp; </td>
 
34877
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
34878
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
34879
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
34880
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
34881
</tr></table>
 
34882
<a name="libsoko-1"></a>
 
34883
<h2 class="section">12.6 libsoko</h2>
 
34884
<a name="index-lib_002esoko_002ecreate_005fsokoball"></a>
 
34885
 
 
34886
<p>This library is described as of release 1.
 
34887
</p>
 
34888
<p>You can load it by adding an &lsquo;<samp>dependency</samp>&rsquo; element to the
 
34889
<a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a> XML Metadata element as follows:
 
34890
</p>
 
34891
<table><tr><td>&nbsp;</td><td><pre class="example">  &lt;<i>el</i>:<b>dependency</b> <i>el</i>:<b>path</b>=&quot;<var>lib/libsoko</var>&quot; <i>el</i>:<b>id</b>=&quot;<var>lib/libsoko</var>&quot; <i>el</i>:<b>release</b>=&quot;<var>1</var>&quot; <i>el</i>:<b>preload</b>=&quot;<var>true</var>&quot;/&gt;
 
34892
</pre></td></tr></table>
 
34893
 
 
34894
<p>It preloads automatically the libraries <a href="#libimport">libimport</a>, <a href="#libmap">libmap</a>,
 
34895
<a href="#libmath">libmath</a>, and <a href="#liblua">liblua</a>.
 
34896
</p>
 
34897
<p>The only function which is meant to be used in levels is
 
34898
&lsquo;<samp>lib.soko.create_sokoball</samp>&rsquo;.
 
34899
</p>
 
34900
<dl compact="compact">
 
34901
<dt> <b>Syntax:</b></dt>
 
34902
<dd><p><b>lib.soko.create_sokoball</b>(<i>multilevel</i>, <i>sublevel_number</i>, <i>args</i>)
 
34903
</p>
 
34904
<dl compact="compact">
 
34905
<dt> <i>multilevel</i></dt>
 
34906
<dd><p>A multilevel string in the sense of <a href="#libimport">libimport</a>.
 
34907
</p>
 
34908
</dd>
 
34909
<dt> <i>sublevel_number</i></dt>
 
34910
<dd><p>A number determining the number of the level in <code>multilevel</code>. Default is
 
34911
&lsquo;<samp>1</samp>&rsquo;.
 
34912
</p>
 
34913
</dd>
 
34914
<dt> <i>args</i></dt>
 
34915
<dd><p>A table holding optional information to construct the level,
 
34916
default is {}. The following keywords are currently supported,
 
34917
all other keywords will return an error:
 
34918
</p><dl compact="compact">
 
34919
<dt> <i>design</i></dt>
 
34920
<dd><p>A number or a design table, see below.
 
34921
</p>
 
34922
</dd>
 
34923
<dt> <i>maxdesign</i></dt>
 
34924
<dd><p>A number, see below.
 
34925
</p></dd>
 
34926
</dl>
 
34927
</dd>
 
34928
</dl>
 
34929
 
 
34930
</dd>
 
34931
<dt> <b>Syntax Samples:</b></dt>
 
34932
<dd><table><tr><td>&nbsp;</td><td><pre class="example">lib.soko.create_sokoball(many_levels, 13, {design = 48})
 
34933
lib.soko.create_sokoball(many_levels, 12, {maxdesign = MAXDESIGN[1.1]})
 
34934
</pre></td></tr></table>
 
34935
 
 
34936
</dd>
 
34937
<dt> <b>Details:</b></dt>
 
34938
<dd><p>&lsquo;<samp>create_sokoball</samp>&rsquo; creates a sokoball-level from the string
 
34939
<code>multilevel</code>. This string can be a multilevel, in which case
 
34940
&lsquo;<samp>sublevel_number</samp>&rsquo; determines the number of the level, starting with 1
 
34941
(default is 1).
 
34942
</p>
 
34943
<p>The design can be chosen by &lsquo;<samp>design</samp>&rsquo;. This is either a number, which refers
 
34944
to the list of predefined designs in <code>libsoko_designlist.xml</code>, or a table
 
34945
with the corresponding design entries. A missing entry will be interpreted as
 
34946
the entry from lib.soko_designlist.default. If the &lsquo;<samp>design</samp>&rsquo; variable is
 
34947
omitted, a check-number is created from the level which uniquely* determines
 
34948
a design from the design list, with <code>maxdesign</code> as highest possible
 
34949
design number.
 
34950
</p>
 
34951
<p>*Uniquely means: The design might change when the design list is enlarged.
 
34952
</p>
 
34953
<p>The number of available designs is 150 in Enigma 1.1, which equals the constant
 
34954
<code>MAXDESIGN[1.1]</code>. However, further versions of Enigma might support more
 
34955
designs. If a multilevel is loaded with a (numerically given) maxdesign number
 
34956
which is larger than the number of available designs, only those levels will be
 
34957
available for play whose calculated design number is supported, all others will
 
34958
show an error message. However, it is better to use the MAXDESIGN-constants.
 
34959
These will always raise an error, when the requested designs are not available.
 
34960
The MAXDESIGN-constants are read-only.
 
34961
</p>
 
34962
<p>If both the design argument as well as the maxdesign-number are
 
34963
omitted, the original 150 designs will be used as fallback, no matter which
 
34964
version of Enigma is running.
 
34965
</p>
 
34966
<p>To define own designs, please consult
 
34967
&lsquo;<samp>data/levels/lib/libsoko_designlist.xml</samp>&rsquo;
 
34968
or use <a href="#libimport">libimport</a> in the first place.
 
34969
</p>
 
34970
<p>Returns width and height of new Enigma level.
 
34971
</p></dd>
 
34972
</dl>
 
34973
 
 
34974
 
 
34975
 
 
34976
<hr size="6">
 
34977
<a name="Advanced-Features"></a>
 
34978
<table cellpadding="1" cellspacing="1" border="0">
 
34979
<tr><td valign="middle" align="left">[<a href="#libsoko" title="Previous section in reading order"> &lt; </a>]</td>
 
34980
<td valign="middle" align="left">[<a href="#Resolvers" title="Next section in reading order"> &gt; </a>]</td>
 
34981
<td valign="middle" align="left"> &nbsp; </td>
 
34982
<td valign="middle" align="left">[<a href="#Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
34983
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
34984
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
34985
<td valign="middle" align="left"> &nbsp; </td>
 
34986
<td valign="middle" align="left"> &nbsp; </td>
 
34987
<td valign="middle" align="left"> &nbsp; </td>
 
34988
<td valign="middle" align="left"> &nbsp; </td>
 
34989
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
34990
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
34991
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
34992
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
34993
</tr></table>
 
34994
<a name="Advanced-Features-1"></a>
 
34995
<h1 class="chapter">13. Advanced Features</h1>
 
34996
 
 
34997
<table class="menu" border="0" cellspacing="0">
 
34998
<tr><td align="left" valign="top"><a href="#Resolvers">13.1 Resolvers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               Standard tools for interpretation of tile maps
 
34999
</td></tr>
 
35000
<tr><td align="left" valign="top"><a href="#General-Features">13.2 General Features</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Special features like scrolling, flood, fire,...
 
35001
</td></tr>
 
35002
<tr><td align="left" valign="top"><a href="#Tips-and-Tricks">13.3 Tips and Tricks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Simple patterns that are valuable like a feature
 
35003
</td></tr>
 
35004
</table>
 
35005
 
 
35006
<hr size="6">
 
35007
<a name="Resolvers"></a>
 
35008
<table cellpadding="1" cellspacing="1" border="0">
 
35009
<tr><td valign="middle" align="left">[<a href="#Advanced-Features" title="Previous section in reading order"> &lt; </a>]</td>
 
35010
<td valign="middle" align="left">[<a href="#Resolver-Chaining" title="Next section in reading order"> &gt; </a>]</td>
 
35011
<td valign="middle" align="left"> &nbsp; </td>
 
35012
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
35013
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Up section"> Up </a>]</td>
 
35014
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
35015
<td valign="middle" align="left"> &nbsp; </td>
 
35016
<td valign="middle" align="left"> &nbsp; </td>
 
35017
<td valign="middle" align="left"> &nbsp; </td>
 
35018
<td valign="middle" align="left"> &nbsp; </td>
 
35019
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
35020
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
35021
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
35022
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
35023
</tr></table>
 
35024
<a name="Resolvers-1"></a>
 
35025
<h2 class="section">13.1 Resolvers</h2>
 
35026
 
 
35027
<p>Every tile in the world is defined by a key that needs to be resolved to its
 
35028
declaration. This can be done either by the <a href="#Tiles-Repository">Tiles Repository</a> &lsquo;<samp>ti</samp>&rsquo;
 
35029
alone, or by additionally chained resolvers. In the chapter <a href="#Lua-API">Lua API</a> we
 
35030
learned how to set up a <a href="#World">World</a> by static <a href="#Tile-and-Object-Declaration">Tile and Object Declaration</a>s.
 
35031
Now it is time to explore the capabilities of resolvers. In the
 
35032
<a href="#World-Creation">World Creation</a> you had to supply a top resolver as an argument. Let us
 
35033
look which types of resolvers are available and how you can chain these resolvers.
 
35034
</p>
 
35035
<table class="menu" border="0" cellspacing="0">
 
35036
<tr><td align="left" valign="top"><a href="#Resolver-Chaining">13.1.1 Resolver Chaining</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">  Linking resolvers and the tiles repository
 
35037
</td></tr>
 
35038
<tr><td align="left" valign="top"><a href="#Custom-Resolver">13.1.2 Custom Resolver</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    Writing simplified own resolvers
 
35039
</td></tr>
 
35040
<tr><td align="left" valign="top"><a href="#res_002eautotile">13.1.3 res.autotile</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Generate tiles from given template declarations
 
35041
</td></tr>
 
35042
<tr><td align="left" valign="top"><a href="#res_002ecomposer">13.1.4 res.composer</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Compose tiles from given base tiles
 
35043
</td></tr>
 
35044
<tr><td align="left" valign="top"><a href="#res_002emaze">13.1.5 res.maze</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           Generate arbitrarily shaped mazes
 
35045
</td></tr>
 
35046
<tr><td align="left" valign="top"><a href="#res_002epuzzle">13.1.6 res.puzzle</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Generate puzzle tiles and shuffle resulting puzzle clusters
 
35047
</td></tr>
 
35048
<tr><td align="left" valign="top"><a href="#res_002erandom">13.1.7 res.random</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Choosing random tiles in a given distribution
 
35049
</td></tr>
 
35050
<tr><td align="left" valign="top"><a href="#res_002etrain">13.1.8 res.train</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Set up floor chains that move on given railways
 
35051
</td></tr>
 
35052
</table>
 
35053
 
 
35054
 
 
35055
<hr size="6">
 
35056
<a name="Resolver-Chaining"></a>
 
35057
<table cellpadding="1" cellspacing="1" border="0">
 
35058
<tr><td valign="middle" align="left">[<a href="#Resolvers" title="Previous section in reading order"> &lt; </a>]</td>
 
35059
<td valign="middle" align="left">[<a href="#Custom-Resolver" title="Next section in reading order"> &gt; </a>]</td>
 
35060
<td valign="middle" align="left"> &nbsp; </td>
 
35061
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
35062
<td valign="middle" align="left">[<a href="#Resolvers" title="Up section"> Up </a>]</td>
 
35063
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
35064
<td valign="middle" align="left"> &nbsp; </td>
 
35065
<td valign="middle" align="left"> &nbsp; </td>
 
35066
<td valign="middle" align="left"> &nbsp; </td>
 
35067
<td valign="middle" align="left"> &nbsp; </td>
 
35068
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
35069
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
35070
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
35071
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
35072
</tr></table>
 
35073
<a name="Resolver-Chaining-1"></a>
 
35074
<h3 class="subsection">13.1.1 Resolver Chaining</h3>
 
35075
 
 
35076
<p>There exist several useful resolvers that may simplify the task of level writing
 
35077
or provide dynamic features like randomness, mazes, etc. Each of them handles
 
35078
just some keys out of your world map. For the other keys the resolver has no
 
35079
idea how to resolve them to object declarations. Thus each resolver has to be
 
35080
linked to a so called &lsquo;<samp>subresolver</samp>&rsquo;. The resolver just forwards all key
 
35081
request that it can not handle itself to its subresolver. Indeed it will in
 
35082
most cases even forward modified key requests to its subresolver that are
 
35083
required by the process of handling its own keys.
 
35084
</p>
 
35085
<p>The last resolver in the chain will either use the <a href="#Tiles-Repository">Tiles Repository</a>
 
35086
&lsquo;<samp>ti</samp>&rsquo; as its subresolver or a <a href="#Custom-Resolver">Custom Resolver</a> function, which will be
 
35087
&lsquo;<samp>ti</samp>&rsquo; based, too.
 
35088
</p>
 
35089
<p>A typical resolver chain will look like:
 
35090
</p>
 
35091
 
 
35092
<dl compact="compact">
 
35093
<dt> <b>Syntax Sample:</b></dt>
 
35094
<dd><table><tr><td>&nbsp;</td><td><pre class="example"><var>subresolver</var> = <i>res</i>.<i>random</i>(<i>ti</i>, ...)
 
35095
<var>topresolver</var> = <i>res</i>.<i>composer</i>(<var>subresolver</var>)
 
35096
width, height = <i>wo</i>(<var>topresolver</var>, ...)
 
35097
</pre></td></tr></table>
 
35098
 
 
35099
</dd>
 
35100
<dt> <b>Details:</b></dt>
 
35101
<dd><p>The call of every resolver returns a context reference handle, that must be
 
35102
supplied to the upward resolver in the chain. Thus you need to start with the
 
35103
lowest resolver in your level code. The <a href="#World-Creation">World Creation</a> takes the top most
 
35104
resolver context handle.
 
35105
</p>
 
35106
<p>There is no limit to the number of chained resolvers. But the order of resolvers
 
35107
may sometimes be critical. Please read carefully the resolver notes for usage,
 
35108
restrictions and caveats.
 
35109
</p>
 
35110
</dd>
 
35111
<dt> <b>Full Example:</b></dt>
 
35112
<dd><p>The level &quot;Demo Resolver Chain&quot; of levelpack &quot;Demolevels&quot;:
 
35113
</p><table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;~&quot;] = {&quot;fl_water&quot;}
 
35114
ti[&quot;s&quot;] = {&quot;fl_sahara&quot;}
 
35115
ti[&quot;t&quot;] = {&quot;fl_tigris&quot;}
 
35116
ti[&quot;1&quot;] = {&quot;ac-blackball&quot;, 0, 0.5}
 
35117
 
 
35118
ti[&quot;template_trigger&quot;] = {&quot;it_trigger&quot;, target=&quot;myoxyd%%&quot;, action=&quot;open&quot;}
 
35119
ti[&quot;template_oxyd&quot;]    = ti[&quot;~&quot;] .. {&quot;st_oxyd&quot;, &quot;myoxyd%%&quot;}
 
35120
 
 
35121
myrandom = res.random(ti, &quot; &quot;, {&quot;s&quot;, &quot;t&quot;})
 
35122
 
 
35123
myautotile = res.autotile(myrandom, {&quot;a&quot;, &quot;h&quot;, &quot;template_trigger&quot;},
 
35124
                              {&quot;A&quot;, &quot;H&quot;, &quot;template_oxyd&quot;})
 
35125
 
 
35126
w, h = wo(myautotile, &quot; &quot;, {
 
35127
&quot;A~                ~E&quot;,
 
35128
&quot;~~                ~~&quot;,
 
35129
&quot;~~   h        b   ~~&quot;,
 
35130
&quot;~~                ~~&quot;,
 
35131
&quot;B~     c    d     ~F&quot;,
 
35132
&quot;~~                ~~&quot;,
 
35133
&quot;~~        1       ~~&quot;,
 
35134
&quot;~~                ~~&quot;,
 
35135
&quot;C~     f    e     ~G&quot;,
 
35136
&quot;~~                ~~&quot;,
 
35137
&quot;~~   g        a   ~~&quot;,
 
35138
&quot;~~                ~~&quot;,
 
35139
&quot;D~                ~H&quot;
 
35140
})
 
35141
 
 
35142
wo:shuffleOxyd()
 
35143
</pre></td></tr></table>
 
35144
</dd>
 
35145
</dl>
 
35146
 
 
35147
 
 
35148
<hr size="6">
 
35149
<a name="Custom-Resolver"></a>
 
35150
<table cellpadding="1" cellspacing="1" border="0">
 
35151
<tr><td valign="middle" align="left">[<a href="#Resolver-Chaining" title="Previous section in reading order"> &lt; </a>]</td>
 
35152
<td valign="middle" align="left">[<a href="#res_002eautotile" title="Next section in reading order"> &gt; </a>]</td>
 
35153
<td valign="middle" align="left"> &nbsp; </td>
 
35154
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
35155
<td valign="middle" align="left">[<a href="#Resolvers" title="Up section"> Up </a>]</td>
 
35156
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
35157
<td valign="middle" align="left"> &nbsp; </td>
 
35158
<td valign="middle" align="left"> &nbsp; </td>
 
35159
<td valign="middle" align="left"> &nbsp; </td>
 
35160
<td valign="middle" align="left"> &nbsp; </td>
 
35161
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
35162
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
35163
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
35164
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
35165
</tr></table>
 
35166
<a name="Custom-Resolver-1"></a>
 
35167
<h3 class="subsection">13.1.2 Custom Resolver</h3>
 
35168
<a name="index-custom-resolver"></a>
 
35169
 
 
35170
<p>A customer resolver is a function in the level that allows a dynamic remapping
 
35171
of tiles. When this function is registered in the resolver chain it is called
 
35172
once for every tile to be set. The tile that this function return will be set.
 
35173
</p>
 
35174
<p>Typical use cases are design patterns that are easy to calculate, but tedious
 
35175
to draw in the map and dynamic generated levels that differ slightly on every
 
35176
restart.
 
35177
</p>
 
35178
<dl compact="compact">
 
35179
<dt> <b>Syntax:</b></dt>
 
35180
<dd><p>tile = <b>myresolver</b>(<i>key</i>, <i>x</i>, <i>y</i>)
 
35181
</p>
 
35182
<dl compact="compact">
 
35183
<dt> <i>key</i></dt>
 
35184
<dd><p>String that contains the tile key to be resolved.
 
35185
</p></dd>
 
35186
<dt> <i>x</i></dt>
 
35187
<dd><p>The world x coordinate of the tile.
 
35188
</p></dd>
 
35189
<dt> <i>y</i></dt>
 
35190
<dd><p>The world y coordinate of the tile.
 
35191
</p></dd>
 
35192
</dl>
 
35193
 
 
35194
</dd>
 
35195
<dt> <b>Details:</b></dt>
 
35196
<dd><p>A custom resolver function is the last resolver that is called in the chain.
 
35197
It has to return the final tile that should be drawn at the given position.
 
35198
This can be done by statement &lsquo;<samp>return ti[&quot;k&quot;]</samp>&rsquo;, which references the tile
 
35199
already declared in the tiles map.
 
35200
</p>
 
35201
<p>If no suitable tile was declared you can alternatively return a new tile
 
35202
like &lsquo;<samp>return ti({&quot;st_switch&quot;, state=ON})</samp>&rsquo;.
 
35203
</p>
 
35204
<p>If you decide not to draw any tile at all, you must return an empty tile
 
35205
declaration: &lsquo;<samp>return {&quot;nil&quot;}</samp>&rsquo; or &lsquo;<samp>return {}</samp>&rsquo;.
 
35206
</p>
 
35207
<p>&lsquo;<samp>return nil</samp>&rsquo; indicates an error of usage of an unknown tile key.
 
35208
</p>
 
35209
</dd>
 
35210
<dt> <b>Example:</b></dt>
 
35211
<dd><p>The level &quot;Demo User Resolver&quot; of levelpack &quot;Demolevels&quot;:
 
35212
</p><table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;r&quot;] = {&quot;fl_rough_red&quot;}
 
35213
ti[&quot;b&quot;] = {&quot;fl_rough_blue&quot;}
 
35214
ti[&quot;1&quot;] = {&quot;#ac-blackball&quot;}
 
35215
 
 
35216
ti[&quot;x&quot;] = {&quot;it_cross&quot;}
 
35217
 
 
35218
function myresolver(key, x, y)
 
35219
    if key == &quot; &quot; then
 
35220
        local center = ((x%3) * (y%3))%2
 
35221
        local checker = ((math.modf(x/3) %2) + (math.modf(y/3) %2))%2
 
35222
        if center + checker == 1 then
 
35223
            return ti[&quot;r&quot;]
 
35224
        else
 
35225
            return ti[&quot;b&quot;]
 
35226
        end
 
35227
    else
 
35228
        return ti[key]
 
35229
    end
 
35230
end
 
35231
 
 
35232
w, h = wo(myresolver, &quot; &quot;, {
 
35233
&quot;                    &quot;,
 
35234
&quot;                    &quot;,
 
35235
&quot;                    &quot;,
 
35236
&quot;      x x           &quot;,
 
35237
&quot;       x            &quot;,
 
35238
&quot;      x x           &quot;,
 
35239
&quot;                    &quot;,
 
35240
&quot;          1         &quot;,
 
35241
&quot;                    &quot;,
 
35242
&quot;                    &quot;,
 
35243
&quot;                    &quot;,
 
35244
&quot;                    &quot;,
 
35245
&quot;                    &quot;
 
35246
})
 
35247
</pre></td></tr></table>
 
35248
</dd>
 
35249
</dl>
 
35250
 
 
35251
 
 
35252
<hr size="6">
 
35253
<a name="res_002eautotile"></a>
 
35254
<table cellpadding="1" cellspacing="1" border="0">
 
35255
<tr><td valign="middle" align="left">[<a href="#Custom-Resolver" title="Previous section in reading order"> &lt; </a>]</td>
 
35256
<td valign="middle" align="left">[<a href="#res_002ecomposer" title="Next section in reading order"> &gt; </a>]</td>
 
35257
<td valign="middle" align="left"> &nbsp; </td>
 
35258
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
35259
<td valign="middle" align="left">[<a href="#Resolvers" title="Up section"> Up </a>]</td>
 
35260
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
35261
<td valign="middle" align="left"> &nbsp; </td>
 
35262
<td valign="middle" align="left"> &nbsp; </td>
 
35263
<td valign="middle" align="left"> &nbsp; </td>
 
35264
<td valign="middle" align="left"> &nbsp; </td>
 
35265
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
35266
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
35267
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
35268
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
35269
</tr></table>
 
35270
<a name="res_002eautotile-1"></a>
 
35271
<h3 class="subsection">13.1.3 res.autotile</h3>
 
35272
<a name="index-res_002eautotile"></a>
 
35273
 
 
35274
<p>Autotiling reduces the number of required tile declarations by generating them
 
35275
according to given simple rules. The most common application are a bunch of
 
35276
identical switch like objects that all target the same type of object
 
35277
like a door or a laser. As each of them has its individual target object it
 
35278
would require to write a separate tile declaration with a unique tile key, e.g.
 
35279
</p>
 
35280
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;A&quot;] = {&quot;st_floppy&quot;, target=&quot;laserA&quot;}
 
35281
ti[&quot;B&quot;] = {&quot;st_floppy&quot;, target=&quot;laserB&quot;}
 
35282
ti[&quot;C&quot;] = {&quot;st_floppy&quot;, target=&quot;laserC&quot;}
 
35283
ti[&quot;a&quot;] = {&quot;st_laser&quot;, name=&quot;laserA&quot;}
 
35284
ti[&quot;b&quot;] = {&quot;st_laser&quot;, name=&quot;laserB&quot;}
 
35285
ti[&quot;c&quot;] = {&quot;st_laser&quot;, name=&quot;laserC&quot;}
 
35286
</pre></td></tr></table>
 
35287
 
 
35288
<p>Autotiling requires just one template tile of each type and substitutes any
 
35289
pattern &lsquo;<samp>%%</samp>&rsquo; by a unique substitution.
 
35290
</p>
 
35291
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;template_switch&quot;] = {&quot;st_floppy&quot;, target=&quot;laser%%&quot;}
 
35292
ti[&quot;template_laser&quot;]  = {&quot;st_laser&quot;, name=&quot;laser%%&quot;}
 
35293
</pre></td></tr></table>
 
35294
 
 
35295
<p>Independent on the number of required unique objects you have just one template.
 
35296
You just declare the used range of tile keys by a rule and are free to use
 
35297
them within your level map.
 
35298
</p>
 
35299
<dl compact="compact">
 
35300
<dt> <b>Syntax:</b></dt>
 
35301
<dd>
 
35302
<p><b>res.autotile</b>(<i>subresolver</i>, <i>rules</i>)
 
35303
</p>
 
35304
<dl compact="compact">
 
35305
<dt> <i>subresolver</i></dt>
 
35306
<dd><p>Resolver to which unresolved requests should be forwarded. May be &lsquo;<samp>ti</samp>&rsquo;
 
35307
as the final resolver of the resolver chain.
 
35308
</p></dd>
 
35309
<dt> <i>rules</i> = <i>rule</i>, <i>rule</i>,...</dt>
 
35310
<dd><p>One rule or as many as you like, all separated by a comma.
 
35311
</p></dd>
 
35312
<dt> <i>rule</i> = <i>prefixrule</i> | <i>rangerule</i></dt>
 
35313
<dd><p>Each rule can be either a prefixrule or a rangerule in any mixture
 
35314
</p></dd>
 
35315
<dt> <i>prefixrule</i> = {<i>prefix</i>, <i>template</i>}</dt>
 
35316
<dd><p>A table with two entries. First a prefix string that is common to all tile
 
35317
keys that should be handled followed by key string of the template tile.
 
35318
</p></dd>
 
35319
<dt> <i>rangerule</i> = {<i>first</i>, <i>last</i>, <i>template</i>&nbsp;[, <i>offset</i>]}</dt>
 
35320
<dd><p>A table with at least three entries. A string with the first key to be handled,
 
35321
followed by a string with the last key to be handled. The third value is the key
 
35322
string of the template tile. An optional fourth value, that defaults to <code>1</code>,
 
35323
defines the number of the first key on &lsquo;<samp>%%</samp>&rsquo; pattern substitutions.
 
35324
</p></dd>
 
35325
</dl>
 
35326
 
 
35327
</dd>
 
35328
<dt> <b>Syntax Samples:</b></dt>
 
35329
<dd><table><tr><td>&nbsp;</td><td><pre class="example">res.autotile(ti, {&quot;A&quot;, &quot;template_switch&quot;}, {&quot;L&quot;, &quot;template_laser})
 
35330
res.autotile(ti, {&quot;a&quot;, &quot;e&quot;, &quot;template_trigger}, {&quot;A&quot;, &quot;E&quot;, &quot;template_door&quot;}
 
35331
</pre></td></tr></table>
 
35332
 
 
35333
</dd>
 
35334
<dt> <b>Details:</b></dt>
 
35335
<dd><p>Prefix rules need a key length of at least 2. You can not use it with maps
 
35336
of just one character per tile. The resolver will create a tile declaration for
 
35337
any tile key in the map that matches the given prefix. A copy of the template
 
35338
will be taken.
 
35339
</p>
 
35340
<p>Within this copy of the template all occurrences of the two characters &lsquo;<samp>%%</samp>&rsquo;
 
35341
in explicit object declarations will be substituted by a single percent sign
 
35342
followed by the suffix of the used tile key. Thus a key of &lsquo;<samp>AD</samp>&rsquo; will target
 
35343
the laser &lsquo;<samp>laser%D</samp>&rsquo;. You need to use the key &lsquo;<samp>LD</samp>&rsquo; in the map for the
 
35344
matching laser.
 
35345
</p>
 
35346
<p>Rangerules match any tile key in the given range. It can well be used in one
 
35347
character key maps. But it can be used in multicharacter maps, too. In this case
 
35348
the given first and last keys may just differ in the last character. Again a
 
35349
copy of the template rule will be generated and the &lsquo;<samp>%%</samp>&rsquo; patterns will be
 
35350
substituted. But in this case the substitution is composed of a single percent
 
35351
sign followed by an integer number, that counts the key position within the
 
35352
given range, starting with the given offset or default <code>1</code>. Thus a key of
 
35353
&lsquo;<samp>c</samp>&rsquo; in the syntax sample above will target the door &lsquo;<samp>door%3</samp>&rsquo;. You
 
35354
would need to use the key &lsquo;<samp>C</samp>&rsquo; in the map for the matching door.
 
35355
</p>
 
35356
<p>The template tile definitions can well be composed of several concatenated
 
35357
tiles even with references of base tiles. The pattern substitution takes place
 
35358
on any attribute value containing string descriptions. A valid template would
 
35359
be:
 
35360
</p><table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;template&quot;] = ti[&quot;~&quot;] .. ti({&quot;it_trigger&quot;, target={&quot;door%%#*&quot;,&quot;laser%%&quot;}}) .. {&quot;st_grate1&quot;}
 
35361
</pre></td></tr></table>
 
35362
 
 
35363
<p>A pattern substitution can even take place on a key of a referenced base tile.
 
35364
Every occurrence of the two characters &lsquo;<samp>%%</samp>&rsquo; in the key will be substituted
 
35365
by the suffix of the used tile key without a preceeding percent sign. E.g. the
 
35366
template:
 
35367
</p>
 
35368
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;template&quot;] = ti[&quot;P%%&quot;] .. {&quot;st_floppy&quot;, target=&quot;laser%%&quot;}
 
35369
</pre></td></tr></table>
 
35370
 
 
35371
<p>applied to a key with the suffix &lsquo;<samp>d</samp>&rsquo; will result in a base tile key &lsquo;<samp>Pd</samp>&rsquo;.
 
35372
This feature is especially useful if the autotile resolver is chained to
 
35373
another subresolver which generates the base tiles.
 
35374
</p>
 
35375
</dd>
 
35376
<dt> <b>Full Example:</b></dt>
 
35377
<dd><table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot; &quot;] = {&quot;fl_sahara&quot;}
 
35378
 
 
35379
ti[&quot;template_a&quot;] = {&quot;st_floppy&quot;, target={&quot;door%%#*&quot;,&quot;laser%%&quot;}}
 
35380
ti[&quot;template_A&quot;] = {&quot;st_blocker&quot;, &quot;door%%#&quot;}
 
35381
ti[&quot;template_1&quot;] = {&quot;st_laser_s&quot;, &quot;laser%%&quot;}
 
35382
 
 
35383
ti[&quot;x&quot;] = {&quot;#ac-marble_black&quot;} .. ti({&quot;it_floppy&quot;})
 
35384
 
 
35385
local resolver = res.autotile(ti, {&quot;a&quot;, &quot;e&quot;, &quot;template_a&quot;},
 
35386
    {&quot;A&quot;, &quot;E&quot;, &quot;template_A&quot;},  {&quot;1&quot;, &quot;5&quot;, &quot;template_1&quot;})
 
35387
 
 
35388
w, h = wo(resolver, &quot; &quot;, {
 
35389
&quot;                    &quot;,
 
35390
&quot;                    &quot;,
 
35391
&quot;   a   DB  e    BC  &quot;,
 
35392
&quot;                    &quot;,
 
35393
&quot;   CD  b   AE   c   &quot;,
 
35394
&quot;                    &quot;,
 
35395
&quot;   d   EA           &quot;,
 
35396
&quot;                    &quot;,
 
35397
&quot;           x        &quot;,
 
35398
&quot;                    &quot;,
 
35399
&quot;                    &quot;,
 
35400
&quot;   4  2  5  1  3    &quot;,
 
35401
&quot;                    &quot;
 
35402
})
 
35403
</pre></td></tr></table>
 
35404
<p>A more elaborate example can be found in <a href="#Orthogonal-Autotiling">Orthogonal Autotiling</a>.
 
35405
</p>
 
35406
</dd>
 
35407
<dt> <b>Caveats:</b><a name="Caveats"></a></dt>
 
35408
<dd><p>Do not use the hash sign &lsquo;<samp>#</samp>&rsquo; as suffix character for key length 2 and
 
35409
above autotiled keys. A key <code>&quot;A#&quot;</code> could result in an unexpected &lsquo;<samp>%%</samp>&rsquo;
 
35410
substitution in the name attribute. A name <code>&quot;sample%%&quot;</code> would be
 
35411
substituted by <code>&quot;sample%#&quot;</code> which is a name that will be autonumbered
 
35412
(see section <a href="#Object-Naming">Object Naming</a>).
 
35413
</p></dd>
 
35414
</dl>
 
35415
 
 
35416
 
 
35417
 
 
35418
<hr size="6">
 
35419
<a name="res_002ecomposer"></a>
 
35420
<table cellpadding="1" cellspacing="1" border="0">
 
35421
<tr><td valign="middle" align="left">[<a href="#res_002eautotile" title="Previous section in reading order"> &lt; </a>]</td>
 
35422
<td valign="middle" align="left">[<a href="#res_002emaze" title="Next section in reading order"> &gt; </a>]</td>
 
35423
<td valign="middle" align="left"> &nbsp; </td>
 
35424
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
35425
<td valign="middle" align="left">[<a href="#Resolvers" title="Up section"> Up </a>]</td>
 
35426
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
35427
<td valign="middle" align="left"> &nbsp; </td>
 
35428
<td valign="middle" align="left"> &nbsp; </td>
 
35429
<td valign="middle" align="left"> &nbsp; </td>
 
35430
<td valign="middle" align="left"> &nbsp; </td>
 
35431
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
35432
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
35433
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
35434
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
35435
</tr></table>
 
35436
<a name="res_002ecomposer-1"></a>
 
35437
<h3 class="subsection">13.1.4 res.composer</h3>
 
35438
<a name="index-res_002ecomposer"></a>
 
35439
 
 
35440
<p>The composer resolver reduces the number of required tile declarations by
 
35441
generating them by composition of base tiles. Even small levels and nearly
 
35442
every large level will use many different objects in numerous tile compositions.
 
35443
As the usable one character tile key candidates will not suffice you will need
 
35444
to use two or three character tile keys. But you will need numerous tile
 
35445
declarations, one for every used object combination.
 
35446
</p>
 
35447
<p>The composer frees you from declaring every used combination. You just declare
 
35448
the base objects, e.g. the floors and all stones, items, actors and use
 
35449
combinations of these base tiles keys. The composer constructs the required
 
35450
tile declarations on the fly. E.g. with the following base tile declarations:
 
35451
</p>
 
35452
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot; .&quot;] = {&quot;fl_space&quot;}
 
35453
ti[&quot; ~&quot;] = {&quot;fl_water&quot;}
 
35454
ti[&quot;X &quot;] = {&quot;st_grate&quot;}
 
35455
ti[&quot;h &quot;] = {&quot;it_hammer&quot;}
 
35456
</pre></td></tr></table>
 
35457
 
 
35458
<p>You can freely use any of the additional combination like <code>&quot;X.&quot;</code> - a grate
 
35459
on space, <code>&quot;X~&quot;</code> - a grate on water, <code>&quot;h.&quot;</code> - a hammer on space,
 
35460
<code>&quot;h~&quot;</code> - a hammer on water.
 
35461
</p>
 
35462
<dl compact="compact">
 
35463
<dt> <b>Syntax:</b></dt>
 
35464
<dd>
 
35465
<p><b>res.composer</b>(<i>subresolver</i>)
 
35466
</p>
 
35467
<p><b>res.composer</b>(<i>subresolver</i>, <i>sequence</i>)
 
35468
</p>
 
35469
<dl compact="compact">
 
35470
<dt> <i>subresolver</i></dt>
 
35471
<dd><p>Resolver to which unresolved requests should be forwarded. May be &lsquo;<samp>ti</samp>&rsquo;
 
35472
as the final resolver of the resolver chain.
 
35473
</p></dd>
 
35474
<dt> <i>sequence</i></dt>
 
35475
<dd><p>Search sequence for basic tile declarations given as a string of priority
 
35476
numbers. The sequence defaults to <code>&quot;123456789&quot;</code>.
 
35477
</p></dd>
 
35478
</dl>
 
35479
 
 
35480
</dd>
 
35481
<dt> <b>Syntax Samples:</b></dt>
 
35482
<dd><table><tr><td>&nbsp;</td><td><pre class="example">res.composer(ti)
 
35483
</pre></td></tr></table>
 
35484
 
 
35485
</dd>
 
35486
<dt> <b>Details:</b></dt>
 
35487
<dd><p>For every key in the map the subresolver will be first requested for a tile
 
35488
declaration. Thus any given explicit declaration will precede the auto
 
35489
composition.
 
35490
</p>
 
35491
<p>Just in case that no declaration exists the search starts for existing subkey
 
35492
tiles. Subkeys are keys with all but some characters replaced by a whitespace
 
35493
&lsquo;<samp> </samp>&rsquo;.
 
35494
</p>
 
35495
<p>The search sequence is given by the optional second argument and defaults to
 
35496
<code>&quot;123456789&quot;</code>. In the first step all character positions marked by a
 
35497
&lsquo;<samp>1</samp>&rsquo; in the sequence string are maintained in the key string and all others
 
35498
are replaced by whitespace. In the second step all character positions marked
 
35499
by a &lsquo;<samp>2</samp>&rsquo; in the sequence string are maintained in the key string and all
 
35500
others are replaced by whitespace. This procedure continues until the number
 
35501
equals the key length. All generated subkeys are resolved by the subresolver
 
35502
and concatenated in the given sequence.
 
35503
</p>
 
35504
<p>With the default sequence <code>&quot;123456789&quot;</code> a key request for <code>&quot;~mX&quot;</code> is
 
35505
resolved to subkeys <code>&quot;~  &quot;</code>, <code>&quot; m &quot;</code> and <code>&quot;  X&quot;</code>. These subkeys
 
35506
are resolved by the subresolver. If the subresolver is &lsquo;<samp>ti</samp>&rsquo; the result is:
 
35507
</p>
 
35508
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;~  &quot;] .. ti[&quot; m &quot;] .. ti[&quot;  X&quot;]
 
35509
</pre></td></tr></table>
 
35510
 
 
35511
<p>With a key length of 3 or more characters it is sometimes useful to avoid a
 
35512
total decomposition into single character based subkeys. E.g. you may want
 
35513
to use a <a href="#res_002eautotile">res.autotile</a> or <a href="#res_002epuzzle">res.puzzle</a> as subresolver. Both have the
 
35514
need of essential 2 character subkeys. In this case you can simply define
 
35515
the sequence as <code>&quot;122&quot;</code> for a key length of 3. A key request of
 
35516
<code>&quot;~Pa&quot;</code> will be resolved to subkeys <code>&quot;~  &quot;</code>, <code>&quot; Pa&quot;</code>. In case
 
35517
of a puzzle subresolver this would result in:
 
35518
</p>
 
35519
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;~  &quot;] .. ti[&quot; P&quot;]
 
35520
</pre></td></tr></table>
 
35521
 
 
35522
<p>with second tile declaration being a <a href="#st_005fpuzzle">st_puzzle</a> declaration with the
 
35523
&lsquo;<samp>connections</samp>&rsquo; attribute being set to <code>&quot;w&quot;</code> according to the last key
 
35524
character &lsquo;<samp>a</samp>&rsquo;.
 
35525
</p>
 
35526
<p>With a <code>&quot;231&quot;</code> you stick to a total decomposition, but you redefine the
 
35527
sequence of evaluation and composition. For the key <code>&quot;~mX&quot;</code> you would get
 
35528
in contrast to the first example:
 
35529
</p>
 
35530
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;  X&quot;] .. ti[&quot;~  &quot;] .. ti[&quot; m &quot;]
 
35531
</pre></td></tr></table>
 
35532
 
 
35533
<p>In all cases, subkeys, that are strings of whitespace only, will simply be
 
35534
ignored. With the default sequence the key <code>&quot;~ X&quot;</code> will result just in:
 
35535
</p>
 
35536
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;~  &quot;] .. ti[&quot;  X&quot;]
 
35537
</pre></td></tr></table>
 
35538
 
 
35539
<p>If you set your floors by usage of the composer you should use the all
 
35540
whitespace key as your default floor as this key does not resolve via the
 
35541
composer and needs the backup of the default mechanism.
 
35542
</p>
 
35543
</dd>
 
35544
<dt> <b>Full Example:</b></dt>
 
35545
<dd><table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;  &quot;] = {&quot;fl_sahara&quot;}
 
35546
ti[&quot; =&quot;] = {&quot;fl_tigris&quot;}
 
35547
ti[&quot; .&quot;] = {&quot;fl_abyss&quot;}
 
35548
ti[&quot; ~&quot;] = {&quot;fl_water&quot;}
 
35549
ti[&quot; ;&quot;] = {&quot;fl_lawn&quot;}
 
35550
 
 
35551
ti[&quot;# &quot;] = {&quot;st_granite&quot;}
 
35552
ti[&quot;W &quot;] = {&quot;st_wood&quot;}
 
35553
ti[&quot;X &quot;] = {&quot;st_oxyd&quot;}
 
35554
ti[&quot;G &quot;] = {&quot;st_grate_cross&quot;}
 
35555
 
 
35556
ti[&quot;2 &quot;] = {&quot;it_coin_s&quot;}
 
35557
ti[&quot;s &quot;] = {&quot;it_seed&quot;}
 
35558
ti[&quot;c &quot;] = {&quot;it_cherry&quot;}
 
35559
ti[&quot;h &quot;] = {&quot;it_hammer&quot;}
 
35560
 
 
35561
ti[&quot;k &quot;] = {&quot;it_key&quot;} .. ti({&quot;st_lightglass&quot;})
 
35562
 
 
35563
ti[&quot;xx&quot;] = {&quot;#ac_marble_black&quot;}
 
35564
 
 
35565
local resolver = res.composer(ti)
 
35566
 
 
35567
w, h = wo(resolver, &quot;  &quot;, {
 
35568
--0001020304050607080910111213141516171819
 
35569
 &quot;                                        &quot;,
 
35570
 &quot;  h= ;W;2;c G~ ~# #.2.X X~k=k;          &quot;,
 
35571
 &quot;                                        &quot;,
 
35572
 &quot;  2;s;    2.s.    2=s=                  &quot;,
 
35573
 &quot;  c;h;    c.h.    c=h=    xx            &quot;,
 
35574
 &quot;                                        &quot;
 
35575
})
 
35576
</pre></td></tr></table>
 
35577
 
 
35578
</dd>
 
35579
</dl>
 
35580
 
 
35581
 
 
35582
<hr size="6">
 
35583
<a name="res_002emaze"></a>
 
35584
<table cellpadding="1" cellspacing="1" border="0">
 
35585
<tr><td valign="middle" align="left">[<a href="#res_002ecomposer" title="Previous section in reading order"> &lt; </a>]</td>
 
35586
<td valign="middle" align="left">[<a href="#res_002epuzzle" title="Next section in reading order"> &gt; </a>]</td>
 
35587
<td valign="middle" align="left"> &nbsp; </td>
 
35588
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
35589
<td valign="middle" align="left">[<a href="#Resolvers" title="Up section"> Up </a>]</td>
 
35590
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
35591
<td valign="middle" align="left"> &nbsp; </td>
 
35592
<td valign="middle" align="left"> &nbsp; </td>
 
35593
<td valign="middle" align="left"> &nbsp; </td>
 
35594
<td valign="middle" align="left"> &nbsp; </td>
 
35595
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
35596
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
35597
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
35598
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
35599
</tr></table>
 
35600
<a name="res_002emaze-1"></a>
 
35601
<h3 class="subsection">13.1.5 res.maze</h3>
 
35602
<a name="index-res_002emaze"></a>
 
35603
 
 
35604
<p>The maze resolver supports you in the creation of quite arbitrary mazes. The
 
35605
shape is no longer limited to boring rectangular areas of one grid thick walls
 
35606
leaving the player just a one grid path uniquely connecting all parts of the maze.
 
35607
</p>
 
35608
<p>This second generation maze generator lets you fill mazes in arbitrarily shaped
 
35609
areas, mazes with thick walls or chasms, or thin walls of just a sheet of window
 
35610
glass, mazes with cells of single grid, cells that are whole islands or mazes
 
35611
based on <a href="#it_005fstrip">it_strip</a> that have cells of no extent and consist of connections
 
35612
only. The maze cells may be aligned strictly rectangular or shifted in one
 
35613
direction, they may be just connected to its 4 neighbors or to 6 neighbors in
 
35614
hexagonal mazes or three dimensional mazes. You can write and plug in your own
 
35615
maze generation and rendering algorithms. And finally you can analyse,
 
35616
postprocess and even modify your maze even after the initial creation.
 
35617
</p>
 
35618
<p>From the mathematical point of view we provide the basic structures for
 
35619
generation of quite arbitrary directed graphs. Our maze consists of cells, the
 
35620
vertices of a graph. Every cell can be connected to a given number of neighbor
 
35621
cells.  But these connections, that are the passages from one cell to another,
 
35622
can even be direction dependent. This allows you to use window panes on either
 
35623
side of a connection or to use oneways for your connections, too. These passages
 
35624
from one cell to another are the edges of our graph and as they may be directed
 
35625
we have a directed graph. But for most mazes the support of directions is
 
35626
irrelevant and transparent, and you do not really need to know anything about
 
35627
graphs at all. Thus we called the resolver just a maze resolver.
 
35628
</p>
 
35629
<p>Of course such a versatile resolver needs some configuration. As the parameters
 
35630
exceed the number of arguments, that you can reasonably supply to a function
 
35631
just by enlisting them, we decided to group the parameters for specific
 
35632
tasks and to use a table with named attributes for the configuration. This
 
35633
sounds more complex than it is. But watch out carefully for the table curly
 
35634
braces as they are necessary and can not be omitted.
 
35635
</p>
 
35636
<p>In a big level you may want to generate two or even more completely independent
 
35637
mazes. You can do this by using multiple instances of this resolver. The
 
35638
resolver handle returned on the configuration is a unique reference pointer for
 
35639
the maze for subsequent requests. Store it and link all the maze resolvers as
 
35640
explained in <a href="#Resolver-Chaining">Resolver Chaining</a>.
 
35641
</p>
 
35642
<dl compact="compact">
 
35643
<dt> <b>Location:</b></dt>
 
35644
<dd><p>This resolver is part of the library &lsquo;<samp>libmaze</samp>&rsquo; as of release 2. You can
 
35645
use it by adding the following dependency to your level <a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a>
 
35646
declaration:
 
35647
</p><table><tr><td>&nbsp;</td><td><pre class="example">  &lt;<i>el</i>:<b>dependency</b> <i>el</i>:<b>path</b>=&quot;<var>lib/libmaze</var>&quot; <i>el</i>:<b>id</b>=&quot;<var>lib/libmaze</var>&quot; <i>el</i>:<b>release</b>=&quot;<var>2</var>&quot; <i>el</i>:<b>preload</b>=&quot;<var>true</var>&quot;/&gt;
 
35648
</pre></td></tr></table>
 
35649
 
 
35650
<p>The library <a href="#libmap">libmap</a> is automatically preloaded by this resolver.
 
35651
</p>
 
35652
</dd>
 
35653
<dt> <b>Syntax:</b></dt>
 
35654
<dd>
 
35655
<p><i>themaze</i> = <b>res.maze</b>(<i>subresolver</i>, <i>attributes</i>)
 
35656
</p>
 
35657
<dl compact="compact">
 
35658
<dt> <i>subresolver</i></dt>
 
35659
<dd><p>Resolver to which unresolved requests should be forwarded. May be &lsquo;<samp>ti</samp>&rsquo;
 
35660
as the final resolver of the resolver chain.
 
35661
</p></dd>
 
35662
<dt> <i>attributes</i> = {<i>keyvalue</i>, <i>keyvalue</i>,...}</dt>
 
35663
<dd><p>An anonymous table with one or many attributes given as key value pairs,
 
35664
separated by a comma.
 
35665
</p></dd>
 
35666
<dt> <i>keyvalue</i> = &lt;area=<i>area_value</i> | render = <i>render_value</i> | kernel = <i>kernel_value</i> | spacing = <i>spacing_value</i> | persistent=<i>persistence</i>&gt;</dt>
 
35667
<dd><p>Values for given keys that may occur in any sequence in the anonymous table.
 
35668
</p></dd>
 
35669
<dt> <i>area_value</i> = {&lt;<i>rectangular_area</i> | <i>marked_area</i>&gt;}</dt>
 
35670
<dd><p>The maze area specification, that is either defined as an rectangular area
 
35671
or an area marked in the world&rsquo;s map.
 
35672
</p></dd>
 
35673
<dt> <i>rectangular_area</i> = <i>anchor</i>, <i>width</i>, <i>height</i></dt>
 
35674
<dd><p>An rectangular area that is given by an anchor position within the world and
 
35675
two numbers for the width and height measured in maze cells.
 
35676
</p></dd>
 
35677
<dt> <i>anchor</i></dt>
 
35678
<dd><p>Anything that is convertible to a <a href="#Position">Position</a> that denotes the upper left
 
35679
edge of the rectangular maze area. Besides a position value, an object reference
 
35680
or a name string of an object or position are supported value types.
 
35681
</p></dd>
 
35682
<dt> <i>marked_area</i></dt>
 
35683
<dd><p>One or multiple strings separated by a comma as simple entries in the anonymous
 
35684
table. Every string does either specify a key match, a key prefix or an object
 
35685
name. All these strings can be used at the same time for marking an area. The
 
35686
strings can occur in any sequence and multiplicity.
 
35687
</p></dd>
 
35688
<dt> <i>kernel_value</i> = {kernel_width, kernel_height}</dt>
 
35689
<dd><p>The size of the kernel of a cell given by width and height in number of grids.
 
35690
</p></dd>
 
35691
<dt> <i>spacing_value</i> = {spacing_x, spacing_y}</dt>
 
35692
<dd><p>The distance of the kernel of one cell to its neighbor in x and y direction
 
35693
measured in number of grids.
 
35694
</p></dd>
 
35695
<dt> <i>render_value</i> = {&lt;<i>std_renderer_args</i> | <i>other_renderer</i>&gt;}</dt>
 
35696
<dd><p>The specification for drawing the maze. In case of a missing specification
 
35697
no drawing will be done at all. If the default standard renderer should be used
 
35698
its parameters can be directly supplied, other renderers need a type
 
35699
specification plus the necessary configuration information.
 
35700
</p></dd>
 
35701
<dt> <i>std_renderer_args</i> = <i>passage_keys</i> [, &lt;<i>wall_key</i> [, <i>kernel_key</i>] | <i>cell_map</i>&gt;]]</dt>
 
35702
<dd><p>The standard renderer takes info about tile keys to be used for the passages,
 
35703
and either a cell map, or additional tile keys for the wall and optionally the
 
35704
kernel of a cell.
 
35705
</p></dd>
 
35706
<dt> <i>passage_keys</i> = &lt;<i>passage_key</i> | {<i>passage_open</i>, <i>passage_closed</i>}&gt;</dt>
 
35707
<dd><p>Usually you just give a tile key for open maze passages. Closed passages appear
 
35708
like walls and use the same tile key. But in case you want to use special tile
 
35709
keys for open and for closed passages you can supply two strings in an
 
35710
anonymous table. If you give no wall key you may need to include an
 
35711
&lsquo;<samp>st_nil</samp>&rsquo; in your open passage tile declaration to kill a wall stone drawn
 
35712
by your world map.
 
35713
</p></dd>
 
35714
<dt> <i>wall_key</i></dt>
 
35715
<dd><p>The tile key to be used for drawing walls. If it is omitted no wall is drawn
 
35716
and the resolver relies on all possible wall tiles to be drawn by the world
 
35717
map itself.
 
35718
</p></dd>
 
35719
<dt> <i>kernel_key</i></dt>
 
35720
<dd><p>In most cases the cell kernel will be drawn by the world map. But if not you
 
35721
can supply a tile key that will be drawn on every cell kernel grid.
 
35722
</p></dd>
 
35723
<dt> <i>cell_map</i></dt>
 
35724
<dd><p>Instead of kernel and wall tile keys you can supply a <a href="#libmap">libmap</a> map of a
 
35725
complete cell. The map can provide arbitrary tiles for cell kernels larger than
 
35726
a single grid. The walls can differ on the south and east side, too.
 
35727
</p></dd>
 
35728
<dt> <i>other_renderer</i> = <i>renderer</i>  [, <i>other_renderer_args</i>]</dt>
 
35729
<dd><p>Enlisting of a renderer function followed by its specific arguments.
 
35730
</p></dd>
 
35731
<dt> <i>renderer</i></dt>
 
35732
<dd><p>The function that does the rendering. By default it is
 
35733
&lsquo;<samp>lib.maze.renderer_standard</samp>&rsquo; with the above given arguments. Other supplied
 
35734
renderers are &lsquo;<samp>lib.maze.renderer_window</samp>&rsquo; and
 
35735
&lsquo;<samp>lib.maze.renderer_strip</samp>&rsquo;
 
35736
<a name="index-lib_002emaze_002erenderer_005fstandard"></a>
 
35737
<a name="index-lib_002emaze_002erenderer_005fwindow"></a>
 
35738
<a name="index-lib_002emaze_002erenderer_005fstrip"></a>
 
35739
</p>
 
35740
</dd>
 
35741
<dt> <i>persistence</i></dt>
 
35742
<dd><p>A boolean flag that defaults to &lsquo;<samp>false</samp>&rsquo;. You need to set it to &lsquo;<samp>true</samp>&rsquo;
 
35743
if you want to access the maze or any of its cells after the level
 
35744
initialization. Otherwise the maze reference handle with all its data may get
 
35745
invalid due to memory garbage collection. This is no problem for most mazes,
 
35746
that will be directly rendered and have no need of further evaluation or changes
 
35747
during runtime.
 
35748
</p></dd>
 
35749
</dl>
 
35750
 
 
35751
</dd>
 
35752
<dt> <b>Syntax Samples:</b></dt>
 
35753
<dd><table><tr><td>&nbsp;</td><td><pre class="example">maze1 = res.maze(ti, {area ={&quot;anchor1&quot;, 4, 5}, render = {&quot; &quot;, &quot;-&quot;, &quot; &quot;}})
 
35754
maze2 = res.maze(ti, {area ={&quot;.&quot;}, kernel={1,1}, render = {&quot;!&quot;, &quot;~&quot;, &quot;-&quot;}})
 
35755
maze3 = res.maze(ti, {area ={&quot;amaze#*&quot;}, render = {{&quot;.&quot;,&quot;+&quot;}, &quot;~&quot;, &quot;-&quot;}})
 
35756
maze4 = res.maze(ti, {area ={po(2, 12), 5, 5}, kernel={3,2},
 
35757
                   render = {&quot;.&quot;, wo:newMap(&quot; &quot;, {&quot;!!!~&quot;,&quot;--!~&quot;,&quot;~~~~&quot;})}})
 
35758
</pre></td></tr></table>
 
35759
 
 
35760
</dd>
 
35761
<dt> <b>Details:</b></dt>
 
35762
<dd><p>To be written.
 
35763
</p>
 
35764
 
 
35765
</dd>
 
35766
<dt> <b>Full Example:</b></dt>
 
35767
</dl>
 
35768
 
 
35769
 
 
35770
<hr size="6">
 
35771
<a name="res_002epuzzle"></a>
 
35772
<table cellpadding="1" cellspacing="1" border="0">
 
35773
<tr><td valign="middle" align="left">[<a href="#res_002emaze" title="Previous section in reading order"> &lt; </a>]</td>
 
35774
<td valign="middle" align="left">[<a href="#res_002erandom" title="Next section in reading order"> &gt; </a>]</td>
 
35775
<td valign="middle" align="left"> &nbsp; </td>
 
35776
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
35777
<td valign="middle" align="left">[<a href="#Resolvers" title="Up section"> Up </a>]</td>
 
35778
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
35779
<td valign="middle" align="left"> &nbsp; </td>
 
35780
<td valign="middle" align="left"> &nbsp; </td>
 
35781
<td valign="middle" align="left"> &nbsp; </td>
 
35782
<td valign="middle" align="left"> &nbsp; </td>
 
35783
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
35784
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
35785
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
35786
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
35787
</tr></table>
 
35788
<a name="res_002epuzzle-1"></a>
 
35789
<h3 class="subsection">13.1.6 res.puzzle</h3>
 
35790
<a name="index-res_002epuzzle"></a>
 
35791
 
 
35792
<p>The puzzle resolver helps you to reduce the number of required tile declarations
 
35793
for clusters of <a href="#st_005fpuzzle">st_puzzle</a> stones. By usage of the &lsquo;<samp>cluster</samp>&rsquo; attribute
 
35794
of <a href="#st_005fpuzzle">st_puzzle</a> you can easily set clusters of fully connected stones. But
 
35795
for irregular, internally just partial connected puzzles you often need a bunch
 
35796
of similar tile declarations that differ just in the &lsquo;<samp>connections</samp>&rsquo; attribute
 
35797
value.
 
35798
</p>
 
35799
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;B1&quot;] = {&quot;st_puzzle_blue&quot;, cluster=1}
 
35800
ti[&quot;Ba&quot;] = {&quot;st_puzzle_blue&quot;, connections=&quot;w&quot;}
 
35801
ti[&quot;Bb&quot;] = {&quot;st_puzzle_blue&quot;, connections=&quot;sw&quot;}
 
35802
ti[&quot;Bd&quot;] = {&quot;st_puzzle_blue&quot;, connections=&quot;ew&quot;}
 
35803
ti[&quot;Bh&quot;] = {&quot;st_puzzle_blue&quot;, connections=&quot;n&quot;}
 
35804
</pre></td></tr></table>
 
35805
 
 
35806
<p>Like <a href="#res_002eautotile">res.autotile</a> this resolver offers autotiling. You just define one
 
35807
template tile and can use all connections variations
 
35808
</p>
 
35809
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;B&quot;] = {&quot;st_puzzle_blue&quot;}
 
35810
</pre></td></tr></table>
 
35811
 
 
35812
<p>Additionally this resolver registers every puzzle stone set and allows you to
 
35813
shuffle the puzzle clusters. You can even select shuffle algorithms and define
 
35814
accessible sides of a puzzle.
 
35815
</p>
 
35816
<dl compact="compact">
 
35817
<dt> <b>Location:</b></dt>
 
35818
<dd><p>This resolver is part of the library &lsquo;<samp>libpuzzle</samp>&rsquo; as of release 3. You can
 
35819
use it by adding the following dependency to your level <a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a>
 
35820
declaration:
 
35821
</p><table><tr><td>&nbsp;</td><td><pre class="example">  &lt;<i>el</i>:<b>dependency</b> <i>el</i>:<b>path</b>=&quot;<var>lib/libpuzzle</var>&quot; <i>el</i>:<b>id</b>=&quot;<var>lib/libpuzzle</var>&quot; <i>el</i>:<b>release</b>=&quot;<var>3</var>&quot; <i>el</i>:<b>preload</b>=&quot;<var>true</var>&quot;/&gt;
 
35822
</pre></td></tr></table>
 
35823
 
 
35824
</dd>
 
35825
<dt> <b>Syntax:</b></dt>
 
35826
<dd>
 
35827
<p><b>res.puzzle</b>(<i>subresolver</i>, <i>rules</i>)
 
35828
</p>
 
35829
<dl compact="compact">
 
35830
<dt> <i>subresolver</i></dt>
 
35831
<dd><p>Resolver to which unresolved requests should be forwarded. May be &lsquo;<samp>ti</samp>&rsquo;
 
35832
as the final resolver of the resolver chain.
 
35833
</p></dd>
 
35834
<dt> <i>rules</i> = <i>rule</i>, <i>rule</i>,...</dt>
 
35835
<dd><p>One rule or as many as you like, all separated by a comma.
 
35836
</p></dd>
 
35837
<dt> <i>rule</i></dt>
 
35838
<dd><p>The string of the template tile key that is the common tile key prefix for all
 
35839
autogenerated tile declarations.
 
35840
</p></dd>
 
35841
</dl>
 
35842
 
 
35843
</dd>
 
35844
<dt> <b>Syntax Samples:</b></dt>
 
35845
<dd><table><tr><td>&nbsp;</td><td><pre class="example">res.puzzle(ti, &quot;B&quot;, &quot;Y&quot;, &quot;I&quot;, &quot;M&quot;)
 
35846
</pre></td></tr></table>
 
35847
 
 
35848
</dd>
 
35849
<dt> <b>Details:</b></dt>
 
35850
<dd><p>The puzzle resolver assumes a tile key length of two or more characters. The
 
35851
given rules are prefix strings which need concat with a one character suffix
 
35852
to a standard tile key. Given a rule with a proper template rule you can use
 
35853
any of the following suffices without tile declaration:
 
35854
</p>
 
35855
<table><tr><td>&nbsp;</td><td><pre class="example">    Suffix   Cluster Connections
 
35856
Solid Hollow
 
35857
 '0'   '5'       0   autoconnect
 
35858
 '1'   '6'       1   autoconnect
 
35859
 '2'   '7'       2   autoconnect
 
35860
 '3'   '8'       3   autoconnect
 
35861
 '4'   '9'       4   autoconnect
 
35862
 ' '   '+'      nil    &quot;&quot;
 
35863
 'a'   'A'      nil    &quot;w&quot;
 
35864
 'b'   'B'      nil    &quot;s&quot;
 
35865
 'c'   'C'      nil    &quot;sw&quot;
 
35866
 'd'   'D'      nil    &quot;e&quot;
 
35867
 'e'   'E'      nil    &quot;ew&quot;
 
35868
 'f'   'F'      nil    &quot;es&quot;
 
35869
 'g'   'G'      nil    &quot;esw&quot;
 
35870
 'h'   'H'      nil    &quot;n&quot;
 
35871
 'i'   'I'      nil    &quot;nw&quot;
 
35872
 'j'   'J'      nil    &quot;ns&quot;
 
35873
 'k'   'K'      nil    &quot;nsw&quot;
 
35874
 'l'   'L'      nil    &quot;ne&quot;
 
35875
 'm'   'M'      nil    &quot;new&quot;
 
35876
 'n'   'N'      nil    &quot;nes&quot;
 
35877
 'o'   'O'      nil    &quot;nesw&quot;
 
35878
 'p'   'P'      10   autoconnect
 
35879
 'q'   'Q'      11   autoconnect
 
35880
 'r'   'R'      12   autoconnect
 
35881
 's'   'S'      13   autoconnect
 
35882
 't'   'T'      14   autoconnect
 
35883
 'u'   'U'      15   autoconnect
 
35884
 'v'   'V'      16   autoconnect
 
35885
 'w'   'W'      17   autoconnect
 
35886
 'x'   'X'      18   autoconnect
 
35887
 'y'   'Y'      19   autoconnect
 
35888
 'z'   'Z'      20   autoconnect
 
35889
</pre></td></tr></table>
 
35890
 
 
35891
<p>All puzzle stones set by this resolver will be registered and shuffled by
 
35892
default with the &lsquo;<samp>intensity</samp>&rsquo; of 3. You can define other intensity attribute
 
35893
values on any puzzle stone. The maximum intensity of all stones in a cluster
 
35894
will be taken. The intensity multiplied by the number of stones in a cluster
 
35895
describes the number of inverse pushes, called pulls, that will be performed
 
35896
during shuffling. Thus an intensity of 3 on a cluster of 6 stones will perform
 
35897
18 pulls. That means it is guaranteed that you can solve the puzzle with 18
 
35898
pushes. But as some pull operations may neutralize the user may be able to
 
35899
solve such a shuffled puzzle with less than 18 pushes.
 
35900
</p>
 
35901
<p>If you define no shuffle &lsquo;<samp>algorithm</samp>&rsquo; it is assumed that the user can
 
35902
rotate the puzzle from any side and any <a href="#st_005fpuzzle">st_puzzle</a>. The requested number
 
35903
of shuffling pull operations will be performed from random puzzle stones in a
 
35904
manner that guarantees that the user can solve the puzzle if he has free access
 
35905
to all sides.
 
35906
</p>
 
35907
<p>If you set the &lsquo;<samp>algorithm</samp>&rsquo; on any of the puzzle stones to the value
 
35908
<code>&quot;marked&quot;</code> the resolver registers that the user has no free access, but
 
35909
just from positions that you did mark. You do mark a position by setting
 
35910
the attribute <a href="#push_005fdirections">push_directions</a> on a floor. All floors adjacent to puzzle
 
35911
stones, including floors beneath another puzzle stone, will be checked for this
 
35912
attribute. It is your responsibility to mark all floors and to ensure that
 
35913
the player has continuos access to these foors for solving the puzzle by
 
35914
push rotations. The attribute takes a string value, a substring of <code>&quot;nesw&quot;</code>.
 
35915
If it contains the character of the required push direction this push event will
 
35916
take part in the random reverse shuffling process.
 
35917
</p>
 
35918
<p>Note that hollow stones and their restriction of not being able to initiate a
 
35919
rotation if fully respected on shuffling.
 
35920
</p>
 
35921
</dd>
 
35922
<dt> <b>Full Example:</b></dt>
 
35923
<dd><table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;  &quot;] = {&quot;fl_sahara&quot;}
 
35924
ti[&quot;##&quot;] = {&quot;st_granite&quot;}
 
35925
 
 
35926
ti[&quot;..&quot;] = {&quot;fl_sahara&quot;, push_directions=&quot;nesw&quot;}
 
35927
 
 
35928
ti[&quot;B&quot;] = {&quot;st_puzzle_blue&quot;}
 
35929
ti[&quot;Y&quot;] = {&quot;st_puzzle_yellow&quot;}
 
35930
ti[&quot;I&quot;] = {&quot;st_puzzle_blue&quot;, intensity=2/6}
 
35931
ti[&quot;M&quot;] = {&quot;st_puzzle_blue&quot;, algorithm=&quot;marked&quot;, intensity=10}
 
35932
 
 
35933
ti[&quot;xx&quot;] = {&quot;#ac_marble_black&quot;} ..ti({&quot;it_magicwand&quot;})
 
35934
 
 
35935
local resolver = res.puzzle(ti, &quot;B&quot;, &quot;Y&quot;, &quot;I&quot;, &quot;M&quot;)
 
35936
 
 
35937
w, h = wo(resolver, &quot;  &quot;, {
 
35938
&quot;                                        &quot;,
 
35939
&quot;B1B1B1B1                                &quot;,
 
35940
&quot;B2B1BjB1                      Y1Y6Y1    &quot;,
 
35941
&quot;B2B2B2B2                      Y1Y1YC    &quot;,
 
35942
&quot;                                Y6YnY1  &quot;,
 
35943
&quot;                ##########      Y1Y1Y1  &quot;,
 
35944
&quot;                ##M1M1M1##              &quot;,
 
35945
&quot;  I1I1          ##M1McM1..              &quot;,
 
35946
&quot;  I6Ia          ..M1M1M1..      xx      &quot;,
 
35947
&quot;  I1I1            ....####              &quot;,
 
35948
&quot;                                        &quot;,
 
35949
&quot;                                        &quot;,
 
35950
&quot;                                        &quot;
 
35951
})
 
35952
</pre></td></tr></table>
 
35953
</dd>
 
35954
</dl>
 
35955
 
 
35956
 
 
35957
 
 
35958
<hr size="6">
 
35959
<a name="res_002erandom"></a>
 
35960
<table cellpadding="1" cellspacing="1" border="0">
 
35961
<tr><td valign="middle" align="left">[<a href="#res_002epuzzle" title="Previous section in reading order"> &lt; </a>]</td>
 
35962
<td valign="middle" align="left">[<a href="#res_002etrain" title="Next section in reading order"> &gt; </a>]</td>
 
35963
<td valign="middle" align="left"> &nbsp; </td>
 
35964
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
35965
<td valign="middle" align="left">[<a href="#Resolvers" title="Up section"> Up </a>]</td>
 
35966
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
35967
<td valign="middle" align="left"> &nbsp; </td>
 
35968
<td valign="middle" align="left"> &nbsp; </td>
 
35969
<td valign="middle" align="left"> &nbsp; </td>
 
35970
<td valign="middle" align="left"> &nbsp; </td>
 
35971
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
35972
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
35973
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
35974
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
35975
</tr></table>
 
35976
<a name="res_002erandom-1"></a>
 
35977
<h3 class="subsection">13.1.7 res.random</h3>
 
35978
<a name="index-res_002erandom"></a>
 
35979
 
 
35980
<p>With map based level description you have explicit control about the objects
 
35981
being set on every single grid. But sometimes you may want to introduce some
 
35982
randomness in the used objects. E.g. a floor may be made up of two types at
 
35983
random to generate a different look on every level start. The randomness would
 
35984
even make a level more difficult to play if one of the two floors would
 
35985
invert the mouse forces. The random resolver allows you to set up such
 
35986
cases.
 
35987
</p>
 
35988
<dl compact="compact">
 
35989
<dt> <b>Syntax:</b></dt>
 
35990
<dd>
 
35991
<p><b>res.random</b>(<i>subresolver</i>, <i>hits</i>, <i>replacements</i>)
 
35992
</p>
 
35993
<dl compact="compact">
 
35994
<dt> <i>subresolver</i></dt>
 
35995
<dd><p>Resolver to which unresolved requests should be forwarded. May be &lsquo;<samp>ti</samp>&rsquo;
 
35996
as the final resolver of the resolver chain.
 
35997
</p></dd>
 
35998
<dt> <i>hits</i> = <i>key</i> | {<i>hit</i>, <i>hit</i>, ...}</dt>
 
35999
<dd><p>Either a single tile key string that defines the tiles to be randomized, or a
 
36000
table of hit descriptors that should all be examined in parallel.
 
36001
</p></dd>
 
36002
<dt> <i>hit</i> = <i>key</i> | {<i>key</i>, <i>superkey</i>}</dt>
 
36003
<dd><p>Either a single tile key string or a pair of tile key string and a related
 
36004
tile superkey string. The superkey tile will be set additionally to the random
 
36005
replacement.
 
36006
</p></dd>
 
36007
<dt> <i>replacements</i> = <i>key</i> | {<i>replacement</i>, <i>replacement</i>, ...}</dt>
 
36008
<dd><p>Either a single tile key string that would be taken without randomness or as in
 
36009
most cases a table of replacement descriptors from which the resulting tile
 
36010
should be selected with randomness.
 
36011
</p></dd>
 
36012
<dt> <i>replacement</i> = <i>key</i> | {<i>key</i>, <i>frequency</i>}</dt>
 
36013
<dd><p>Either a single tile key string that should be taken with a frequency of &lsquo;<samp>1</samp>&rsquo;,
 
36014
or a pair of a tile key string with a given frequency number. The frequency can
 
36015
be an integer or non-integer number, but must be positive or zero.
 
36016
</p></dd>
 
36017
</dl>
 
36018
 
 
36019
</dd>
 
36020
<dt> <b>Syntax Samples:</b></dt>
 
36021
<dd><table><tr><td>&nbsp;</td><td><pre class="example">res.random(ti, &quot;x&quot;, {&quot;a&quot;, &quot;b&quot;})
 
36022
res.random(ti, {{&quot;x&quot;, &quot;y&quot;},{&quot;i&quot;,&quot;j&quot;}}, {{&quot;a&quot;, 2}, {&quot;b&quot;, 1}})
 
36023
</pre></td></tr></table>
 
36024
 
 
36025
</dd>
 
36026
<dt> <b>Details:</b></dt>
 
36027
<dd><p>Every key in the map is checked against the given hit key strings. If it fits
 
36028
one of them a replacement will take place.
 
36029
</p>
 
36030
<p>The replacement will be one of the replacement tile keys resolved via the
 
36031
subresolver. The different keys will be chosen with a likelihood according to
 
36032
the ratio of the given frequency numbers. If no frequency is supplied a default
 
36033
of &lsquo;<samp>1</samp>&rsquo; is taken. Thus in the first example both keys are taken in a ratio
 
36034
1:1, whereas in the second the ratio will be 2:1.
 
36035
</p>
 
36036
<p>When a superkey is given for a hit key this superkey will additionally be
 
36037
resolved via the subresolver. This feature allows to use randomness on tiles
 
36038
with more than one object on a grid position. E.g. an item or an actor on a
 
36039
random floor. The other objects can be set via the superkey while the random
 
36040
floor is set according to the replacement rules.
 
36041
</p>
 
36042
</dd>
 
36043
<dt> <b>Full Example:</b></dt>
 
36044
<dd><table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;~&quot;] = {&quot;fl_water&quot;}
 
36045
ti[&quot;s&quot;] = {&quot;fl_sahara&quot;}
 
36046
ti[&quot;t&quot;] = {&quot;fl_tigris&quot;}
 
36047
ti[&quot;i&quot;] = {&quot;fl_inverse_gray&quot;}
 
36048
ti[&quot;b&quot;] = {&quot;fl_yinyang_yin&quot;}
 
36049
ti[&quot;w&quot;] = {&quot;fl_yinyang_yang&quot;}
 
36050
 
 
36051
ti[&quot;c&quot;] = {&quot;it_coin_s&quot;}
 
36052
ti[&quot;p&quot;] = {&quot;it_brush&quot;}
 
36053
 
 
36054
ti[&quot;1&quot;] = {&quot;ac_marble_black&quot;, 0, 0.5}
 
36055
 
 
36056
simple_random = res.random(ti, &quot; &quot;, {&quot;s&quot;, &quot;t&quot;})
 
36057
 
 
36058
full_random = res.random(simple_random, {&quot;.&quot;,{&quot;C&quot;,&quot;c&quot;},{&quot;p&quot;,&quot;p&quot;}},
 
36059
                                        {{&quot;i&quot;,3},{&quot;b&quot;,4},{&quot;w&quot;,1}})
 
36060
 
 
36061
w, h = wo(full_random, &quot;s&quot;, {
 
36062
&quot;         ~~.........&quot;,
 
36063
&quot;         ~~.........&quot;,
 
36064
&quot;         ~~......C..&quot;,
 
36065
&quot;         ~~.........&quot;,
 
36066
&quot;         ~~.........&quot;,
 
36067
&quot;         ~~.........&quot;,
 
36068
&quot;         c1.........&quot;,
 
36069
&quot;         ~~.........&quot;,
 
36070
&quot;         ~~.........&quot;,
 
36071
&quot;         ~~.........&quot;,
 
36072
&quot;         ~~......p..&quot;,
 
36073
&quot;         ~~.........&quot;,
 
36074
&quot;         ~~.........&quot;
 
36075
})
 
36076
</pre></td></tr></table>
 
36077
 
 
36078
<p>Note that in this example we can use &lsquo;<samp>p</samp>&rsquo; as key as well as superkey. This
 
36079
is due to the fact that nowhere else this tile is directly set. Whereas the
 
36080
tile key &lsquo;<samp>c</samp>&rsquo; is used for another tile with the default floor. Thus we do
 
36081
need to use another unique key &lsquo;<samp>C</samp>&rsquo; for the coin on our random floor.
 
36082
</p>
 
36083
</dd>
 
36084
</dl>
 
36085
 
 
36086
<hr size="6">
 
36087
<a name="res_002etrain"></a>
 
36088
<table cellpadding="1" cellspacing="1" border="0">
 
36089
<tr><td valign="middle" align="left">[<a href="#res_002erandom" title="Previous section in reading order"> &lt; </a>]</td>
 
36090
<td valign="middle" align="left">[<a href="#General-Features" title="Next section in reading order"> &gt; </a>]</td>
 
36091
<td valign="middle" align="left"> &nbsp; </td>
 
36092
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
36093
<td valign="middle" align="left">[<a href="#Resolvers" title="Up section"> Up </a>]</td>
 
36094
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
36095
<td valign="middle" align="left"> &nbsp; </td>
 
36096
<td valign="middle" align="left"> &nbsp; </td>
 
36097
<td valign="middle" align="left"> &nbsp; </td>
 
36098
<td valign="middle" align="left"> &nbsp; </td>
 
36099
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
36100
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
36101
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
36102
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
36103
</tr></table>
 
36104
<a name="res_002etrain-1"></a>
 
36105
<h3 class="subsection">13.1.8 res.train</h3>
 
36106
<a name="index-res_002etrain"></a>
 
36107
 
 
36108
<p>The train resolver supports you in the set up of train like wandering floor
 
36109
chains. Usually short passages of solid standard floors wander on a closed
 
36110
path of otherwise unpassable floors like <a href="#fl_005fabyss">fl_abyss</a> or <a href="#fl_005fwater">fl_water</a>.
 
36111
</p>
 
36112
<p>The path itself is called railway, even though the name train does not really
 
36113
fit the features of the wandering floor chains. But these names have been
 
36114
chosen by Petr Machata in his first implementation of a simple wandering floor
 
36115
feature.
 
36116
</p>
 
36117
<p>In contrast to real world train, the wandering floors themselves do not move at
 
36118
all. Thus they do neither carry items or stones, nor do they allow an actor to
 
36119
rest on them and to be automatically transported along the path. The train
 
36120
is more like a curb wheel of a trunk. New floors are added to the front while
 
36121
trailing floors are removed.
 
36122
</p>
 
36123
<p>Actually a chain of floors is composed of two train locos which move along the
 
36124
railway path. One at the front that sets floor of the standard passable kind and
 
36125
one at the end, or exactly one grid behind the end, that resets floor of the
 
36126
unpassable floor kind.
 
36127
</p>
 
36128
<p>Usually both train locos move at the same speed keeping the passable floor
 
36129
chain length constant. But this resolver allows you to set up arbitrary
 
36130
number of train locos moving in arbitrary direction at arbitrary speed on a
 
36131
railway. But the resulting floor patterns will likely no longer behave like
 
36132
trains. Nevertheless we keep the name.
 
36133
</p>
 
36134
<p>Every railway path has to be described by a chained train resolver instance. The
 
36135
paths of different resolvers may cross each other, but crossing trains may cause
 
36136
unexpected results as the train locos just set floors without any respect to
 
36137
other trains. In future it is planned to add track and train line attributes,
 
36138
which will allow even more complex railways.
 
36139
</p>
 
36140
<dl compact="compact">
 
36141
<dt> <b>Syntax:</b></dt>
 
36142
<dd>
 
36143
<p><b>res.train</b>(<i>subresolver</i>[, <i>suffix</i>][, <i>hits</i>])
 
36144
</p>
 
36145
<dl compact="compact">
 
36146
<dt> <i>subresolver</i></dt>
 
36147
<dd><p>Resolver to which unresolved requests should be forwarded. May be &lsquo;<samp>ti</samp>&rsquo;
 
36148
as the final resolver of the resolver chain.
 
36149
</p></dd>
 
36150
<dt> <i>suffix</i></dt>
 
36151
<dd><p>An optional key suffix string. Every grid position with a matching key is
 
36152
registered as part of the railway path.
 
36153
</p></dd>
 
36154
<dt> <i>hits</i> = <i>hit</i>, <i>hit</i>, ...</dt>
 
36155
<dd><p>One or many resolver key hits that will identify positions of the railway path
 
36156
with optional trains located on them.
 
36157
</p></dd>
 
36158
<dt> <i>hit</i> = <i>key</i> | {<i>key</i> [, <i>subkey</i>][, edge=<i>edgevalue</i>][, train=<i>trainvalue</i>]}</dt>
 
36159
<dd><p>Either a single tile key string or a table of a tile key string with an optional
 
36160
related tile subkey string and optional further arguments.
 
36161
</p></dd>
 
36162
<dt> <i>edgevalue</i></dt>
 
36163
<dd><p>A railway position that marks one of two edges spanning a rectangular railway
 
36164
path.
 
36165
</p></dd>
 
36166
<dt> <i>trainvalue</i> = {<i>successorkey</i> [, <i>predecessorkey</i>] [, length=<i>trainlength</i>] [, orientation=<i>traveldirection</i>] [, interval=<i>speed</i>] [, name=<i>namevalue</i>]}</dt>
 
36167
<dd><p>A train loco that moves with the given speed interval, defaulting to 0.25
 
36168
seconds per grid, and starting into the given traveldirection. The loco sets
 
36169
floors given by the sucessorkey string that will be resolved via the subresolver.
 
36170
If a trainlength is given, a second train loco is automatically created that
 
36171
preceeds this one by the given length. This front train loco will set floors
 
36172
defined by the predecessorkey string. If the train loco has an assigned name
 
36173
string, the front train loco will be named with an appended <code>&quot;_front&quot;</code>.
 
36174
</p></dd>
 
36175
</dl>
 
36176
 
 
36177
</dd>
 
36178
<dt> <b>Syntax Samples:</b></dt>
 
36179
<dd><table><tr><td>&nbsp;</td><td><pre class="example">res.train(ti, &quot;.&quot;, {&quot; ^&quot;, train={&quot; ~&quot;, &quot; w&quot;, orientation=NORTH, length=6, interval=0.3}})
 
36180
res.train(ti, {&quot;e&quot;, edge=true}, {&quot;&gt;&quot;, train={&quot; w&quot;, orientation=EAST}}, {&quot;&lt;&quot;, train={&quot;~&quot;, orientation=WEST}})
 
36181
</pre></td></tr></table>
 
36182
 
 
36183
</dd>
 
36184
<dt> <b>Details:</b></dt>
 
36185
<dd><p>Every key in the map is checked against the given hit key strings. If it fits
 
36186
one of them the positition is added to the railway path and the subkey is used
 
36187
to set remaining objects via the subresolver onto the grid. If no subkey is
 
36188
given no additional objects are set.
 
36189
</p>
 
36190
<p>If the key is no hit, but a suffix string is given and matches the key, the
 
36191
position will be registered as part of the railway path, too. In this case
 
36192
the suffix part of the key will be replaced by space characters and the
 
36193
resulting key will be resolved via the subresolver.
 
36194
</p>
 
36195
<p>There is no need of marking every grid position of a railway, what would be a
 
36196
very annoying task if many stones and items are positioned on its path. By
 
36197
default every train moves straight forward. You just need to provide hints for
 
36198
positions where the train turns left or right. Marking the positions of the path
 
36199
that follow every turn is sufficient.
 
36200
</p>
 
36201
 
 
36202
</dd>
 
36203
<dt> <b>Full Example:</b></dt>
 
36204
<dd><table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;  &quot;] = {&quot;fl_sahara&quot;}
 
36205
ti[&quot; ~&quot;] = {&quot;fl_water&quot;}
 
36206
ti[&quot; w&quot;] = {&quot;fl_wood&quot;}
 
36207
ti[&quot;# &quot;] = {&quot;st_rawglass&quot;}
 
36208
ti[&quot; @&quot;] = {&quot;#ac_marble&quot;}
 
36209
 
 
36210
railway1 = res.train(ti, &quot;.&quot;, {&quot;1^&quot;, train={&quot; ~&quot;, &quot; w&quot;, orientation=NORTH, length=6}})
 
36211
railway2 = res.train(railway1, {&quot;2e&quot;, edge=true}, {&quot;2^&quot;, train={&quot; ~&quot;, &quot; w&quot;, orientation=NORTH, length=5}})
 
36212
 
 
36213
wo(railway2, &quot;  &quot;, {
 
36214
    &quot;             .        &quot;,
 
36215
    &quot;   .                  &quot;,
 
36216
    &quot;              1^      &quot;,
 
36217
    &quot;                     @&quot;,
 
36218
    &quot;              #       &quot;,
 
36219
    &quot;          2e          &quot;,
 
36220
    &quot;                      &quot;,
 
36221
    &quot;                      &quot;,
 
36222
    &quot;  # #.            2^  &quot;,
 
36223
    &quot;       .              &quot;,
 
36224
    &quot;                  2e  &quot;,
 
36225
    &quot;               .      &quot;,
 
36226
    &quot;         .            &quot;
 
36227
})
 
36228
</pre></td></tr></table>
 
36229
<p>The first railway has just marked the essential positions that define the
 
36230
path.
 
36231
</p></dd>
 
36232
</dl>
 
36233
 
 
36234
 
 
36235
<hr size="6">
 
36236
<a name="General-Features"></a>
 
36237
<table cellpadding="1" cellspacing="1" border="0">
 
36238
<tr><td valign="middle" align="left">[<a href="#res_002etrain" title="Previous section in reading order"> &lt; </a>]</td>
 
36239
<td valign="middle" align="left">[<a href="#Display-Follow-Strategy" title="Next section in reading order"> &gt; </a>]</td>
 
36240
<td valign="middle" align="left"> &nbsp; </td>
 
36241
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
36242
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Up section"> Up </a>]</td>
 
36243
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
36244
<td valign="middle" align="left"> &nbsp; </td>
 
36245
<td valign="middle" align="left"> &nbsp; </td>
 
36246
<td valign="middle" align="left"> &nbsp; </td>
 
36247
<td valign="middle" align="left"> &nbsp; </td>
 
36248
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
36249
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
36250
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
36251
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
36252
</tr></table>
 
36253
<a name="General-Features-1"></a>
 
36254
<h2 class="section">13.2 General Features</h2>
 
36255
 
 
36256
<table class="menu" border="0" cellspacing="0">
 
36257
<tr><td align="left" valign="top"><a href="#Display-Follow-Strategy">13.2.1 Display Follow Strategy</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    How the display view follows the active marble
 
36258
</td></tr>
 
36259
<tr><td align="left" valign="top"><a href="#Flood-Spreading">13.2.2 Flood Spreading</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            How a water flood spreads over a given area
 
36260
</td></tr>
 
36261
<tr><td align="left" valign="top"><a href="#Fire-Spreading">13.2.3 Fire Spreading</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             How to start, use, and stop fire.
 
36262
</td></tr>
 
36263
<tr><td align="left" valign="top"><a href="#Heat_002dTransformation">13.2.4 Heat-Transformation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        How some floors transform when a fire starts nearby.
 
36264
</td></tr>
 
36265
<tr><td align="left" valign="top"><a href="#Freeze-Checking">13.2.5 Freeze Checking</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            How to turn frozen boxes in a Sokoban to st_death.
 
36266
</td></tr>
 
36267
</table>
 
36268
 
 
36269
<hr size="6">
 
36270
<a name="Display-Follow-Strategy"></a>
 
36271
<table cellpadding="1" cellspacing="1" border="0">
 
36272
<tr><td valign="middle" align="left">[<a href="#General-Features" title="Previous section in reading order"> &lt; </a>]</td>
 
36273
<td valign="middle" align="left">[<a href="#Flood-Spreading" title="Next section in reading order"> &gt; </a>]</td>
 
36274
<td valign="middle" align="left"> &nbsp; </td>
 
36275
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
36276
<td valign="middle" align="left">[<a href="#General-Features" title="Up section"> Up </a>]</td>
 
36277
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
36278
<td valign="middle" align="left"> &nbsp; </td>
 
36279
<td valign="middle" align="left"> &nbsp; </td>
 
36280
<td valign="middle" align="left"> &nbsp; </td>
 
36281
<td valign="middle" align="left"> &nbsp; </td>
 
36282
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
36283
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
36284
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
36285
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
36286
</tr></table>
 
36287
<a name="Display-Follow-Strategy-1"></a>
 
36288
<h3 class="subsection">13.2.1 Display Follow Strategy</h3>
 
36289
 
 
36290
<p>As the world can be larger than a display screen the active marble can move
 
36291
out of the area that is visible at level start. Somehow the display has to
 
36292
follow the active marble.
 
36293
</p>
 
36294
<p>Whereas prior Enigma versions did provide just a handful of fixed modes, future
 
36295
versions will give you a much more detailed control of the display following
 
36296
strategy. We decided to switch the configuration to the future parameters
 
36297
already now. This allows us to give you some more follower control, even though
 
36298
some attributes are still limited in their values.
 
36299
</p>
 
36300
<p>The strategy is described by the following parameters.
 
36301
</p>
 
36302
<dl compact="compact">
 
36303
<dt> <b>Attributes:</b></dt>
 
36304
<dd>
 
36305
<dl compact="compact">
 
36306
<dt> <a href="#FollowGrid">FollowGrid</a></dt>
 
36307
<dt> <a href="#FollowMethod">FollowMethod</a></dt>
 
36308
<dt> <a href="#FollowThreshold">FollowThreshold</a></dt>
 
36309
<dt> <a href="#FollowAction">FollowAction</a></dt>
 
36310
</dl>
 
36311
 
 
36312
</dd>
 
36313
<dt> <b>Syntax Samples:</b></dt>
 
36314
<dd><table><tr><td>&nbsp;</td><td><pre class="example">wo[&quot;FollowGrid&quot;] = true
 
36315
wo[&quot;FollowMethod&quot;] = FOLLOW_SCROLL
 
36316
</pre></td></tr></table>
 
36317
 
 
36318
</dd>
 
36319
<dt> <b>Details:</b></dt>
 
36320
<dd><p>The attributes should always be set in the sequence as given above. This is due
 
36321
to the fact that the first attributes may reset some of the later attributes
 
36322
to matching defaults. This way you will have to set just a two attributes for
 
36323
the most common cases.
 
36324
</p>
 
36325
<p>You can set the display follow strategy at any point. You are even allowed to
 
36326
switch the strategy during the running game.
 
36327
</p>
 
36328
</dd>
 
36329
<dt> <b>Valid Configurations as of Enigma 1.10:</b></dt>
 
36330
<dd>
 
36331
<dl compact="compact">
 
36332
<dt> <b>Screen Flipping:</b></dt>
 
36333
<dd><table><tr><td>&nbsp;</td><td><pre class="example">wo[&quot;FollowGrid&quot;] = true
 
36334
wo[&quot;FollowMethod&quot;] = FOLLOW_FLIP
 
36335
</pre></td></tr></table>
 
36336
<p>The default strategy. The screen flips as soon as the marble reaches the outer
 
36337
half of the boundary grid tile. The screen moves by a full screen minus the
 
36338
common tile row or column.
 
36339
</p>
 
36340
</dd>
 
36341
<dt> <b>Half Screen Scrolling:</b></dt>
 
36342
<dd><table><tr><td>&nbsp;</td><td><pre class="example">wo[&quot;FollowGrid&quot;] = true
 
36343
wo[&quot;FollowMethod&quot;] = FOLLOW_SCROLL
 
36344
wo[&quot;FollowAction&quot;] = FOLLOW_HALFSCREEN
 
36345
</pre></td></tr></table>
 
36346
<p>As soon as the marble reaches the outer half of the boundary grid tile the
 
36347
display scrolls pixel by pixel by half a screen. It realigns to the grid. As
 
36348
on a standard sized screen the display would have to scroll 9.5 grids in
 
36349
horizontal direction such scrolls will alternate in scrolls of 9 and 10 grids.
 
36350
The follower will try to stabilize the reachable scroll positions.
 
36351
</p>
 
36352
</dd>
 
36353
<dt> <b>Permanent Smooth Scrolling:</b></dt>
 
36354
<dd><table><tr><td>&nbsp;</td><td><pre class="example">wo[&quot;FollowGrid&quot;] = false
 
36355
wo[&quot;FollowMethod&quot;] = FOLLOW_SCROLL
 
36356
</pre></td></tr></table>
 
36357
<p>The active actor will always stay in the center of the screen. The display
 
36358
compensates the actor&rsquo;s movement pixel by pixel by scrolling. The display
 
36359
positions are not aligned to grid tiles.
 
36360
</p>
 
36361
</dd>
 
36362
<dt> <b>Full Screen Scrolling:</b></dt>
 
36363
<dd><table><tr><td>&nbsp;</td><td><pre class="example">wo[&quot;FollowGrid&quot;] = true
 
36364
wo[&quot;FollowMethod&quot;] = FOLLOW_SCROLL
 
36365
wo[&quot;FollowAction&quot;] = FOLLOW_FULLSCREEN
 
36366
</pre></td></tr></table>
 
36367
<p>As soon as the marble reaches the outer half of the boundary grid tile the
 
36368
display scrolls pixel by pixel by a full screen minus the common tile row or
 
36369
column.
 
36370
</p>
 
36371
</dd>
 
36372
<dt> <b>No Screen Scrolling:</b></dt>
 
36373
<dd><table><tr><td>&nbsp;</td><td><pre class="example">wo[&quot;FollowMethod&quot;] = FOLLOW_NO
 
36374
</pre></td></tr></table>
 
36375
<p>No scrolling at all. Even if the active actor moves out of sight the display
 
36376
remains at its position.
 
36377
</p>
 
36378
</dd>
 
36379
<dt> <b>Screen Flipping at a given threshold:</b></dt>
 
36380
<dd><table><tr><td>&nbsp;</td><td><pre class="example">wo[&quot;FollowGrid&quot;] = true
 
36381
wo[&quot;FollowMethod&quot;] = FOLLOW_FLIP
 
36382
wo[&quot;FollowThreshold&quot;] = po(2.5, 1.5)
 
36383
</pre></td></tr></table>
 
36384
<p>The screen flips as soon as the marble reaches the given distance to the screen
 
36385
boundary. The screen moves by a full screen minus twice the threshold distance.
 
36386
The final display realigns to the grid even on odd threshold distances.
 
36387
</p>
 
36388
</dd>
 
36389
<dt> <b>Full Screen Scrolling at a given threshold:</b></dt>
 
36390
<dd><table><tr><td>&nbsp;</td><td><pre class="example">wo[&quot;FollowGrid&quot;] = true
 
36391
wo[&quot;FollowMethod&quot;] = FOLLOW_SCROLL
 
36392
wo[&quot;FollowThreshold&quot;] = po(2.5, 1.5)
 
36393
</pre></td></tr></table>
 
36394
<p>The screen scrolls as soon as the marble reaches the given distance to the screen
 
36395
boundary. The screen moves by a full screen minus twice the threshold distance.
 
36396
The final display realigns to the grid even on odd threshold distances.
 
36397
</p></dd>
 
36398
</dl>
 
36399
 
 
36400
</dd>
 
36401
</dl>
 
36402
 
 
36403
<hr size="6">
 
36404
<a name="Flood-Spreading"></a>
 
36405
<table cellpadding="1" cellspacing="1" border="0">
 
36406
<tr><td valign="middle" align="left">[<a href="#Display-Follow-Strategy" title="Previous section in reading order"> &lt; </a>]</td>
 
36407
<td valign="middle" align="left">[<a href="#Fire-Spreading" title="Next section in reading order"> &gt; </a>]</td>
 
36408
<td valign="middle" align="left"> &nbsp; </td>
 
36409
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
36410
<td valign="middle" align="left">[<a href="#General-Features" title="Up section"> Up </a>]</td>
 
36411
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
36412
<td valign="middle" align="left"> &nbsp; </td>
 
36413
<td valign="middle" align="left"> &nbsp; </td>
 
36414
<td valign="middle" align="left"> &nbsp; </td>
 
36415
<td valign="middle" align="left"> &nbsp; </td>
 
36416
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
36417
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
36418
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
36419
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
36420
</tr></table>
 
36421
<a name="Flood-Spreading-1"></a>
 
36422
<h3 class="subsection">13.2.2 Flood Spreading</h3>
 
36423
<a name="index-flood"></a>
 
36424
 
 
36425
<p>A flood is active <a href="#fl_005fwater">fl_water</a> that, originating from a source, spreads over
 
36426
<a href="#floodable">floodable</a> areas. In contrast to a flood standard water is just static,
 
36427
its &lsquo;<samp>state</samp>&rsquo; is &lsquo;<samp>IDLE</samp>&rsquo; and it will not spread to adjacent floors. But
 
36428
a flood reaching a static water lake will cross it as a tsunami and continue
 
36429
actively spreading on all riparian zones.
 
36430
</p>
 
36431
<p>You set up the area by adding the attribute <a href="#floodable">floodable</a> with value
 
36432
<code>true</code> on all its floors. Just <a href="#fl_005fwater">fl_water</a> and the framed variants of
 
36433
<a href="#fl_005fwood">fl_wood</a>, <a href="#fl_005fhay">fl_hay</a> and <a href="#fl_005frock">fl_rock</a> do not require to be explicitly
 
36434
marked floodable as they are floodable by default. The marked area is the
 
36435
maximum area that may be flooded. But obstacles may block the flood temporarily
 
36436
or permanently.
 
36437
</p>
 
36438
<p>A flood starts at a source.  As soon as you add a &lsquo;<samp>fl_water_source</samp>&rsquo; or set
 
36439
the &lsquo;<samp>state</samp>&rsquo; to &lsquo;<samp>FLOODING</samp>&rsquo;, the <a href="#fl_005fwater">fl_water</a> starts to spread to
 
36440
floodable neighboring grids with a speed defined by the attribute
 
36441
&lsquo;<samp>interval</samp>&rsquo;. The speed will be inherited to floors flooded by the stream.
 
36442
</p>
 
36443
<p>Floodable floors with solid stones, closed doors or <a href="#st_005fwindow">st_window</a> with
 
36444
blocking faces on top will keep the flood from spreading to their grid position
 
36445
or if already flooded to spread to a neighboring grid. But as soon as the
 
36446
obstacle vanishes, e.g. an <a href="#st_005fdoor">st_door</a> opens, the flood continues to spread.
 
36447
Hollow stones, especially <a href="#st_005foneway">st_oneway</a> do not block flood streams, totally
 
36448
independent of actor blocking features on certain types or faces.
 
36449
</p>
 
36450
<p>Of special interest are the <a href="#st_005fbox">st_box</a> variants and their successor floors,
 
36451
the framed variants of <a href="#fl_005fwood">fl_wood</a>, <a href="#fl_005fhay">fl_hay</a> and <a href="#fl_005frock">fl_rock</a>. A flood
 
36452
will flow beneath a box stone, if the floor beneath is floodable. In consequence
 
36453
of the upcoming water, the box stone will fall and build a framed floor of the
 
36454
given kind. These floors act like bridges over flooding water. They still let
 
36455
the flood spread to further neighboring floodable floors. Thus a user can not
 
36456
stop a flood by pushing an <a href="#st_005fbox">st_box</a> onto its path, but he can make the water
 
36457
passable for his marbles. In fact this framed floors can even operate as a flood
 
36458
source, but we do not recommend this usage.
 
36459
</p>
 
36460
<p>In contrast to these floor building stones the <a href="#st_005fpuzzle">st_puzzle</a> does neither
 
36461
fall on static nor on flooding <a href="#fl_005fwater">fl_water</a>. As a solid stone it will even
 
36462
block a flood on neighboring grids to reach its position. But of course once
 
36463
moved completely over <a href="#fl_005fwater">fl_water</a> the puzzle will fall if its own conditions
 
36464
are met. The successor <a href="#fl_005fgray">fl_gray</a> will not build a bridge over water. It
 
36465
fills up the ditch and replaces the water completely. Thus the user can use
 
36466
puzzles to stop a flood.
 
36467
</p>
 
36468
<p>When a flood stream spreads to a new floor items on these floors may be affected.
 
36469
E.g. <a href="#it_005fcrack">it_crack</a> get flooded and do vanish. All <a href="#it_005fburnable">it_burnable</a> besides oil
 
36470
get wiped out, too.
 
36471
</p>
 
36472
<p>Further active components of the flood concept are <a href="#it_005fvortex">it_vortex</a> and
 
36473
<a href="#it_005fwormhole">it_wormhole</a>. Besides actors both do spread a flood. The <a href="#it_005fwormhole">it_wormhole</a>
 
36474
spreads the flood to its &lsquo;<samp>destination</samp>&rsquo; if the floor at this grid is marked
 
36475
&lsquo;<samp>floodable</samp>&rsquo;. An <a href="#it_005fvortex">it_vortex</a> will flood all its &lsquo;<samp>destination</samp>&rsquo;s,
 
36476
but of course just if it is in state &lsquo;<samp>OPEN</samp>&rsquo;. In case the destinations are
 
36477
vortices, too, they must be open, too, for a successful flood spreading. When the
 
36478
last closed vortex on either end opens again the hold flood continues to spread.
 
36479
Note that in these cases the flood reaches the destination grid from beneath.
 
36480
Thus no stone will block the emerging water. But nevertheless a stone on the
 
36481
destination position may well block the water from spreading to the neighboring
 
36482
grids.
 
36483
</p>
 
36484
<p>Be aware that the Enigma flood has some extraordinary features. The most
 
36485
important is the ability to spread unlimitedly from every grid that got flooded,
 
36486
independently of a still existing connection to the flood source. Thus once a
 
36487
door is opened and a bit of the flood passes the door, the flood will continue
 
36488
to spread even if the door closes again. Same is true for toggling vortices or
 
36489
puzzle stones being pushed into a flood building a complete bridge over the
 
36490
water stream. But this feature is intentionally, as it avoids many shortcut
 
36491
situations and thus makes the flood more usable for level authors.
 
36492
</p>
 
36493
<hr size="6">
 
36494
<a name="Fire-Spreading"></a>
 
36495
<table cellpadding="1" cellspacing="1" border="0">
 
36496
<tr><td valign="middle" align="left">[<a href="#Flood-Spreading" title="Previous section in reading order"> &lt; </a>]</td>
 
36497
<td valign="middle" align="left">[<a href="#Heat_002dTransformation" title="Next section in reading order"> &gt; </a>]</td>
 
36498
<td valign="middle" align="left"> &nbsp; </td>
 
36499
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
36500
<td valign="middle" align="left">[<a href="#General-Features" title="Up section"> Up </a>]</td>
 
36501
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
36502
<td valign="middle" align="left"> &nbsp; </td>
 
36503
<td valign="middle" align="left"> &nbsp; </td>
 
36504
<td valign="middle" align="left"> &nbsp; </td>
 
36505
<td valign="middle" align="left"> &nbsp; </td>
 
36506
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
36507
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
36508
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
36509
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
36510
</tr></table>
 
36511
<a name="Fire-Spreading-1"></a>
 
36512
<h3 class="subsection">13.2.3 Fire Spreading</h3>
 
36513
 
 
36514
<p>The 1.0-version of Enigma introduced a new fire system, making use of
 
36515
attributes and messages of the floor tiles. The default fire, once
 
36516
ignited, spreads over the landscape and destroys items, marbles and
 
36517
some stones. It spreads along those floor tiles that are marked &ldquo;burnable&rdquo; by
 
36518
default (like <a href="#fl_005fhay">fl_hay</a> or <a href="#fl_005fwood">fl_wood</a>), by attribute (see attribute
 
36519
<a href="#burnable">burnable</a>), or by one of two items that indicate burnability: the invisible
 
36520
<a href="#it_005fburnable">it_burnable</a> and the visible <code>it_burnable_oil</code>. On a burning floor,
 
36521
all items are destroyed. However, some items prevent the floor from burning,
 
36522
like <a href="#it_005fmeditation">it_meditation</a> or <a href="#it_005fdynamite">it_dynamite</a> (which ignites instead).
 
36523
</p>
 
36524
<p>Fire can be ignited in several standard ways:
 
36525
</p><ul>
 
36526
<li> The <code>setfire</code>-message sets fire to a floor if it is
 
36527
burnable and the item on it allows it to burn; non-burnable items like
 
36528
<a href="#it_005fdynamite">it_dynamite</a> are not ignited by this.
 
36529
</li><li> The <code>heat</code>-message ignites burnable floors as does
 
36530
<code>setfire</code>, but also initiates a <a href="#Heat_002dTransformation">Heat-Transformation</a> of the floor
 
36531
and ignites items on it.
 
36532
</li><li> The <code>ignite</code> and <code>explosion</code>-messages that are used by
 
36533
<a href="#it_005fdynamite">it_dynamite</a> and <a href="#it_005fbomb">it_bomb</a> can initiate fire via
 
36534
<a href="#it_005fburnable">it_burnable</a>[_oil] or if the
 
36535
<a href="#ignitable">ignitable</a>-attribute of the floor is set (off by default).
 
36536
</li><li> The floor already starts burning on initialization when the
 
36537
<code>initfire</code>-attribute is set (off by default).
 
36538
</li><li> Fire in the neighborhood, see below.
 
36539
</li></ul>
 
36540
 
 
36541
<p>If needed, the <code>forcefire</code>-message can be used to set fire to
 
36542
non-burnable floors. Internally, it is equivalent to manually setting
 
36543
<code>it_burnable_ignited</code>; however, setting <code>it_burnable_ignited</code>
 
36544
manually is deprecated to allow a further development of the fire-system in
 
36545
future.
 
36546
</p>
 
36547
<p>Fire does the following:
 
36548
</p><ul>
 
36549
<li> It kills <a href="#st_005fbox">st_box</a>_wood, <a href="#st_005fbox">st_box</a>_hay, and <a href="#st_005fflat">st_flat</a>_moveburnable
 
36550
above it, and <a href="#st_005fflat">st_flat</a>_burnable beneath it.
 
36551
</li><li> It melts <a href="#st_005fice">st_ice</a> to <a href="#fl_005fwater">fl_water</a>.
 
36552
</li><li> It heats its neighboring tiles, which might result in a
 
36553
<a href="#Heat_002dTransformation">Heat-Transformation</a> of the floor.
 
36554
</li><li> It might ignite or destroy items on its neighbor, this concerns
 
36555
<a href="#it_005fdynamite">it_dynamite</a>, both <a href="#it_005fbomb">it_bomb</a>, and <a href="#it_005fcrack">it_crack</a>.
 
36556
</li><li> It might set fire to its neighbor.
 
36557
</li><li> It shatters marbles that are not protected with <a href="#it_005fumbrella">it_umbrella</a> or other
 
36558
measures. Note that in future versions, jumping over fire with <a href="#it_005fspring">it_spring</a>
 
36559
might get allowed.
 
36560
</li></ul>
 
36561
 
 
36562
<p>Fire stops burning after a random amount of time, as long as the
 
36563
<code>eternal</code>-attribute of the floor is not set. When it stops
 
36564
burning, it might replace the floor by another kind
 
36565
(&ldquo;fire-transform&rdquo;), this is: <a href="#fl_005fwood">fl_wood</a> is replaced by
 
36566
<a href="#fl_005fabyss">fl_abyss</a>, <a href="#fl_005flawn">fl_lawn</a> by <a href="#fl_005fdunes">fl_dunes</a>. Finally, it
 
36567
puts <a href="#it_005fburnable">it_burnable</a>_ash on the floor, which prohibits a second
 
36568
fire and which can be removed with <a href="#it_005fbrush">it_brush</a>. However, ash is not
 
36569
set if the <a href="#noash">noash</a>-attribute is set (default only for <a href="#fl_005fabyss">fl_abyss</a>).
 
36570
</p>
 
36571
<p>Since the spreading of fire is a random event, in 0.92, a level author couldn&rsquo;t
 
36572
be sure that a particular item was ignited or fire was set. Since 1.0, these can
 
36573
be assured by setting the <a href="#secure">secure</a>-attribute: When a burnable floor with
 
36574
<code>secure = true</code> is near fire, it will eventually catch fire, items on it
 
36575
are ignited, etc. <code>secure</code> is <code>false</code> by default.
 
36576
</p>
 
36577
<p>In 0.92, there were two speeds of fire: When using <a href="#it_005fburnable">it_burnable</a>,
 
36578
fire spread much faster than without. This is still the same in
 
36579
1.0 and above. However, you can set the <a href="#fastfire">fastfire</a>-attribute to hasten
 
36580
the fire without setting the invisible <a href="#it_005fburnable">it_burnable</a>, this should be the
 
36581
preferred method.
 
36582
</p>
 
36583
<p>Fire that burns under a stone is not allowed to spread; the only exceptions are
 
36584
floating stones like <a href="#st_005fgrate">st_grate</a>, and those stones that are destroyed by fire
 
36585
anyway (<a href="#st_005fbox">st_box</a>_wood, <a href="#st_005fbox">st_box</a>_hay, <a href="#st_005fflat">st_flat</a>_burnable,
 
36586
<a href="#st_005fflat">st_flat</a>_moveburnable). In contrast to this, fire might also spread to
 
36587
under a movable stone, but not further.
 
36588
</p>
 
36589
<p>You can stop fire with <code>it_extinguisher</code>, which creates the fireproof
 
36590
<code>it_burnable_fireproof</code>. Another way to stop fire is to push the totally
 
36591
inert <a href="#st_005fbox">st_box</a>_rock over it: This is the only movable stone that doesn&rsquo;t
 
36592
allow fire under it. A final way to stop fire is to send the
 
36593
<code>stopfire</code>-message to a floor.
 
36594
</p>
 
36595
<p><strong>Differences between 1.0 and 0.92</strong>
 
36596
</p>
 
36597
<p>The old fire system of Enigma versions up to 0.92, differs from
 
36598
the 1.0 and above version mainly in the following points:
 
36599
</p>
 
36600
<ul>
 
36601
<li> no fire-transform except <a href="#fl_005fwood">fl_wood</a> to <a href="#fl_005fabyss">fl_abyss</a>
 
36602
</li><li> no <a href="#Heat_002dTransformation">Heat-Transformation</a>s
 
36603
</li><li> ash on <a href="#fl_005fabyss">fl_abyss</a>
 
36604
</li><li> no difference between different floors
 
36605
</li><li> replication via same-floor-pattern instead of
 
36606
burnable-floor-pattern: 0.92 didn&rsquo;t distinguish between burnable and
 
36607
non-burnable floors. Instead, fire was allowed to spread to floors of
 
36608
the same kind slowly.
 
36609
</li><li> burnable items always catch fire: In 1.0 and above, a burnable item
 
36610
(except for <a href="#it_005fburnable">it_burnable</a>[_oil]) on a non-burnable floor won&rsquo;t catch fire,
 
36611
in 0.92 it did.
 
36612
</li></ul>
 
36613
 
 
36614
<p>A good model of the 0.92-system can be attained via the
 
36615
compatibility-modes: All non-Enigma-modes (see section <a href="#Engine-Compatibility">Engine Compatibility</a> and
 
36616
<a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a>) feature a version which only marginally differs from
 
36617
0.92-fire, yet allowing some of the new achievements, like secure- or
 
36618
eternal-fire.
 
36619
</p>
 
36620
<p>Note that in 0.92, fire-transformation happened at the beginning of
 
36621
the fire, which manifested in the so called &ldquo;burning-abyss&rdquo;-bug.
 
36622
Besides other details, this is how the original 0.92 system differs from the
 
36623
one in 1.0-non-Enigma-mode.
 
36624
</p>
 
36625
<p><strong>Burnable and Fireproof Floors</strong>
 
36626
</p>
 
36627
<p>All floors that look like plastic, fabrics, or organics are burnable by default:
 
36628
<code>fl_adhesionless, fl_aquamarine, fl_bluegray, fl_bluegreen, fl_blueslab,
 
36629
fl_fake_trigger, fl_hay, fl_ivory, fl_marble, fl_platinum, fl_red, fl_redslab,
 
36630
fl_rough*, fl_tigris, fl_woven</code>.
 
36631
</p>
 
36632
<p>All floors that look like wood are burnable and leave <a href="#fl_005fabyss">fl_abyss</a> behind:
 
36633
<code>fl_bast, fl_plank, fl_samba*, fl_wood*</code>, and <a href="#fl_005fbridge">fl_bridge</a>_b*.
 
36634
</p>
 
36635
<p>All floors that look like grass are burnable and leave <a href="#fl_005fdunes">fl_dunes</a> behind:
 
36636
<a href="#fl_005flawn">fl_lawn</a>.
 
36637
</p>
 
36638
<p>All other floors are fireproof (they don&rsquo;t burn by default):
 
36639
<code>fl_abyss*, fl_brick, fl_bright, fl_concrete, fl_dark, fl_darkgray,
 
36640
fl_dummy, fl_dunes,  fl_gravel, fl_gray, fl_himalaya, fl_ice, fl_inverse*,
 
36641
fl_metal*, fl_mortar, fl_pinkbumps, fl_rock, fl_sahara, fl_sand, fl_slope*,
 
36642
fl_space, fl_stone, fl_swamp, fl_water, fl_white, fl_yinyang*</code>, and
 
36643
<a href="#fl_005fbridge">fl_bridge</a>_g*.
 
36644
</p>
 
36645
<p>An open <a href="#fl_005fbridge">fl_bridge</a> is never burnable, this overrides all items and
 
36646
attributes. A closed <a href="#fl_005fbridge">fl_bridge</a> is burnable if and only if it is brown,
 
36647
but this can be changed via attribute <code>burnable</code>. Note that changing the
 
36648
flavor of <a href="#fl_005fbridge">fl_bridge</a> will change <code>burnable</code> according to the new
 
36649
flavor as well.
 
36650
</p>
 
36651
<p><strong>Fireproof Items</strong>
 
36652
</p>
 
36653
<p>Most items are passively burnable, this is: An item is destroyed by
 
36654
fire, if and only if the floor could burn all by itself.  However,
 
36655
there are some items with individual reactions (<code>it_burnable,
 
36656
it_burnable_oil, it_dynamite, it_bomb*, it_crack*</code>)
 
36657
and some items that are completely fireproof. These are: <code>it_burnable_ash,
 
36658
it_burnable_fireproof, it_debris, it_dummy, it_explosion*, it_extinguisher,
 
36659
it_extinguisher_medium, it_meditation*, it_trap, it_vortex*</code> and the fire
 
36660
animations themselves: <code>it_burnable_ignited</code> and
 
36661
<code>it_burnable_burning</code>.
 
36662
</p>
 
36663
<p>Note that <code>it_extinguisher_empty, it_trigger</code> (visible and invisible),
 
36664
<code>it_landmine</code>, and <code>it_death</code> are passively burnable.  In particular,
 
36665
<code>it_landmine</code> does not explode or create <code>it_meditation</code> when burning.
 
36666
The reaction of <a href="#it_005fsensor">it_sensor</a> towards fire might be changed in future
 
36667
versions.
 
36668
</p>
 
36669
<p>If you need to save a passively burnable item from fire, simply set a fireproof
 
36670
floor like <code>fl_sand</code> or <code>fl_rock</code> below it. This normally is the case
 
36671
when using <a href="#it_005fstrip">it_strip</a>. However, you can use the <code>burnable</code>-attribute in
 
36672
these cases to force burnability of the floors.
 
36673
</p>
 
36674
<hr size="6">
 
36675
<a name="Heat_002dTransformation"></a>
 
36676
<table cellpadding="1" cellspacing="1" border="0">
 
36677
<tr><td valign="middle" align="left">[<a href="#Fire-Spreading" title="Previous section in reading order"> &lt; </a>]</td>
 
36678
<td valign="middle" align="left">[<a href="#Freeze-Checking" title="Next section in reading order"> &gt; </a>]</td>
 
36679
<td valign="middle" align="left"> &nbsp; </td>
 
36680
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
36681
<td valign="middle" align="left">[<a href="#General-Features" title="Up section"> Up </a>]</td>
 
36682
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
36683
<td valign="middle" align="left"> &nbsp; </td>
 
36684
<td valign="middle" align="left"> &nbsp; </td>
 
36685
<td valign="middle" align="left"> &nbsp; </td>
 
36686
<td valign="middle" align="left"> &nbsp; </td>
 
36687
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
36688
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
36689
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
36690
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
36691
</tr></table>
 
36692
<a name="Heat_002dTransformation-1"></a>
 
36693
<h3 class="subsection">13.2.4 Heat-Transformation</h3>
 
36694
 
 
36695
<p>When a fire starts to burn near <a href="#fl_005fice">fl_ice</a>, it melts to <a href="#fl_005fwater">fl_water</a>. In the
 
36696
same sense, <a href="#fl_005fwater">fl_water</a> boils to <a href="#fl_005fswamp">fl_swamp</a>, and this again to
 
36697
<a href="#fl_005fdunes">fl_dunes</a>. In contrast to most other fire-related actions, this is not
 
36698
random, but always and only happens, when a nearby fire starts to burn, i.e.
 
36699
once for each new fire.
 
36700
</p>
 
36701
<p>Examples: Put an <a href="#st_005fbox">st_box</a>_rock on <a href="#fl_005fice">fl_ice</a>. A fire will melt
 
36702
the ice, and <a href="#st_005fbox">st_box</a>_rock creates a fireproof and safe way to the
 
36703
other side. If you use <a href="#st_005fbox">st_box</a>_wood instead, <a href="#fl_005fwood">fl_wood</a>_framed is
 
36704
created, which presumably catches fire and leaves <a href="#fl_005fabyss">fl_abyss</a>
 
36705
behind. Finally, <a href="#st_005fbox">st_box</a>_hay will create <a href="#fl_005fhay">fl_hay</a>_framed, which is
 
36706
burnable, but won&rsquo;t burn down to <a href="#fl_005fabyss">fl_abyss</a>. A similar combination is
 
36707
<code>fl_water</code> with <a href="#st_005fchess">st_chess</a>.
 
36708
</p>
 
36709
<p>You can enforce a transformation by sending the <code>heat</code>-message to the
 
36710
floor.
 
36711
</p>
 
36712
<p>If you want to suppress this transformation, you can switch to
 
36713
a non-Enigma-compatibility-mode.
 
36714
</p>
 
36715
<hr size="6">
 
36716
<a name="Freeze-Checking"></a>
 
36717
<table cellpadding="1" cellspacing="1" border="0">
 
36718
<tr><td valign="middle" align="left">[<a href="#Heat_002dTransformation" title="Previous section in reading order"> &lt; </a>]</td>
 
36719
<td valign="middle" align="left">[<a href="#Tips-and-Tricks" title="Next section in reading order"> &gt; </a>]</td>
 
36720
<td valign="middle" align="left"> &nbsp; </td>
 
36721
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
36722
<td valign="middle" align="left">[<a href="#General-Features" title="Up section"> Up </a>]</td>
 
36723
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
36724
<td valign="middle" align="left"> &nbsp; </td>
 
36725
<td valign="middle" align="left"> &nbsp; </td>
 
36726
<td valign="middle" align="left"> &nbsp; </td>
 
36727
<td valign="middle" align="left"> &nbsp; </td>
 
36728
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
36729
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
36730
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
36731
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
36732
</tr></table>
 
36733
<a name="Freeze-Checking-1"></a>
 
36734
<h3 class="subsection">13.2.5 Freeze Checking</h3>
 
36735
 
 
36736
<p>With Enigma 1.1 and above, you can use a special feature to support Sokoban
 
36737
levels and Sokoban parts of levels: Whenever a movable stone is pushed into
 
36738
some unmovable position, this feature automatically transforms the stone into
 
36739
<a href="#st_005fdeath">st_death</a>, to demonstrate that the game is lost and provide a simple way
 
36740
for the player to restart.
 
36741
</p>
 
36742
<p>The feature is called &ldquo;Freeze Checking&rdquo;. It applies to each stone with
 
36743
attribute <code>freeze_check = true</code> which is pushed onto a floor with
 
36744
attribute <code>freeze_check = true</code>. This way you can restrict the freeze
 
36745
check to a bounded area. For a true Sokoban the goal tiles should not be marked
 
36746
with <code>freeze_check = true</code>, as a frozen box on a goal is not considered
 
36747
harmful. On the other hand, you can specify which boxes are freeze-checked. This
 
36748
gives further freedom to use other stones inside your Sokoban area: Floor and
 
36749
stone both need the <code>freeze_check</code>-attribute activated.
 
36750
</p>
 
36751
<p>The freeze check recognizes three basic constellations of stones that lead to a
 
36752
freeze of a standard movable stone. With <code>B</code> as box (movable or
 
36753
persistent) and <code>#</code> as wall (persistent):
 
36754
</p><table><tr><td>&nbsp;</td><td><pre class="example">BB   #B   #B
 
36755
BB    #    B#
 
36756
</pre></td></tr></table>
 
36757
<p>There are more freeze constellations which are not recognized, the simplest
 
36758
would be:
 
36759
</p><table><tr><td>&nbsp;</td><td><pre class="example">#B
 
36760
 BB
 
36761
  #
 
36762
</pre></td></tr></table>
 
36763
<p>Don&rsquo;t rely on this fact, it might be changed in future versions.
 
36764
</p>
 
36765
<p>Please bear in mind: The freeze check is not intelligent. It can&rsquo;t foresee that
 
36766
one of your functions might remove a stone, it can&rsquo;t foresee that some door
 
36767
will never open up again (doors are considered as non-existent), it doesn&rsquo;t
 
36768
recognize when you put an <a href="#it_005fpuller">it_puller</a>, <a href="#it_005fcherry">it_cherry</a>, or <a href="#st_005fswap">st_swap</a> in
 
36769
your level. It handles special stones in a way to minimize false-positive freeze
 
36770
checks.
 
36771
</p>
 
36772
<p>Floating stones (like <a href="#st_005fgrate">st_grate</a>) create completely new frozen
 
36773
constellations. From the following two examples, only the right example is
 
36774
frozen (<code>G</code> is <code>st_grate_cross</code>):
 
36775
</p><table><tr><td>&nbsp;</td><td><pre class="example">G    G
 
36776
BB   BB
 
36777
GB   GBG
 
36778
</pre></td></tr></table>
 
36779
<p>At present, none of these are recognized as frozen by Enigma, floating stones
 
36780
are considered as non-existing during a freeze check. To demonstrate the
 
36781
difficulty, you may analyze yourself which of the following constellations is
 
36782
frozen:
 
36783
</p><table><tr><td>&nbsp;</td><td><pre class="example">G      G      GBG   GB#    G G#G
 
36784
B#    BBB     BB    GB G   BBBBB
 
36785
G    #B B#   #B      G     G#G G
 
36786
      G G     G
 
36787
</pre></td></tr></table>
 
36788
 
 
36789
<p>In some cases, stones are even handled differently although they have similar
 
36790
properties: <a href="#st_005fbox">st_box</a>_wood and <code>st_flat_moveburnable</code> (see
 
36791
<a href="#st_005fflat">st_flat</a>) are both movable and both destroyed by fire (see <a href="#Fire-Spreading">Fire Spreading</a>). There would never be frozen stones, as they can easily be burned
 
36792
away. Yet, <code>st_box_wood</code> uses the default freeze checking, whereas
 
36793
<code>st_flat_moveburnable</code> is considered as non-existing. This is because
 
36794
<code>st_box_wood</code> is often used without fire, whereas
 
36795
<code>st_flat_moveburnable</code> is primarily used in combination with fire.
 
36796
</p>
 
36797
<p>Another example is <a href="#st_005fshogun">st_shogun</a>_s, which is considered as a default
 
36798
movable stone, in contrast to the remaining shogun stones. This way you can use
 
36799
<code>st_shogun_s</code> with goal <a href="#it_005fshogun">it_shogun</a>_s, but don&rsquo;t have to fear
 
36800
false-positive freeze checks from the non-standard way in which shogun stones
 
36801
move.
 
36802
</p>
 
36803
<p>As a concluding remark, the freeze checking is to be used as a support for the
 
36804
gamer only. It&rsquo;s not meant to be exploited as special feature to make movable
 
36805
stones unmovable or to provide a way to jump back to the starting position. It
 
36806
is subject to changes in future versions. And versions before 1.1 won&rsquo;t make a
 
36807
freeze check at all - so you can&rsquo;t rely on it to happen. It should really be
 
36808
used in Sokoban-kind parts of a level only, for which it is designed.
 
36809
</p>
 
36810
<hr size="6">
 
36811
<a name="Tips-and-Tricks"></a>
 
36812
<table cellpadding="1" cellspacing="1" border="0">
 
36813
<tr><td valign="middle" align="left">[<a href="#Freeze-Checking" title="Previous section in reading order"> &lt; </a>]</td>
 
36814
<td valign="middle" align="left">[<a href="#Nearest-Object-Clustering" title="Next section in reading order"> &gt; </a>]</td>
 
36815
<td valign="middle" align="left"> &nbsp; </td>
 
36816
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
36817
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Up section"> Up </a>]</td>
 
36818
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
36819
<td valign="middle" align="left"> &nbsp; </td>
 
36820
<td valign="middle" align="left"> &nbsp; </td>
 
36821
<td valign="middle" align="left"> &nbsp; </td>
 
36822
<td valign="middle" align="left"> &nbsp; </td>
 
36823
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
36824
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
36825
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
36826
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
36827
</tr></table>
 
36828
<a name="Tips-and-Tricks-1"></a>
 
36829
<h2 class="section">13.3 Tips and Tricks</h2>
 
36830
 
 
36831
<table class="menu" border="0" cellspacing="0">
 
36832
<tr><td align="left" valign="top"><a href="#Nearest-Object-Clustering">13.3.1 Nearest Object Clustering</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    When nearest object address wrong target
 
36833
</td></tr>
 
36834
<tr><td align="left" valign="top"><a href="#Orthogonal-Autotiling">13.3.2 Orthogonal Autotiling</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Autotiling with different sources and targets
 
36835
</td></tr>
 
36836
</table>
 
36837
 
 
36838
<hr size="6">
 
36839
<a name="Nearest-Object-Clustering"></a>
 
36840
<table cellpadding="1" cellspacing="1" border="0">
 
36841
<tr><td valign="middle" align="left">[<a href="#Tips-and-Tricks" title="Previous section in reading order"> &lt; </a>]</td>
 
36842
<td valign="middle" align="left">[<a href="#Orthogonal-Autotiling" title="Next section in reading order"> &gt; </a>]</td>
 
36843
<td valign="middle" align="left"> &nbsp; </td>
 
36844
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
36845
<td valign="middle" align="left">[<a href="#Tips-and-Tricks" title="Up section"> Up </a>]</td>
 
36846
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
36847
<td valign="middle" align="left"> &nbsp; </td>
 
36848
<td valign="middle" align="left"> &nbsp; </td>
 
36849
<td valign="middle" align="left"> &nbsp; </td>
 
36850
<td valign="middle" align="left"> &nbsp; </td>
 
36851
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
36852
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
36853
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
36854
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
36855
</tr></table>
 
36856
<a name="Nearest-Object-Clustering-1"></a>
 
36857
<h3 class="subsection">13.3.1 Nearest Object Clustering</h3>
 
36858
 
 
36859
<p>The nearest object as described in <a href="#Object-Naming">Object Naming</a> provides a major feature
 
36860
for reducing the number of needed tile declarations. As the selection needs
 
36861
to be unique a rule had to be defined in case of equal distances. South wins,
 
36862
then east, stones are favored to items, floors and actors.
 
36863
</p>
 
36864
<p>In most cases level authors can arrange their objects to fit these rules. But
 
36865
sometimes the level design does not allow the straight forward usage of a
 
36866
simple nearest object selection. E.g.
 
36867
</p>
 
36868
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;F&quot;] = {&quot;st_floppy&quot;, target=&quot;@door#*&quot;}
 
36869
ti[&quot;B&quot;] = {&quot;st_blocker&quot;, name=&quot;door#&quot;}
 
36870
wo{ti, &quot; &quot;, {
 
36871
&quot;       B            &quot;,
 
36872
&quot;       FB#####FB####&quot;,
 
36873
&quot;       # F    B     &quot;,
 
36874
&quot;       # #    F#####&quot;,
 
36875
</pre></td></tr></table>
 
36876
 
 
36877
<p>In both cases the floppy switch that is located at the crossing of two blocker
 
36878
doors will open the false one.
 
36879
</p>
 
36880
<p>But you can use a cluster concept like the one we introduced for
 
36881
<a href="#Cluster-Stones">Cluster Stones</a>. Just add one or in rare cases two or three additional
 
36882
groups. Assign all standard cases to group A and the out of line cases in
 
36883
group B:
 
36884
</p>
 
36885
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;F&quot;] = {&quot;st_floppy&quot;, target=&quot;@doorA#*&quot;}
 
36886
ti[&quot;B&quot;] = {&quot;st_blocker&quot;, name=&quot;doorA#&quot;}
 
36887
ti[&quot;f&quot;] = {&quot;st_floppy&quot;, target=&quot;@doorB#*&quot;}
 
36888
ti[&quot;b&quot;] = {&quot;st_blocker&quot;, name=&quot;doorB#&quot;}
 
36889
wo{ti, &quot; &quot;, {
 
36890
&quot;       b            &quot;,
 
36891
&quot;       fB#####fb####&quot;,
 
36892
&quot;       # F    B     &quot;,
 
36893
&quot;       # #    F#####&quot;,
 
36894
</pre></td></tr></table>
 
36895
 
 
36896
<p>By clustering the doors in two groups you just need two additional tile
 
36897
declarations. But you will likely be able to handle a dozen of additional
 
36898
switch/door combinations.
 
36899
</p>
 
36900
<hr size="6">
 
36901
<a name="Orthogonal-Autotiling"></a>
 
36902
<table cellpadding="1" cellspacing="1" border="0">
 
36903
<tr><td valign="middle" align="left">[<a href="#Nearest-Object-Clustering" title="Previous section in reading order"> &lt; </a>]</td>
 
36904
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next section in reading order"> &gt; </a>]</td>
 
36905
<td valign="middle" align="left"> &nbsp; </td>
 
36906
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
36907
<td valign="middle" align="left">[<a href="#Tips-and-Tricks" title="Up section"> Up </a>]</td>
 
36908
<td valign="middle" align="left">[<a href="#Extension-Development" title="Next chapter"> &gt;&gt; </a>]</td>
 
36909
<td valign="middle" align="left"> &nbsp; </td>
 
36910
<td valign="middle" align="left"> &nbsp; </td>
 
36911
<td valign="middle" align="left"> &nbsp; </td>
 
36912
<td valign="middle" align="left"> &nbsp; </td>
 
36913
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
36914
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
36915
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
36916
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
36917
</tr></table>
 
36918
<a name="Orthogonal-Autotiling-1"></a>
 
36919
<h3 class="subsection">13.3.2 Orthogonal Autotiling</h3>
 
36920
 
 
36921
<p>Autotiling is useful whenever you want to define lots of
 
36922
target-action-pairings, even when source and target objects differ (i.e. use
 
36923
different tile keys). In this case we speak of &lsquo;<samp>orthogonal autotiling</samp>&rsquo;.
 
36924
Let&rsquo;s take a look at the important parts of the API 2 version of the level
 
36925
&lsquo;<samp>Laser Games</samp>&rsquo;:
 
36926
</p>
 
36927
<table><tr><td>&nbsp;</td><td><pre class="example">...
 
36928
ti[&quot;T*&quot;] = {&quot;it_trigger&quot;, target = &quot;mirror%%&quot;, action_1 = &quot;turn&quot;, action_0 = &quot;turnback&quot;}
 
36929
ti[&quot;F*&quot;] = {&quot;st_fourswitch&quot;, target = &quot;mirror%%&quot;}
 
36930
ti[&quot;1*&quot;] = {&quot;st_mirror&quot;, name = &quot;mirror%%&quot;, flavor = &quot;triangle&quot;, orientation = NORTH}
 
36931
ti[&quot;2*&quot;] = {&quot;st_mirror&quot;, name = &quot;mirror%%&quot;, flavor = &quot;triangle&quot;, orientation = SOUTH}
 
36932
ti[&quot;3*&quot;] = {&quot;st_mirror&quot;, name = &quot;mirror%%&quot;, orientation = NORTH}
 
36933
...
 
36934
 
 
36935
local resolver = res.autotile(ti, {&quot;T&quot;, &quot;T*&quot;}, {&quot;F&quot;, &quot;F*&quot;},
 
36936
    {&quot;1&quot;, &quot;1*&quot;}, {&quot;2&quot;, &quot;2*&quot;}, {&quot;3&quot;, &quot;3*&quot;}, {&quot;4&quot;, &quot;4*&quot;}, {&quot;5&quot;, &quot;5*&quot;},
 
36937
    {&quot;6&quot;, &quot;6*&quot;}, {&quot;7&quot;, &quot;7*&quot;}, {&quot;8&quot;, &quot;8*&quot;}, {&quot;9&quot;, &quot;9*&quot;})
 
36938
 
 
36939
w, h = wo(resolver, &quot;  &quot;, {
 
36940
&quot;# # # # # # # # # # # $ # $ # $ # $ # # &quot;,
 
36941
&quot;#                 #                   # &quot;,
 
36942
&quot;#     =   =       #   1a  9b  3c  2d  $ &quot;,
 
36943
&quot;#             =   #                   # &quot;,
 
36944
&quot;#     TaTbTcTd    #   3e  4f  5g  4h  $ &quot;,
 
36945
&quot;#     TeFfFgTh    #                   # &quot;,
 
36946
&quot;#     TiFjFkTl    #   6i  3j  4k  7l  $ &quot;,
 
36947
&quot;#     TmFnFoTp    #                   # &quot;,
 
36948
&quot;#     TqTrTsTt    #   8m  7n  6o  8p  $ &quot;,
 
36949
&quot;#                 #                   # &quot;,
 
36950
&quot;#       @   =     #   1q  7r  3s  2t  $ &quot;,
 
36951
&quot;#                 #                   # &quot;,
 
36952
&quot;# # # # # # # # # # # $ # $ # $ # ^ # # &quot;
 
36953
})
 
36954
...
 
36955
</pre></td></tr></table>
 
36956
 
 
36957
<p>We have different kinds of sources for our actions (triggers <code>T</code> and
 
36958
fourswitchs <code>F</code>), and different kinds of targets (mirrors <code>1</code>,
 
36959
<code>2</code> etc.). However, as all mirrors are consistently named <code>mirror%%</code>,
 
36960
with <code>%%</code> being replaced by <code>%a</code> to <code>%t</code>, the connections
 
36961
between the objects can be set easily without having to worry about different
 
36962
object types: The trigger <code>Ta</code> will turn mirror <code>1a</code> (which is called
 
36963
<code>mirror%a</code>), <code>Tb</code> will turn <code>9b</code> and so on. If we decide to
 
36964
replace mirror <code>1a</code> by, say, mirror type <code>2</code>, we can simply replace
 
36965
<code>1a</code> by <code>2a</code>, and still preserve the action-target-pairing.
 
36966
</p>
 
36967
<p>In this very special situation, the attribute <code>counterclock</code> proves to
 
36968
be useful: All mirrors in this level turn clockwise, except for <code>9b</code>.
 
36969
Without <code>counterclock</code>, we&rsquo;d have to use a callback-function to decide
 
36970
about the target and manually choose between the actions <code>turn</code> and
 
36971
<code>turnback</code>. However, by setting
 
36972
</p>
 
36973
<table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;9*&quot;] = {&quot;st_mirror&quot;, name = &quot;mirror%%&quot;, flavor = &quot;triangle&quot;,
 
36974
                         orientation = SOUTH, counterclock = true}
 
36975
</pre></td></tr></table>
 
36976
 
 
36977
<p>it&rsquo;s possible to send the same messages to all mirrors that correspond to
 
36978
triggers (i.e. <code>turn</code> when the trigger is pressed down and <code>turnback</code>
 
36979
when it is released again), and still to have one or more mirrors behave in a
 
36980
different way (i.e. rotating in another direction). The <code>inverse</code>
 
36981
attribute is of a similar use.
 
36982
</p>
 
36983
 
 
36984
<hr size="6">
 
36985
<a name="Extension-Development"></a>
 
36986
<table cellpadding="1" cellspacing="1" border="0">
 
36987
<tr><td valign="middle" align="left">[<a href="#Orthogonal-Autotiling" title="Previous section in reading order"> &lt; </a>]</td>
 
36988
<td valign="middle" align="left">[<a href="#Resolver-Development" title="Next section in reading order"> &gt; </a>]</td>
 
36989
<td valign="middle" align="left"> &nbsp; </td>
 
36990
<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
36991
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
36992
<td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Next chapter"> &gt;&gt; </a>]</td>
 
36993
<td valign="middle" align="left"> &nbsp; </td>
 
36994
<td valign="middle" align="left"> &nbsp; </td>
 
36995
<td valign="middle" align="left"> &nbsp; </td>
 
36996
<td valign="middle" align="left"> &nbsp; </td>
 
36997
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
36998
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
36999
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37000
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37001
</tr></table>
 
37002
<a name="Extension-Development-1"></a>
 
37003
<h1 class="chapter">14. Extension Development</h1>
 
37004
 
 
37005
<table class="menu" border="0" cellspacing="0">
 
37006
<tr><td align="left" valign="top"><a href="#Resolver-Development">14.1 Resolver Development</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
37007
</td></tr>
 
37008
</table>
 
37009
 
 
37010
<hr size="6">
 
37011
<a name="Resolver-Development"></a>
 
37012
<table cellpadding="1" cellspacing="1" border="0">
 
37013
<tr><td valign="middle" align="left">[<a href="#Extension-Development" title="Previous section in reading order"> &lt; </a>]</td>
 
37014
<td valign="middle" align="left">[<a href="#Resolver-Configurator" title="Next section in reading order"> &gt; </a>]</td>
 
37015
<td valign="middle" align="left"> &nbsp; </td>
 
37016
<td valign="middle" align="left">[<a href="#Extension-Development" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
37017
<td valign="middle" align="left">[<a href="#Extension-Development" title="Up section"> Up </a>]</td>
 
37018
<td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Next chapter"> &gt;&gt; </a>]</td>
 
37019
<td valign="middle" align="left"> &nbsp; </td>
 
37020
<td valign="middle" align="left"> &nbsp; </td>
 
37021
<td valign="middle" align="left"> &nbsp; </td>
 
37022
<td valign="middle" align="left"> &nbsp; </td>
 
37023
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
37024
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
37025
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37026
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37027
</tr></table>
 
37028
<a name="Resolver-Development-1"></a>
 
37029
<h2 class="section">14.1 Resolver Development</h2>
 
37030
 
 
37031
<p>Resolvers are designed to provide easy plugable extensions for usage by level
 
37032
authors. Further on resolvers should be as flexible as possible. To reach these
 
37033
goals each resolver consists of three parts: the configurator, the implemention
 
37034
and the finalizer.
 
37035
</p>
 
37036
<table class="menu" border="0" cellspacing="0">
 
37037
<tr><td align="left" valign="top"><a href="#Resolver-Configurator">14.1.1 Resolver Configurator</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
37038
</td></tr>
 
37039
<tr><td align="left" valign="top"><a href="#Resolver-Implementation">14.1.2 Resolver Implementation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
37040
</td></tr>
 
37041
<tr><td align="left" valign="top"><a href="#Resolver-Finalizer">14.1.3 Resolver Finalizer</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
37042
</td></tr>
 
37043
</table>
 
37044
 
 
37045
 
 
37046
<hr size="6">
 
37047
<a name="Resolver-Configurator"></a>
 
37048
<table cellpadding="1" cellspacing="1" border="0">
 
37049
<tr><td valign="middle" align="left">[<a href="#Resolver-Development" title="Previous section in reading order"> &lt; </a>]</td>
 
37050
<td valign="middle" align="left">[<a href="#Resolver-Implementation" title="Next section in reading order"> &gt; </a>]</td>
 
37051
<td valign="middle" align="left"> &nbsp; </td>
 
37052
<td valign="middle" align="left">[<a href="#Extension-Development" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
37053
<td valign="middle" align="left">[<a href="#Resolver-Development" title="Up section"> Up </a>]</td>
 
37054
<td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Next chapter"> &gt;&gt; </a>]</td>
 
37055
<td valign="middle" align="left"> &nbsp; </td>
 
37056
<td valign="middle" align="left"> &nbsp; </td>
 
37057
<td valign="middle" align="left"> &nbsp; </td>
 
37058
<td valign="middle" align="left"> &nbsp; </td>
 
37059
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
37060
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
37061
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37062
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37063
</tr></table>
 
37064
<a name="Resolver-Configurator-1"></a>
 
37065
<h3 class="subsection">14.1.1 Resolver Configurator</h3>
 
37066
<a name="index-res_002eresolvername"></a>
 
37067
 
 
37068
<p>The configurator is the function that is being called, when the author
 
37069
supplies the resolver specific parameters.
 
37070
</p>
 
37071
<dl compact="compact">
 
37072
<dt> <b>Syntax:</b></dt>
 
37073
<dd><p>context = <b>res.resolvername</b>(<i>subresolver</i>,...)
 
37074
</p>
 
37075
<dl compact="compact">
 
37076
<dt> <i>subresolver</i></dt>
 
37077
<dd><p>Resolver to which unresolved requests should be forwarded. May be &lsquo;<samp>ti</samp>&rsquo;
 
37078
as the final resolver of the resolver chain.
 
37079
</p></dd>
 
37080
</dl>
 
37081
 
 
37082
</dd>
 
37083
<dt> <b>Details:</b></dt>
 
37084
<dd><p>This function has just one mandatory parameter, the subresolver. You are free
 
37085
to specify arbitrary further parameters due to the needs of the resolvers task.
 
37086
</p>
 
37087
<p>All official resolvers will be registered in the registry table &lsquo;<samp>res</samp>&rsquo; under
 
37088
their official name:
 
37089
</p>
 
37090
<table><tr><td>&nbsp;</td><td><pre class="example">function res.composer(subresolver)
 
37091
    ...
 
37092
end
 
37093
</pre></td></tr></table>
 
37094
 
 
37095
<p>This configurator function will be called just once per level start. It is
 
37096
called after the tile declarations and before the first tile is set and the
 
37097
implementation part may be called.
 
37098
</p>
 
37099
<p>It is the task of the configurator function to check the user supplied
 
37100
parameters thoroughly and to provide appropriate error messages on bad
 
37101
parameters. Do this with a lua error message call at level 2 or the useful
 
37102
helper functions <a href="#assert_005fbool">assert_bool</a> and <a href="#assert_005ftype">assert_type</a>:
 
37103
</p><table><tr><td>&nbsp;</td><td><pre class="example">error(&quot;Resolver autotile rule &quot; .. i..&quot; is not a table&quot;, 2)
 
37104
assert_bool(is_resolver(subresolver), &quot;res.composer first argument (subresolver)&quot;, 2)
 
37105
assert_type(args[1], &quot;res.composer second argument (sequence)&quot;, 2, &quot;non-empty string&quot;)
 
37106
</pre></td></tr></table>
 
37107
 
 
37108
<p>The configuration function has to return a table that contains the context
 
37109
for subsequent calls of the implementation. This table has three predefined
 
37110
entries:
 
37111
</p>
 
37112
<dl compact="compact">
 
37113
<dt> <b>[1]</b> = <i>implementation function</i></dt>
 
37114
<dt> <b>[2]</b> = <i>finalizer function</i></dt>
 
37115
<dt> <b>[3]</b> = <i>subresolver</i></dt>
 
37116
<dt> <b>...</b> = resolver specific additional entries</dt>
 
37117
</dl>
 
37118
 
 
37119
<p>All the checked and preprocessed parameters have to be stored in this context
 
37120
table for later usage. The resolver implementation function is usually
 
37121
registered as &lsquo;<samp>res.resolvername_implementation</samp>&rsquo;. The finalizer can be
 
37122
&lsquo;<samp>nil</samp>&rsquo; if no finalization is necessary. The subresolver given as the
 
37123
first parameter of the configurator call needs to be the third context
 
37124
table entry.
 
37125
</p>
 
37126
<p>The context needs to add a metatable with two entries. First <code>&quot;_type&quot;</code>
 
37127
needs to identify the context as an enigma data type for the <a href="#etype">etype</a>
 
37128
function. Most resolvers to simply store the string <code>&quot;resolver&quot;</code>, but
 
37129
special ones might return special identification strings like <code>&quot;maze&quot;</code>.
 
37130
The second required entry is <code>&quot;_resolver&quot;</code> that needs a boolean &lsquo;<samp>true</samp>&rsquo;
 
37131
value assigned for purpose of secure identification of resolver tables. A
 
37132
default resolver metatable is stored at &lsquo;<samp>res.metatable</samp>&rsquo; and can directly
 
37133
be set by &lsquo;<samp>setmetatable</samp>&rsquo;.
 
37134
</p>
 
37135
</dd>
 
37136
<dt> <b>Full Example:</b></dt>
 
37137
<dd><table><tr><td>&nbsp;</td><td><pre class="example">function res.composer(subresolver)
 
37138
    assert_bool(is_resolver(subresolver), &quot;res.composer first argument (subresolver)&quot;, 2)
 
37139
    local context = {res.composer_implementation, nil, subresolver}
 
37140
    setmetatable(context, res.metatable)
 
37141
    return context
 
37142
end
 
37143
</pre></td></tr></table>
 
37144
</dd>
 
37145
</dl>
 
37146
 
 
37147
<hr size="6">
 
37148
<a name="Resolver-Implementation"></a>
 
37149
<table cellpadding="1" cellspacing="1" border="0">
 
37150
<tr><td valign="middle" align="left">[<a href="#Resolver-Configurator" title="Previous section in reading order"> &lt; </a>]</td>
 
37151
<td valign="middle" align="left">[<a href="#Resolver-Finalizer" title="Next section in reading order"> &gt; </a>]</td>
 
37152
<td valign="middle" align="left"> &nbsp; </td>
 
37153
<td valign="middle" align="left">[<a href="#Extension-Development" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
37154
<td valign="middle" align="left">[<a href="#Resolver-Development" title="Up section"> Up </a>]</td>
 
37155
<td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Next chapter"> &gt;&gt; </a>]</td>
 
37156
<td valign="middle" align="left"> &nbsp; </td>
 
37157
<td valign="middle" align="left"> &nbsp; </td>
 
37158
<td valign="middle" align="left"> &nbsp; </td>
 
37159
<td valign="middle" align="left"> &nbsp; </td>
 
37160
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
37161
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
37162
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37163
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37164
</tr></table>
 
37165
<a name="Resolver-Implementation-1"></a>
 
37166
<h3 class="subsection">14.1.2 Resolver Implementation</h3>
 
37167
<a name="index-res_002ecomposer_005fimplementation"></a>
 
37168
 
 
37169
<p>When the map gets evaluated on the world creation the top resolver is asked
 
37170
for every key to return the valid tile declaration. This is done with the
 
37171
following call.
 
37172
</p>
 
37173
<dl compact="compact">
 
37174
<dt> <b>Syntax:</b></dt>
 
37175
<dd><p>tile = <b>resolver_implementation</b>(<i>context</i>, <i>evaluator</i>, <i>key</i>, <i>x</i>, <i>y</i>)
 
37176
</p>
 
37177
<dl compact="compact">
 
37178
<dt> <i>context</i></dt>
 
37179
<dd><p>The context as provided as return value by the <a href="#Resolver-Configurator">Resolver Configurator</a>.
 
37180
</p></dd>
 
37181
<dt> <i>evaluator</i></dt>
 
37182
<dd><p>A system function that needs to be called whenever this resolver needs to
 
37183
look up the key by its subresolver.
 
37184
</p></dd>
 
37185
<dt> <i>key</i></dt>
 
37186
<dd><p>The key string that should be resolved
 
37187
</p></dd>
 
37188
<dt> <i>x</i>, <i>y</i></dt>
 
37189
<dd><p>The position of the tile.
 
37190
</p></dd>
 
37191
</dl>
 
37192
 
 
37193
</dd>
 
37194
<dt> <b>Details:</b></dt>
 
37195
<dd><p>Based on the given parameters, the key, the position, the resolver parameters
 
37196
stored in the context and the existing tiles that can be requested via the
 
37197
evaluator function the implementation needs to decide if it takes influence on
 
37198
the key. Note that it is not possible to access any world object via its
 
37199
coordinate at this time. On every call you have to assume that it may be the
 
37200
first tile that is set.
 
37201
</p>
 
37202
<p>If the key is not resolved to a final tile by this resolver, the subresolver
 
37203
must be called via the evaluator function:
 
37204
</p><table><tr><td>&nbsp;</td><td><pre class="example">local tile = evaluator(context[3], key, x, y)
 
37205
</pre></td></tr></table>
 
37206
 
 
37207
<p>Remember that the subresolver is stored at position 3 of the context. As no
 
37208
influence should be taken this tile is the one that should be returned.
 
37209
</p>
 
37210
<p>But if you want to return another tile you are free to do it. You can decide
 
37211
on another key and ask the subresolver for the appropriate tile. You can
 
37212
even concatenate two tiles returned by subsequent subresolver calls. You are
 
37213
allowed to return a new tile with a table declaration of an object. Some valid
 
37214
return statements:
 
37215
</p><table><tr><td>&nbsp;</td><td><pre class="example">return evaluator(context[3], &quot;a&quot;, x, y)
 
37216
return evaluator(context[3], &quot;a&quot;, x, y) .. evaluator(context[3], &quot;b&quot;, x, y)
 
37217
return evaluator(context[3], &quot;a&quot;, x, y) .. ti({&quot;st_laser_n&quot;, state=ON})
 
37218
</pre></td></tr></table>
 
37219
 
 
37220
<p>You are even allowed to add new tile declarations to the tiles repository to
 
37221
speed up subsequent calls:
 
37222
</p><table><tr><td>&nbsp;</td><td><pre class="example">ti[&quot;newkey&quot;] = evaluator(context[3], &quot;a&quot;, x, y) .. ti({&quot;st_laser_n&quot;, state=ON})
 
37223
</pre></td></tr></table>
 
37224
 
 
37225
<p>A resolver implementation can store and modify any of its private parameters
 
37226
in the context table for subsequent calls. Especially it can enlist all
 
37227
coordinates for postprocessing operations in the finalizer.
 
37228
</p>
 
37229
</dd>
 
37230
<dt> <b>Full Example:</b></dt>
 
37231
<dd><p>The implementation of the composer (without the special sequence treatment)
 
37232
</p><table><tr><td>&nbsp;</td><td><pre class="example">function res.composer_implementation(context, evaluator, key, x, y)
 
37233
    local tile = evaluator(context[3], key, x, y)
 
37234
    if tile ~= nil then
 
37235
        return tile
 
37236
    end
 
37237
    -- try to compose tile
 
37238
    for i = 1, #key do
 
37239
        local subkey = string.rep(&quot; &quot;, i-1) .. string.sub(key, i, i) .. string.rep(&quot; &quot;, #key - i)
 
37240
        local subtile = evaluator(context[3], subkey, x, y)
 
37241
        if subtile == nil then
 
37242
            return nil
 
37243
        end
 
37244
        if tile == nil then
 
37245
            tile = subtile
 
37246
        else
 
37247
            tile = tile .. subtile
 
37248
        end
 
37249
    end
 
37250
    return tile
 
37251
end
 
37252
</pre></td></tr></table>
 
37253
</dd>
 
37254
</dl>
 
37255
 
 
37256
<hr size="6">
 
37257
<a name="Resolver-Finalizer"></a>
 
37258
<table cellpadding="1" cellspacing="1" border="0">
 
37259
<tr><td valign="middle" align="left">[<a href="#Resolver-Implementation" title="Previous section in reading order"> &lt; </a>]</td>
 
37260
<td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Next section in reading order"> &gt; </a>]</td>
 
37261
<td valign="middle" align="left"> &nbsp; </td>
 
37262
<td valign="middle" align="left">[<a href="#Extension-Development" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
37263
<td valign="middle" align="left">[<a href="#Resolver-Development" title="Up section"> Up </a>]</td>
 
37264
<td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Next chapter"> &gt;&gt; </a>]</td>
 
37265
<td valign="middle" align="left"> &nbsp; </td>
 
37266
<td valign="middle" align="left"> &nbsp; </td>
 
37267
<td valign="middle" align="left"> &nbsp; </td>
 
37268
<td valign="middle" align="left"> &nbsp; </td>
 
37269
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
37270
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
37271
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37272
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37273
</tr></table>
 
37274
<a name="Resolver-Finalizer-1"></a>
 
37275
<h3 class="subsection">14.1.3 Resolver Finalizer</h3>
 
37276
<a name="index-res_002eresolver_005ffinalization"></a>
 
37277
 
 
37278
<p>If the <a href="#Resolver-Configurator">Resolver Configurator</a> provides a finalizer function in its context
 
37279
this function will be called once when all tiles from the map have been set.
 
37280
</p>
 
37281
<dl compact="compact">
 
37282
<dt> <b>Syntax:</b></dt>
 
37283
<dd><p><b>resolver_finalization</b>(<i>context</i>)
 
37284
</p>
 
37285
<dl compact="compact">
 
37286
<dt> <i>context</i></dt>
 
37287
<dd><p>The context as provided as return value by the <a href="#Resolver-Configurator">Resolver Configurator</a>.
 
37288
</p></dd>
 
37289
</dl>
 
37290
 
 
37291
</dd>
 
37292
<dt> <b>Details:</b></dt>
 
37293
<dd><p>The finalization functions of chained resolvers are called from bottom to top.
 
37294
</p>
 
37295
<p>Many resolvers have no need of a finalization. But some like a maze constructor
 
37296
need to know all participating tiles until they can do their final work.
 
37297
</p>
 
37298
<p>As all tiles from the map have been processed the objects can now be accessed.
 
37299
Further information may be stored in the resolvers context.
 
37300
</p>
 
37301
<p>The finalizer does neither call its subresolver nor does it return a value.
 
37302
</p></dd>
 
37303
</dl>
 
37304
 
 
37305
 
 
37306
<hr size="6">
 
37307
<a name="Guidelines-and-Hints"></a>
 
37308
<table cellpadding="1" cellspacing="1" border="0">
 
37309
<tr><td valign="middle" align="left">[<a href="#Resolver-Finalizer" title="Previous section in reading order"> &lt; </a>]</td>
 
37310
<td valign="middle" align="left">[<a href="#Filename-Recommendation" title="Next section in reading order"> &gt; </a>]</td>
 
37311
<td valign="middle" align="left"> &nbsp; </td>
 
37312
<td valign="middle" align="left">[<a href="#Extension-Development" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
37313
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
37314
<td valign="middle" align="left">[<a href="#Compatibility" title="Next chapter"> &gt;&gt; </a>]</td>
 
37315
<td valign="middle" align="left"> &nbsp; </td>
 
37316
<td valign="middle" align="left"> &nbsp; </td>
 
37317
<td valign="middle" align="left"> &nbsp; </td>
 
37318
<td valign="middle" align="left"> &nbsp; </td>
 
37319
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
37320
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
37321
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37322
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37323
</tr></table>
 
37324
<a name="Guidelines-and-Hints-1"></a>
 
37325
<h1 class="chapter">15. Guidelines and Hints</h1>
 
37326
 
 
37327
<p>Up to now we described all features in their full extend. Of course you are
 
37328
free to use them all without any restrictions for your private levels. We are
 
37329
committed to maintain all features in future versions of Enigma.
 
37330
</p>
 
37331
<p>But for inclusion of your levels into the Enigma project we would like to
 
37332
recommend conformance to some common standards. These few points guarantee that
 
37333
your levels can easily be processed by our administration tools, the players
 
37334
can talk about your level and your level remains editable by the project
 
37335
maintainers in case of urgent need.
 
37336
</p>
 
37337
<p>Additionally we like to give you some hints how to write good levels by means
 
37338
of proper strategy.
 
37339
</p>
 
37340
<table class="menu" border="0" cellspacing="0">
 
37341
<tr><td align="left" valign="top"><a href="#Filename-Recommendation">15.1 Filename Recommendation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
37342
</td></tr>
 
37343
<tr><td align="left" valign="top"><a href="#Title-Recommendation">15.2 Title Recommendation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
37344
</td></tr>
 
37345
<tr><td align="left" valign="top"><a href="#Tile-Key-Recommendation">15.3 Tile Key Recommendation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
37346
</td></tr>
 
37347
<tr><td align="left" valign="top"><a href="#Easy-Mode-Hints">15.4 Easy Mode Hints</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
37348
</td></tr>
 
37349
</table>
 
37350
 
 
37351
<hr size="6">
 
37352
<a name="Filename-Recommendation"></a>
 
37353
<table cellpadding="1" cellspacing="1" border="0">
 
37354
<tr><td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Previous section in reading order"> &lt; </a>]</td>
 
37355
<td valign="middle" align="left">[<a href="#Title-Recommendation" title="Next section in reading order"> &gt; </a>]</td>
 
37356
<td valign="middle" align="left"> &nbsp; </td>
 
37357
<td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
37358
<td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Up section"> Up </a>]</td>
 
37359
<td valign="middle" align="left">[<a href="#Compatibility" title="Next chapter"> &gt;&gt; </a>]</td>
 
37360
<td valign="middle" align="left"> &nbsp; </td>
 
37361
<td valign="middle" align="left"> &nbsp; </td>
 
37362
<td valign="middle" align="left"> &nbsp; </td>
 
37363
<td valign="middle" align="left"> &nbsp; </td>
 
37364
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
37365
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
37366
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37367
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37368
</tr></table>
 
37369
<a name="Filename-Recommendation-1"></a>
 
37370
<h2 class="section">15.1 Filename Recommendation</h2>
 
37371
<p>No space for spaces
 
37372
</p>
 
37373
<hr size="6">
 
37374
<a name="Title-Recommendation"></a>
 
37375
<table cellpadding="1" cellspacing="1" border="0">
 
37376
<tr><td valign="middle" align="left">[<a href="#Filename-Recommendation" title="Previous section in reading order"> &lt; </a>]</td>
 
37377
<td valign="middle" align="left">[<a href="#Tile-Key-Recommendation" title="Next section in reading order"> &gt; </a>]</td>
 
37378
<td valign="middle" align="left"> &nbsp; </td>
 
37379
<td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
37380
<td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Up section"> Up </a>]</td>
 
37381
<td valign="middle" align="left">[<a href="#Compatibility" title="Next chapter"> &gt;&gt; </a>]</td>
 
37382
<td valign="middle" align="left"> &nbsp; </td>
 
37383
<td valign="middle" align="left"> &nbsp; </td>
 
37384
<td valign="middle" align="left"> &nbsp; </td>
 
37385
<td valign="middle" align="left"> &nbsp; </td>
 
37386
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
37387
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
37388
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37389
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37390
</tr></table>
 
37391
<a name="Title-Recommendation-1"></a>
 
37392
<h2 class="section">15.2 Title Recommendation</h2>
 
37393
<p>English titles preferred - use subtitle, too
 
37394
</p>
 
37395
<hr size="6">
 
37396
<a name="Tile-Key-Recommendation"></a>
 
37397
<table cellpadding="1" cellspacing="1" border="0">
 
37398
<tr><td valign="middle" align="left">[<a href="#Title-Recommendation" title="Previous section in reading order"> &lt; </a>]</td>
 
37399
<td valign="middle" align="left">[<a href="#Easy-Mode-Hints" title="Next section in reading order"> &gt; </a>]</td>
 
37400
<td valign="middle" align="left"> &nbsp; </td>
 
37401
<td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
37402
<td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Up section"> Up </a>]</td>
 
37403
<td valign="middle" align="left">[<a href="#Compatibility" title="Next chapter"> &gt;&gt; </a>]</td>
 
37404
<td valign="middle" align="left"> &nbsp; </td>
 
37405
<td valign="middle" align="left"> &nbsp; </td>
 
37406
<td valign="middle" align="left"> &nbsp; </td>
 
37407
<td valign="middle" align="left"> &nbsp; </td>
 
37408
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
37409
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
37410
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37411
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37412
</tr></table>
 
37413
<a name="Tile-Key-Recommendation-1"></a>
 
37414
<h2 class="section">15.3 Tile Key Recommendation</h2>
 
37415
 
 
37416
<p>The following guidelines are not compulsory, but we nevertheless encourage
 
37417
them, as they ease the development of new and the maintenance of old levels.
 
37418
</p>
 
37419
<ul>
 
37420
<li> Stones use capital letters, items small letters, floors use punctuation marks.
 
37421
</li><li> The default floor is <code>&quot; &quot;</code>. The second most important floor typically is
 
37422
<code>&quot;_&quot;</code> or <code>&quot;.&quot;</code>. It&rsquo;s a good idea to use tile keys for floors, which are
 
37423
small and don&rsquo;t obstruct the view on the more important objects, like
 
37424
stones and items. Important floors (like bridges) may have letters or
 
37425
numbers to emphasize their importance (a bridge could be <code>&quot;b&quot;</code>, or a
 
37426
number to use autotiling).
 
37427
</li><li> Water typically is <code>&quot;~&quot;</code>, as the tilde is a small character which resembles
 
37428
a wave. Similarly, an abyss can be well described by <code>&quot;_&quot;</code>, as the underscore
 
37429
resembles a hole.
 
37430
</li><li> On a German keyboard, the four characters <code>&quot;.&quot;</code>, <code>&quot;,&quot;</code>, <code>&quot;:&quot;</code> and <code>&quot;;&quot;</code> are
 
37431
arranged in a square, so you can easily use them to arrange quadruples
 
37432
of floors, like lawn pieces of different brightness.
 
37433
On a US keyboard, you can use <code>&quot;,&quot;</code>, <code>&quot;.&quot;</code>, <code>&quot;&lt;&quot;</code> and <code>&quot;&gt;&quot;</code> to the same purpose.
 
37434
Another quadruple of characters are the arithmetic operators <code>&quot;+&quot;</code>, <code>&quot;-&quot;</code>,<code>&quot;*&quot;</code>, and <code>&quot;/&quot;</code>.
 
37435
</li><li> Slopes can be described using <code>&quot;&lt;&quot;</code>, <code>&quot;&gt;&quot;</code>, <code>&quot;v&quot;</code> and <code>&quot;^&quot;</code>. As you see, we
 
37436
encourage you to use the letter <code>&quot;v&quot;</code> for a floor at this point, as it
 
37437
resembles an arrow pointing down. For slant slopes, it&rsquo;s a good idea to
 
37438
use either numbers (following the number keypad on your keyboard), or
 
37439
quadruple characters like <code>&quot;.&quot;</code>, <code>&quot;,&quot;</code>, <code>&quot;:&quot;</code>, <code>&quot;;&quot;</code> or arithmetic operators.
 
37440
</li><li> Although it fits nicely to <code>&quot;/&quot;</code>, it&rsquo;s not a good idea to use the backslash
 
37441
as a tile key, as it has to be masked to work correctly. Similarly, we
 
37442
disencourage the use of brackets as tile keys.
 
37443
</li><li> The most important simple stone should be <code>&quot;#&quot;</code>, all other stones should
 
37444
use their first letter, like &ldquo;laser&rdquo; -&gt; <code>&quot;L&quot;</code>, &ldquo;switch&rdquo; -&gt; <code>&quot;S&quot;</code>, &ldquo;box&rdquo; -&gt; <code>&quot;B&quot;</code>.
 
37445
If two stones have the same first letter, the more important one should
 
37446
be given priority (<code>&quot;L&quot;</code> for laser instead of <code>&quot;L&quot;</code> for <code>&quot;st_lightglass&quot;</code>,
 
37447
<code>&quot;G&quot;</code> for <code>&quot;st_lightglass&quot;</code> instead of <code>&quot;G&quot;</code> for <code>&quot;st_greenbrown&quot;</code>).
 
37448
</li><li> Orientable stones like boulders or lasers should use <code>&quot;N&quot;</code>, <code>&quot;E&quot;</code>, <code>&quot;S&quot;</code>, <code>&quot;W&quot;</code>
 
37449
if they appear in more than one orientation.
 
37450
</li><li> Stones of the same kind, which appear several times in different ways
 
37451
(like switches with different actions) should use consecutive letter
 
37452
(<code>&quot;S&quot;</code>, <code>&quot;T&quot;</code>, <code>&quot;U&quot;</code>, ...) or numbers.
 
37453
</li><li> Oxyd stones should use <code>&quot;O&quot;</code> or <code>&quot;0&quot;</code>. If you put several different oxyd
 
37454
stones, e.g. of different colors, make use of consecutive letters (<code>&quot;P&quot;</code>,
 
37455
<code>&quot;Q&quot;</code>, <code>&quot;R&quot;</code> ...) or numbers.
 
37456
</li><li> If you want to put mirrors, it&rsquo;s a good idea to use characters resembling
 
37457
the orientation of the mirror, i.e. <code>&quot;|&quot;</code>, <code>&quot;-&quot;</code>, and <code>&quot;/&quot;</code>. As the backslash
 
37458
is no good tile key, you may use <code>&quot;&amp;&quot;</code> or <code>&quot;Q&quot;</code> instead, as these characters
 
37459
include a prominent slant line similar to the backslash. Triangular
 
37460
mirrors are best written with <code>&quot;&lt;&quot;</code>, <code>&quot;&gt;&quot;</code>, <code>&quot;v&quot;</code> and <code>&quot;^&quot;</code>.
 
37461
</li><li> For rotator stones, it&rsquo;s a good idea to use <code>&quot;R&quot;</code> and <code>&quot;L&quot;</code> for clockwise
 
37462
(right) and counter-clockwise (left) rotating stones. As an alternative,
 
37463
you might want to use characters which are written in either clockwise
 
37464
or counter-clockwise manner, like <code>&quot;p&quot;</code> and <code>&quot;q&quot;</code>. Note that this might
 
37465
depend on your handwriting.
 
37466
</li><li> Documents can use either <code>&quot;d&quot;</code>, or <code>&quot;i&quot;</code> (for <code>&quot;information&quot;</code>), as <code>&quot;d&quot;</code> is
 
37467
used more often (e.g. for autotiling purposes). If several documents
 
37468
appear in the level, you can use consecutive letters (<code>&quot;i&quot;</code>, <code>&quot;j&quot;</code>, <code>&quot;k&quot;</code> ...).
 
37469
Remember that you can take advantage of autotiling if you have lots of
 
37470
different documents in your level.
 
37471
</li><li> Coins can be written with <code>&quot;c&quot;</code>, with <code>&quot;$&quot;</code> or with numbers resembling their worth.
 
37472
</li><li> Marbles should be <code>&quot;@&quot;</code>, all other actors should use small letters
 
37473
(<code>&quot;t&quot;</code> for ac_top, <code>&quot;p&quot;</code> for ac_pearl, ...), or large punctuation marks.
 
37474
</li><li> For autotiling, it&rsquo;s a good idea to use <code>&quot;X&quot;</code>, <code>&quot;Y&quot;</code>, <code>&quot;x&quot;</code>, <code>&quot;y&quot;</code>, <code>&quot;*&quot;</code>, <code>&quot;?&quot;</code> and
 
37475
similar characters which associate themselves with variables as template
 
37476
keys. Another possibility is to use a full word like <code>&quot;door&quot;</code> or <code>&quot;switch&quot;</code>
 
37477
as template tile key, which has the advantage of being easier
 
37478
</li></ul>
 
37479
 
 
37480
<hr size="6">
 
37481
<a name="Easy-Mode-Hints"></a>
 
37482
<table cellpadding="1" cellspacing="1" border="0">
 
37483
<tr><td valign="middle" align="left">[<a href="#Tile-Key-Recommendation" title="Previous section in reading order"> &lt; </a>]</td>
 
37484
<td valign="middle" align="left">[<a href="#Compatibility" title="Next section in reading order"> &gt; </a>]</td>
 
37485
<td valign="middle" align="left"> &nbsp; </td>
 
37486
<td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
37487
<td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Up section"> Up </a>]</td>
 
37488
<td valign="middle" align="left">[<a href="#Compatibility" title="Next chapter"> &gt;&gt; </a>]</td>
 
37489
<td valign="middle" align="left"> &nbsp; </td>
 
37490
<td valign="middle" align="left"> &nbsp; </td>
 
37491
<td valign="middle" align="left"> &nbsp; </td>
 
37492
<td valign="middle" align="left"> &nbsp; </td>
 
37493
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
37494
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
37495
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37496
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37497
</tr></table>
 
37498
<a name="Easy-Mode-Hints-1"></a>
 
37499
<h2 class="section">15.4 Easy Mode Hints</h2>
 
37500
<p>write easy first, floor friction,...
 
37501
</p>
 
37502
 
 
37503
<hr size="6">
 
37504
<a name="Compatibility"></a>
 
37505
<table cellpadding="1" cellspacing="1" border="0">
 
37506
<tr><td valign="middle" align="left">[<a href="#Easy-Mode-Hints" title="Previous section in reading order"> &lt; </a>]</td>
 
37507
<td valign="middle" align="left">[<a href="#Engine-Compatibility" title="Next section in reading order"> &gt; </a>]</td>
 
37508
<td valign="middle" align="left"> &nbsp; </td>
 
37509
<td valign="middle" align="left">[<a href="#Guidelines-and-Hints" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
37510
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
37511
<td valign="middle" align="left">[<a href="#Object-Index" title="Next chapter"> &gt;&gt; </a>]</td>
 
37512
<td valign="middle" align="left"> &nbsp; </td>
 
37513
<td valign="middle" align="left"> &nbsp; </td>
 
37514
<td valign="middle" align="left"> &nbsp; </td>
 
37515
<td valign="middle" align="left"> &nbsp; </td>
 
37516
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
37517
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
37518
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37519
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37520
</tr></table>
 
37521
<a name="Compatibility-1"></a>
 
37522
<h1 class="chapter">16. Compatibility</h1>
 
37523
 
 
37524
 
 
37525
<table class="menu" border="0" cellspacing="0">
 
37526
<tr><td align="left" valign="top"><a href="#Engine-Compatibility">16.1 Engine Compatibility</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Differences between Compatibility Modes
 
37527
</td></tr>
 
37528
</table>
 
37529
 
 
37530
<hr size="6">
 
37531
<a name="Engine-Compatibility"></a>
 
37532
<table cellpadding="1" cellspacing="1" border="0">
 
37533
<tr><td valign="middle" align="left">[<a href="#Compatibility" title="Previous section in reading order"> &lt; </a>]</td>
 
37534
<td valign="middle" align="left">[<a href="#Object-Index" title="Next section in reading order"> &gt; </a>]</td>
 
37535
<td valign="middle" align="left"> &nbsp; </td>
 
37536
<td valign="middle" align="left">[<a href="#Compatibility" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
37537
<td valign="middle" align="left">[<a href="#Compatibility" title="Up section"> Up </a>]</td>
 
37538
<td valign="middle" align="left">[<a href="#Object-Index" title="Next chapter"> &gt;&gt; </a>]</td>
 
37539
<td valign="middle" align="left"> &nbsp; </td>
 
37540
<td valign="middle" align="left"> &nbsp; </td>
 
37541
<td valign="middle" align="left"> &nbsp; </td>
 
37542
<td valign="middle" align="left"> &nbsp; </td>
 
37543
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
37544
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
37545
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37546
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37547
</tr></table>
 
37548
<a name="Engine-Compatibility-1"></a>
 
37549
<h2 class="section">16.1 Engine Compatibility</h2>
 
37550
 
 
37551
<p>Although Enigma was inspired by the Oxyd game series, there are
 
37552
some differences between the native Enigma engine mode and the other modes as
 
37553
well as between the other modes themselves. Using the compatibility element
 
37554
of the xml-metadata (see section <a href="#g_t_003ccompatibility_003e">&lt;compatibility&gt;</a>), it is possible to activate some
 
37555
of these special features. Here is a list of the major differences
 
37556
</p>
 
37557
<p><strong>All non-Enigma modes <code>(oxyd1, per.oxyd, oxyd.magnum, oxyd.extra)</code></strong>
 
37558
</p>
 
37559
<ul>
 
37560
<li> Keep <a href="#it_005fkey">it_key</a> when using <a href="#st_005fkey">st_key</a>.
 
37561
</li><li> Oxyd stones (<a href="#st_005foxyd">st_oxyd</a>) must blink before they can be
 
37562
ultimately opened (pairs must be hit with some time delay).
 
37563
</li><li> The non-Enigma modes feature a model of the 0.92-Fire System
 
37564
(see <a href="#Fire-Spreading">Fire Spreading</a>).
 
37565
</li><li> <a href="#it_005fsquashed">it_squashed</a> and <a href="#it_005fcross">it_cross</a> can&rsquo;t be removed with
 
37566
<a href="#it_005fbrush">it_brush</a>.
 
37567
</li><li> The only function of <a href="#it_005fpencil">it_pencil</a> is to turn
 
37568
<a href="#st_005fflat">st_flat</a> and its movable variant into the burnable variants.
 
37569
</li><li> <a href="#it_005fbottle">it_bottle</a> doesn&rsquo;t break when a stone is pushed over it.
 
37570
</li><li> <a href="#st_005fswap">st_swap</a> and <a href="#st_005fpull">st_pull</a> may not swap/pull into the level
 
37571
border.
 
37572
</li></ul>
 
37573
 
 
37574
 
 
37575
<p><strong><code>oxyd1</code>-compatibility</strong>
 
37576
</p>
 
37577
<ul>
 
37578
<li> <a href="#it_005fseed">it_seed</a> grows to <a href="#fl_005fwood">fl_wood</a>_framed under <a href="#st_005fgrate">st_grate</a>_cross,
 
37579
not to <a href="#st_005fbox">st_box</a>_wood.
 
37580
</li><li> Flying actors may pass <a href="#st_005fgrate">st_grate</a>).
 
37581
</li><li> <a href="#st_005fbox">st_box</a>_wood only falls when moved.
 
37582
</li><li> The <code>ignite</code>-message (e.g. by <a href="#it_005fdynamite">it_dynamite</a>) doesn&rsquo;t
 
37583
kill <a href="#it_005fdocument">it_document</a>.
 
37584
</li><li> Bombs <a href="#it_005fbomb">it_bomb</a> aren&rsquo;t ignited when <a href="#st_005fbox">st_box</a>_wood is pushed over
 
37585
them (see <code>oxydmagnum</code>-compatibility).
 
37586
</li></ul>
 
37587
 
 
37588
 
 
37589
<p><strong><code>per.oxyd</code>-compatibility</strong>
 
37590
</p>
 
37591
<ul>
 
37592
<li> When painted with <a href="#it_005fbrush">it_brush</a>, <a href="#st_005fghost">st_ghost</a>_purplemarble becomes
 
37593
an open <a href="#st_005ffake">st_fake</a>_oxydc instead of <code>st_purplemarble</code>.
 
37594
</li><li> <a href="#it_005fhammer">it_hammer</a> doesn&rsquo;t laser-transform into <a href="#it_005fsword">it_sword</a>.
 
37595
</li><li> <a href="#it_005fumbrella">it_umbrella</a> doesn&rsquo;t explode in laser light.
 
37596
</li><li> <a href="#it_005fcross">it_cross</a> inverts signals it receives.
 
37597
</li></ul>
 
37598
 
 
37599
 
 
37600
<p><strong><code>oxyd.magnum</code>-compatibility</strong>
 
37601
</p>
 
37602
<ul>
 
37603
<li> <a href="#it_005fseed">it_seed</a> grows to <a href="#fl_005fwood">fl_wood</a>_framed under <a href="#st_005fgrate">st_grate</a>_cross,
 
37604
not to <a href="#st_005fbox">st_box</a>_wood.
 
37605
</li><li> Bombs<a href="#it_005fbomb">it_bomb</a> aren&rsquo;t ignited when <a href="#st_005fbox">st_box</a>_wood is pushed over
 
37606
them (see <code>oxyd1</code>-compatibility).
 
37607
</li></ul>
 
37608
 
 
37609
 
 
37610
 
 
37611
 
 
37612
<hr size="6">
 
37613
<a name="Object-Index"></a>
 
37614
<table cellpadding="1" cellspacing="1" border="0">
 
37615
<tr><td valign="middle" align="left">[<a href="#Engine-Compatibility" title="Previous section in reading order"> &lt; </a>]</td>
 
37616
<td valign="middle" align="left">[<a href="#Attribute-Index" title="Next section in reading order"> &gt; </a>]</td>
 
37617
<td valign="middle" align="left"> &nbsp; </td>
 
37618
<td valign="middle" align="left">[<a href="#Compatibility" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
37619
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
37620
<td valign="middle" align="left">[<a href="#Attribute-Index" title="Next chapter"> &gt;&gt; </a>]</td>
 
37621
<td valign="middle" align="left"> &nbsp; </td>
 
37622
<td valign="middle" align="left"> &nbsp; </td>
 
37623
<td valign="middle" align="left"> &nbsp; </td>
 
37624
<td valign="middle" align="left"> &nbsp; </td>
 
37625
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
37626
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
37627
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37628
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37629
</tr></table>
 
37630
<a name="Object-Index-1"></a>
 
37631
<h1 class="unnumbered">Object Index</h1>
 
37632
 
 
37633
<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Object-Index-1_ob_letter-A" class="summary-letter"><b>A</b></a>
 
37634
 &nbsp; 
 
37635
<a href="#Object-Index-1_ob_letter-F" class="summary-letter"><b>F</b></a>
 
37636
 &nbsp; 
 
37637
<a href="#Object-Index-1_ob_letter-I" class="summary-letter"><b>I</b></a>
 
37638
 &nbsp; 
 
37639
<a href="#Object-Index-1_ob_letter-N" class="summary-letter"><b>N</b></a>
 
37640
 &nbsp; 
 
37641
<a href="#Object-Index-1_ob_letter-O" class="summary-letter"><b>O</b></a>
 
37642
 &nbsp; 
 
37643
<a href="#Object-Index-1_ob_letter-S" class="summary-letter"><b>S</b></a>
 
37644
 &nbsp; 
 
37645
</td></tr></table>
 
37646
<table border="0" class="index-ob">
 
37647
<tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
 
37648
<tr><td colspan="3"> <hr></td></tr>
 
37649
<tr><th><a name="Object-Index-1_ob_letter-A">A</a></th><td></td><td></td></tr>
 
37650
<tr><td></td><td valign="top"><a href="#index-ac_005fbug">ac_bug</a></td><td valign="top"><a href="#ac_005fbug">10.2.1 ac_bug</a></td></tr>
 
37651
<tr><td></td><td valign="top"><a href="#index-ac_005fhorse">ac_horse</a></td><td valign="top"><a href="#ac_005fhorse">10.2.2 ac_horse</a></td></tr>
 
37652
<tr><td></td><td valign="top"><a href="#index-ac_005fkiller">ac_killer</a></td><td valign="top"><a href="#ac_005fkiller">10.2.3 ac_killer</a></td></tr>
 
37653
<tr><td></td><td valign="top"><a href="#index-ac_005fmarble">ac_marble</a></td><td valign="top"><a href="#ac_005fmarble">10.2.4 ac_marble</a></td></tr>
 
37654
<tr><td></td><td valign="top"><a href="#index-ac_005fpearl">ac_pearl</a></td><td valign="top"><a href="#ac_005fpearl">10.2.5 ac_pearl</a></td></tr>
 
37655
<tr><td></td><td valign="top"><a href="#index-ac_005frotor">ac_rotor</a></td><td valign="top"><a href="#ac_005frotor">10.2.6 ac_rotor</a></td></tr>
 
37656
<tr><td></td><td valign="top"><a href="#index-ac_005ftop">ac_top</a></td><td valign="top"><a href="#ac_005ftop">10.2.7 ac_top</a></td></tr>
 
37657
<tr><td colspan="3"> <hr></td></tr>
 
37658
<tr><th><a name="Object-Index-1_ob_letter-F">F</a></th><td></td><td></td></tr>
 
37659
<tr><td></td><td valign="top"><a href="#index-fl_005fabyss">fl_abyss</a></td><td valign="top"><a href="#fl_005fabyss">7.4.1 fl_abyss</a></td></tr>
 
37660
<tr><td></td><td valign="top"><a href="#index-fl_005fadhesionless">fl_adhesionless</a></td><td valign="top"><a href="#fl_005fadhesionless">7.3.1 fl_adhesionless</a></td></tr>
 
37661
<tr><td></td><td valign="top"><a href="#index-fl_005faquamarine">fl_aquamarine</a></td><td valign="top"><a href="#fl_005faquamarine">7.3.2 fl_aquamarine</a></td></tr>
 
37662
<tr><td></td><td valign="top"><a href="#index-fl_005fbast">fl_bast</a></td><td valign="top"><a href="#fl_005fbast">7.3.3 fl_bast</a></td></tr>
 
37663
<tr><td></td><td valign="top"><a href="#index-fl_005fbluegray">fl_bluegray</a></td><td valign="top"><a href="#fl_005fbluegray">7.3.4 fl_bluegray</a></td></tr>
 
37664
<tr><td></td><td valign="top"><a href="#index-fl_005fbluegreen">fl_bluegreen</a></td><td valign="top"><a href="#fl_005fbluegreen">7.3.5 fl_bluegreen</a></td></tr>
 
37665
<tr><td></td><td valign="top"><a href="#index-fl_005fblueslab">fl_blueslab</a></td><td valign="top"><a href="#fl_005fblueslab">7.3.6 fl_blueslab</a></td></tr>
 
37666
<tr><td></td><td valign="top"><a href="#index-fl_005fbrick">fl_brick</a></td><td valign="top"><a href="#fl_005fbrick">7.3.7 fl_brick</a></td></tr>
 
37667
<tr><td></td><td valign="top"><a href="#index-fl_005fbridge">fl_bridge</a></td><td valign="top"><a href="#fl_005fbridge">7.4.2 fl_bridge</a></td></tr>
 
37668
<tr><td></td><td valign="top"><a href="#index-fl_005fbright">fl_bright</a></td><td valign="top"><a href="#fl_005fbright">7.3.8 fl_bright</a></td></tr>
 
37669
<tr><td></td><td valign="top"><a href="#index-fl_005fconcrete">fl_concrete</a></td><td valign="top"><a href="#fl_005fconcrete">7.3.9 fl_concrete</a></td></tr>
 
37670
<tr><td></td><td valign="top"><a href="#index-fl_005fdark">fl_dark</a></td><td valign="top"><a href="#fl_005fdark">7.3.10 fl_dark</a></td></tr>
 
37671
<tr><td></td><td valign="top"><a href="#index-fl_005fdarkgray">fl_darkgray</a></td><td valign="top"><a href="#fl_005fdarkgray">7.3.11 fl_darkgray</a></td></tr>
 
37672
<tr><td></td><td valign="top"><a href="#index-fl_005fdunes">fl_dunes</a></td><td valign="top"><a href="#fl_005fdunes">7.3.12 fl_dunes</a></td></tr>
 
37673
<tr><td></td><td valign="top"><a href="#index-fl_005ffake">fl_fake</a></td><td valign="top"><a href="#fl_005ffake">7.4.3 fl_fake</a></td></tr>
 
37674
<tr><td></td><td valign="top"><a href="#index-fl_005fgravel">fl_gravel</a></td><td valign="top"><a href="#fl_005fgravel">7.3.13 fl_gravel</a></td></tr>
 
37675
<tr><td></td><td valign="top"><a href="#index-fl_005fgray">fl_gray</a></td><td valign="top"><a href="#fl_005fgray">7.3.14 fl_gray</a></td></tr>
 
37676
<tr><td></td><td valign="top"><a href="#index-fl_005fhay">fl_hay</a></td><td valign="top"><a href="#fl_005fhay">7.4.4 fl_hay</a></td></tr>
 
37677
<tr><td></td><td valign="top"><a href="#index-fl_005fhimalaya">fl_himalaya</a></td><td valign="top"><a href="#fl_005fhimalaya">7.3.15 fl_himalaya</a></td></tr>
 
37678
<tr><td></td><td valign="top"><a href="#index-fl_005fice">fl_ice</a></td><td valign="top"><a href="#fl_005fice">7.4.5 fl_ice</a></td></tr>
 
37679
<tr><td></td><td valign="top"><a href="#index-fl_005finverse">fl_inverse</a></td><td valign="top"><a href="#fl_005finverse">7.4.6 fl_inverse</a></td></tr>
 
37680
<tr><td></td><td valign="top"><a href="#index-fl_005fivory">fl_ivory</a></td><td valign="top"><a href="#fl_005fivory">7.3.16 fl_ivory</a></td></tr>
 
37681
<tr><td></td><td valign="top"><a href="#index-fl_005flawn">fl_lawn</a></td><td valign="top"><a href="#fl_005flawn">7.3.17 fl_lawn</a></td></tr>
 
37682
<tr><td></td><td valign="top"><a href="#index-fl_005fmarble">fl_marble</a></td><td valign="top"><a href="#fl_005fmarble">7.3.18 fl_marble</a></td></tr>
 
37683
<tr><td></td><td valign="top"><a href="#index-fl_005fmetal">fl_metal</a></td><td valign="top"><a href="#fl_005fmetal">7.3.19 fl_metal</a></td></tr>
 
37684
<tr><td></td><td valign="top"><a href="#index-fl_005fmortar">fl_mortar</a></td><td valign="top"><a href="#fl_005fmortar">7.3.20 fl_mortar</a></td></tr>
 
37685
<tr><td></td><td valign="top"><a href="#index-fl_005fnil">fl_nil</a></td><td valign="top"><a href="#Tile-and-Object-Declaration">5.11 Tile and Object Declaration</a></td></tr>
 
37686
<tr><td></td><td valign="top"><a href="#index-fl_005fpinkbumps">fl_pinkbumps</a></td><td valign="top"><a href="#fl_005fpinkbumps">7.3.21 fl_pinkbumps</a></td></tr>
 
37687
<tr><td></td><td valign="top"><a href="#index-fl_005fplank">fl_plank</a></td><td valign="top"><a href="#fl_005fplank">7.3.22 fl_plank</a></td></tr>
 
37688
<tr><td></td><td valign="top"><a href="#index-fl_005fplatinum">fl_platinum</a></td><td valign="top"><a href="#fl_005fplatinum">7.3.23 fl_platinum</a></td></tr>
 
37689
<tr><td></td><td valign="top"><a href="#index-fl_005fred">fl_red</a></td><td valign="top"><a href="#fl_005fred">7.3.24 fl_red</a></td></tr>
 
37690
<tr><td></td><td valign="top"><a href="#index-fl_005fredslab">fl_redslab</a></td><td valign="top"><a href="#fl_005fredslab">7.3.25 fl_redslab</a></td></tr>
 
37691
<tr><td></td><td valign="top"><a href="#index-fl_005frock">fl_rock</a></td><td valign="top"><a href="#fl_005frock">7.4.7 fl_rock</a></td></tr>
 
37692
<tr><td></td><td valign="top"><a href="#index-fl_005frough">fl_rough</a></td><td valign="top"><a href="#fl_005frough">7.3.26 fl_rough</a></td></tr>
 
37693
<tr><td></td><td valign="top"><a href="#index-fl_005fsahara">fl_sahara</a></td><td valign="top"><a href="#fl_005fsahara">7.3.27 fl_sahara</a></td></tr>
 
37694
<tr><td></td><td valign="top"><a href="#index-fl_005fsamba">fl_samba</a></td><td valign="top"><a href="#fl_005fsamba">7.3.28 fl_samba</a></td></tr>
 
37695
<tr><td></td><td valign="top"><a href="#index-fl_005fsand">fl_sand</a></td><td valign="top"><a href="#fl_005fsand">7.3.29 fl_sand</a></td></tr>
 
37696
<tr><td></td><td valign="top"><a href="#index-fl_005fscales">fl_scales</a></td><td valign="top"><a href="#fl_005fscales">7.4.8 fl_scales</a></td></tr>
 
37697
<tr><td></td><td valign="top"><a href="#index-fl_005fslope">fl_slope</a></td><td valign="top"><a href="#fl_005fslope">7.4.9 fl_slope</a></td></tr>
 
37698
<tr><td></td><td valign="top"><a href="#index-fl_005fspace">fl_space</a></td><td valign="top"><a href="#fl_005fspace">7.3.30 fl_space</a></td></tr>
 
37699
<tr><td></td><td valign="top"><a href="#index-fl_005fstone">fl_stone</a></td><td valign="top"><a href="#fl_005fstone">7.3.31 fl_stone</a></td></tr>
 
37700
<tr><td></td><td valign="top"><a href="#index-fl_005fswamp">fl_swamp</a></td><td valign="top"><a href="#fl_005fswamp">7.4.10 fl_swamp</a></td></tr>
 
37701
<tr><td></td><td valign="top"><a href="#index-fl_005fthief">fl_thief</a></td><td valign="top"><a href="#fl_005fthief">7.4.11 fl_thief</a></td></tr>
 
37702
<tr><td></td><td valign="top"><a href="#index-fl_005ftigris">fl_tigris</a></td><td valign="top"><a href="#fl_005ftigris">7.3.32 fl_tigris</a></td></tr>
 
37703
<tr><td></td><td valign="top"><a href="#index-fl_005fwater">fl_water</a></td><td valign="top"><a href="#fl_005fwater">7.4.12 fl_water</a></td></tr>
 
37704
<tr><td></td><td valign="top"><a href="#index-fl_005fwhite">fl_white</a></td><td valign="top"><a href="#fl_005fwhite">7.3.33 fl_white</a></td></tr>
 
37705
<tr><td></td><td valign="top"><a href="#index-fl_005fwood">fl_wood</a></td><td valign="top"><a href="#fl_005fwood">7.4.13 fl_wood</a></td></tr>
 
37706
<tr><td></td><td valign="top"><a href="#index-fl_005fwoven">fl_woven</a></td><td valign="top"><a href="#fl_005fwoven">7.3.34 fl_woven</a></td></tr>
 
37707
<tr><td></td><td valign="top"><a href="#index-fl_005fyinyang">fl_yinyang</a></td><td valign="top"><a href="#fl_005fyinyang">7.4.14 fl_yinyang</a></td></tr>
 
37708
<tr><td colspan="3"> <hr></td></tr>
 
37709
<tr><th><a name="Object-Index-1_ob_letter-I">I</a></th><td></td><td></td></tr>
 
37710
<tr><td></td><td valign="top"><a href="#index-it_005fbag">it_bag</a></td><td valign="top"><a href="#it_005fbag">8.3.1 it_bag</a></td></tr>
 
37711
<tr><td></td><td valign="top"><a href="#index-it_005fbanana">it_banana</a></td><td valign="top"><a href="#it_005fbanana">8.3.2 it_banana</a></td></tr>
 
37712
<tr><td></td><td valign="top"><a href="#index-it_005fblocker">it_blocker</a></td><td valign="top"><a href="#it_005fblocker">8.4.1 it_blocker</a></td></tr>
 
37713
<tr><td></td><td valign="top"><a href="#index-it_005fbomb">it_bomb</a></td><td valign="top"><a href="#it_005fbomb">8.4.2 it_bomb</a></td></tr>
 
37714
<tr><td></td><td valign="top"><a href="#index-it_005fbottle">it_bottle</a></td><td valign="top"><a href="#it_005fbottle">8.3.3 it_bottle</a></td></tr>
 
37715
<tr><td></td><td valign="top"><a href="#index-it_005fbrake">it_brake</a></td><td valign="top"><a href="#it_005fbrake">8.3.4 it_brake</a></td></tr>
 
37716
<tr><td></td><td valign="top"><a href="#index-it_005fbrush">it_brush</a></td><td valign="top"><a href="#it_005fbrush">8.3.5 it_brush</a></td></tr>
 
37717
<tr><td></td><td valign="top"><a href="#index-it_005fburnable">it_burnable</a></td><td valign="top"><a href="#it_005fburnable">8.4.3 it_burnable</a></td></tr>
 
37718
<tr><td></td><td valign="top"><a href="#index-it_005fcherry">it_cherry</a></td><td valign="top"><a href="#it_005fcherry">8.3.6 it_cherry</a></td></tr>
 
37719
<tr><td></td><td valign="top"><a href="#index-it_005fcoffee">it_coffee</a></td><td valign="top"><a href="#it_005fcoffee">8.3.7 it_coffee</a></td></tr>
 
37720
<tr><td></td><td valign="top"><a href="#index-it_005fcoin">it_coin</a></td><td valign="top"><a href="#it_005fcoin">8.3.8 it_coin</a></td></tr>
 
37721
<tr><td></td><td valign="top"><a href="#index-it_005fcrack">it_crack</a></td><td valign="top"><a href="#it_005fcrack">8.4.4 it_crack</a></td></tr>
 
37722
<tr><td></td><td valign="top"><a href="#index-it_005fcross">it_cross</a></td><td valign="top"><a href="#it_005fcross">8.4.5 it_cross</a></td></tr>
 
37723
<tr><td></td><td valign="top"><a href="#index-it_005fdeath">it_death</a></td><td valign="top"><a href="#it_005fdeath">8.4.6 it_death</a></td></tr>
 
37724
<tr><td></td><td valign="top"><a href="#index-it_005fdocument">it_document</a></td><td valign="top"><a href="#it_005fdocument">8.3.9 it_document</a></td></tr>
 
37725
<tr><td></td><td valign="top"><a href="#index-it_005fdrop">it_drop</a></td><td valign="top"><a href="#it_005fdrop">8.3.10 it_drop</a></td></tr>
 
37726
<tr><td></td><td valign="top"><a href="#index-it_005fdynamite">it_dynamite</a></td><td valign="top"><a href="#it_005fdynamite">8.3.11 it_dynamite</a></td></tr>
 
37727
<tr><td></td><td valign="top"><a href="#index-it_005fexplosion">it_explosion</a></td><td valign="top"><a href="#it_005fexplosion">8.4.7 it_explosion</a></td></tr>
 
37728
<tr><td></td><td valign="top"><a href="#index-it_005fextinguisher">it_extinguisher</a></td><td valign="top"><a href="#it_005fextinguisher">8.3.12 it_extinguisher</a></td></tr>
 
37729
<tr><td></td><td valign="top"><a href="#index-it_005fextralife">it_extralife</a></td><td valign="top"><a href="#it_005fextralife">8.3.13 it_extralife</a></td></tr>
 
37730
<tr><td></td><td valign="top"><a href="#index-it_005fflag">it_flag</a></td><td valign="top"><a href="#it_005fflag">8.3.14 it_flag</a></td></tr>
 
37731
<tr><td></td><td valign="top"><a href="#index-it_005ffloppy">it_floppy</a></td><td valign="top"><a href="#it_005ffloppy">8.3.15 it_floppy</a></td></tr>
 
37732
<tr><td></td><td valign="top"><a href="#index-it_005fglasses">it_glasses</a></td><td valign="top"><a href="#it_005fglasses">8.3.16 it_glasses</a></td></tr>
 
37733
<tr><td></td><td valign="top"><a href="#index-it_005fhammer">it_hammer</a></td><td valign="top"><a href="#it_005fhammer">8.3.17 it_hammer</a></td></tr>
 
37734
<tr><td></td><td valign="top"><a href="#index-it_005fkey">it_key</a></td><td valign="top"><a href="#it_005fkey">8.3.18 it_key</a></td></tr>
 
37735
<tr><td></td><td valign="top"><a href="#index-it_005flandmine">it_landmine</a></td><td valign="top"><a href="#it_005flandmine">8.4.8 it_landmine</a></td></tr>
 
37736
<tr><td></td><td valign="top"><a href="#index-it_005flaserbeam">it_laserbeam</a></td><td valign="top"><a href="#it_005flaserbeam">8.4.9 it_laserbeam</a></td></tr>
 
37737
<tr><td></td><td valign="top"><a href="#index-it_005fmagicwand">it_magicwand</a></td><td valign="top"><a href="#it_005fmagicwand">8.3.19 it_magicwand</a></td></tr>
 
37738
<tr><td></td><td valign="top"><a href="#index-it_005fmagnet">it_magnet</a></td><td valign="top"><a href="#it_005fmagnet">8.4.10 it_magnet</a></td></tr>
 
37739
<tr><td></td><td valign="top"><a href="#index-it_005fmeditation">it_meditation</a></td><td valign="top"><a href="#it_005fmeditation">8.4.11 it_meditation</a></td></tr>
 
37740
<tr><td></td><td valign="top"><a href="#index-it_005fnil">it_nil</a></td><td valign="top"><a href="#Tile-and-Object-Declaration">5.11 Tile and Object Declaration</a></td></tr>
 
37741
<tr><td></td><td valign="top"><a href="#index-it_005fpencil">it_pencil</a></td><td valign="top"><a href="#it_005fpencil">8.3.20 it_pencil</a></td></tr>
 
37742
<tr><td></td><td valign="top"><a href="#index-it_005fpin">it_pin</a></td><td valign="top"><a href="#it_005fpin">8.3.21 it_pin</a></td></tr>
 
37743
<tr><td></td><td valign="top"><a href="#index-it_005fpipe">it_pipe</a></td><td valign="top"><a href="#it_005fpipe">8.3.22 it_pipe</a></td></tr>
 
37744
<tr><td></td><td valign="top"><a href="#index-it_005fpuller">it_puller</a></td><td valign="top"><a href="#it_005fpuller">8.3.23 it_puller</a></td></tr>
 
37745
<tr><td></td><td valign="top"><a href="#index-it_005fring">it_ring</a></td><td valign="top"><a href="#it_005fring">8.3.24 it_ring</a></td></tr>
 
37746
<tr><td></td><td valign="top"><a href="#index-it_005frubberband">it_rubberband</a></td><td valign="top"><a href="#it_005frubberband">8.3.25 it_rubberband</a></td></tr>
 
37747
<tr><td></td><td valign="top"><a href="#index-it_005fseed">it_seed</a></td><td valign="top"><a href="#it_005fseed">8.3.26 it_seed</a></td></tr>
 
37748
<tr><td></td><td valign="top"><a href="#index-it_005fsensor">it_sensor</a></td><td valign="top"><a href="#it_005fsensor">8.4.12 it_sensor</a></td></tr>
 
37749
<tr><td></td><td valign="top"><a href="#index-it_005fshogun">it_shogun</a></td><td valign="top"><a href="#it_005fshogun">8.4.13 it_shogun</a></td></tr>
 
37750
<tr><td></td><td valign="top"><a href="#index-it_005fspade">it_spade</a></td><td valign="top"><a href="#it_005fspade">8.3.27 it_spade</a></td></tr>
 
37751
<tr><td></td><td valign="top"><a href="#index-it_005fspoon">it_spoon</a></td><td valign="top"><a href="#it_005fspoon">8.3.28 it_spoon</a></td></tr>
 
37752
<tr><td></td><td valign="top"><a href="#index-it_005fspring">it_spring</a></td><td valign="top"><a href="#it_005fspring">8.3.29 it_spring</a></td></tr>
 
37753
<tr><td></td><td valign="top"><a href="#index-it_005fspringboard">it_springboard</a></td><td valign="top"><a href="#it_005fspringboard">8.4.14 it_springboard</a></td></tr>
 
37754
<tr><td></td><td valign="top"><a href="#index-it_005fsquashed">it_squashed</a></td><td valign="top"><a href="#it_005fsquashed">8.4.15 it_squashed</a></td></tr>
 
37755
<tr><td></td><td valign="top"><a href="#index-it_005fstrip">it_strip</a></td><td valign="top"><a href="#it_005fstrip">8.4.16 it_strip</a></td></tr>
 
37756
<tr><td></td><td valign="top"><a href="#index-it_005fsurprise">it_surprise</a></td><td valign="top"><a href="#it_005fsurprise">8.3.30 it_surprise</a></td></tr>
 
37757
<tr><td></td><td valign="top"><a href="#index-it_005fsword">it_sword</a></td><td valign="top"><a href="#it_005fsword">8.3.31 it_sword</a></td></tr>
 
37758
<tr><td></td><td valign="top"><a href="#index-it_005ftrap">it_trap</a></td><td valign="top"><a href="#it_005ftrap">8.4.17 it_trap</a></td></tr>
 
37759
<tr><td></td><td valign="top"><a href="#index-it_005ftrigger">it_trigger</a></td><td valign="top"><a href="#it_005ftrigger">8.4.18 it_trigger</a></td></tr>
 
37760
<tr><td></td><td valign="top"><a href="#index-it_005fumbrella">it_umbrella</a></td><td valign="top"><a href="#it_005fumbrella">8.3.32 it_umbrella</a></td></tr>
 
37761
<tr><td></td><td valign="top"><a href="#index-it_005fvortex">it_vortex</a></td><td valign="top"><a href="#it_005fvortex">8.4.19 it_vortex</a></td></tr>
 
37762
<tr><td></td><td valign="top"><a href="#index-it_005fweight">it_weight</a></td><td valign="top"><a href="#it_005fweight">8.3.33 it_weight</a></td></tr>
 
37763
<tr><td></td><td valign="top"><a href="#index-it_005fwormhole">it_wormhole</a></td><td valign="top"><a href="#it_005fwormhole">8.4.20 it_wormhole</a></td></tr>
 
37764
<tr><td></td><td valign="top"><a href="#index-it_005fwrench">it_wrench</a></td><td valign="top"><a href="#it_005fwrench">8.3.34 it_wrench</a></td></tr>
 
37765
<tr><td></td><td valign="top"><a href="#index-it_005fyinyang">it_yinyang</a></td><td valign="top"><a href="#it_005fyinyang">8.3.35 it_yinyang</a></td></tr>
 
37766
<tr><td colspan="3"> <hr></td></tr>
 
37767
<tr><th><a name="Object-Index-1_ob_letter-N">N</a></th><td></td><td></td></tr>
 
37768
<tr><td></td><td valign="top"><a href="#index-nil">nil</a></td><td valign="top"><a href="#Tile-and-Object-Declaration">5.11 Tile and Object Declaration</a></td></tr>
 
37769
<tr><td colspan="3"> <hr></td></tr>
 
37770
<tr><th><a name="Object-Index-1_ob_letter-O">O</a></th><td></td><td></td></tr>
 
37771
<tr><td></td><td valign="top"><a href="#index-ot_005fcannonball">ot_cannonball</a></td><td valign="top"><a href="#ot_005fcannonball">11.1.1 ot_cannonball</a></td></tr>
 
37772
<tr><td></td><td valign="top"><a href="#index-ot_005fcounter">ot_counter</a></td><td valign="top"><a href="#ot_005fcounter">11.2.1 ot_counter</a></td></tr>
 
37773
<tr><td></td><td valign="top"><a href="#index-ot_005frubberband">ot_rubberband</a></td><td valign="top"><a href="#ot_005frubberband">11.1.2 ot_rubberband</a></td></tr>
 
37774
<tr><td></td><td valign="top"><a href="#index-ot_005ftimer">ot_timer</a></td><td valign="top"><a href="#ot_005ftimer">11.2.2 ot_timer</a></td></tr>
 
37775
<tr><td></td><td valign="top"><a href="#index-ot_005fwire">ot_wire</a></td><td valign="top"><a href="#ot_005fwire">11.1.3 ot_wire</a></td></tr>
 
37776
<tr><td colspan="3"> <hr></td></tr>
 
37777
<tr><th><a name="Object-Index-1_ob_letter-S">S</a></th><td></td><td></td></tr>
 
37778
<tr><td></td><td valign="top"><a href="#index-st_005factorimpulse">st_actorimpulse</a></td><td valign="top"><a href="#st_005factorimpulse">9.5.1 st_actorimpulse</a></td></tr>
 
37779
<tr><td></td><td valign="top"><a href="#index-st_005fancient">st_ancient</a></td><td valign="top"><a href="#st_005fancient">9.3.1 st_ancient</a></td></tr>
 
37780
<tr><td></td><td valign="top"><a href="#index-st_005fbarrier">st_barrier</a></td><td valign="top"><a href="#st_005fbarrier">9.5.2 st_barrier</a></td></tr>
 
37781
<tr><td></td><td valign="top"><a href="#index-st_005fbeads">st_beads</a></td><td valign="top"><a href="#st_005fbeads">9.5.3 st_beads</a></td></tr>
 
37782
<tr><td></td><td valign="top"><a href="#index-st_005fblocker">st_blocker</a></td><td valign="top"><a href="#st_005fblocker">9.5.4 st_blocker</a></td></tr>
 
37783
<tr><td></td><td valign="top"><a href="#index-st_005fbluegray">st_bluegray</a></td><td valign="top"><a href="#st_005fbluegray">9.3.2 st_bluegray</a></td></tr>
 
37784
<tr><td></td><td valign="top"><a href="#index-st_005fbluesand">st_bluesand</a></td><td valign="top"><a href="#st_005fbluesand">9.4.2 st_bluesand</a></td></tr>
 
37785
<tr><td></td><td valign="top"><a href="#index-st_005fblur">st_blur</a></td><td valign="top"><a href="#st_005fblur">9.5.5 st_blur</a></td></tr>
 
37786
<tr><td></td><td valign="top"><a href="#index-st_005fboulder">st_boulder</a></td><td valign="top"><a href="#st_005fboulder">9.5.6 st_boulder</a></td></tr>
 
37787
<tr><td></td><td valign="top"><a href="#index-st_005fbox">st_box</a></td><td valign="top"><a href="#st_005fbox">9.5.7 st_box</a></td></tr>
 
37788
<tr><td></td><td valign="top"><a href="#index-st_005fbrake">st_brake</a></td><td valign="top"><a href="#st_005fbrake">9.5.8 st_brake</a></td></tr>
 
37789
<tr><td></td><td valign="top"><a href="#index-st_005fbreak">st_break</a></td><td valign="top"><a href="#st_005fbreak">9.5.9 st_break</a></td></tr>
 
37790
<tr><td></td><td valign="top"><a href="#index-st_005fbrick">st_brick</a></td><td valign="top"><a href="#st_005fbrick">9.4.3 st_brick</a></td></tr>
 
37791
<tr><td></td><td valign="top"><a href="#index-st_005fbrownie">st_brownie</a></td><td valign="top"><a href="#st_005fbrownie">9.3.3 st_brownie</a></td></tr>
 
37792
<tr><td></td><td valign="top"><a href="#index-st_005fbrownmarble">st_brownmarble</a></td><td valign="top"><a href="#st_005fbrownmarble">9.3.4 st_brownmarble</a></td></tr>
 
37793
<tr><td></td><td valign="top"><a href="#index-st_005fbrownpyramid">st_brownpyramid</a></td><td valign="top"><a href="#st_005fbrownpyramid">9.5.10 st_brownpyramid</a></td></tr>
 
37794
<tr><td></td><td valign="top"><a href="#index-st_005fcamouflage">st_camouflage</a></td><td valign="top"><a href="#st_005fcamouflage">9.3.5 st_camouflage</a></td></tr>
 
37795
<tr><td></td><td valign="top"><a href="#index-st_005fchameleon">st_chameleon</a></td><td valign="top"><a href="#st_005fchameleon">9.5.11 st_chameleon</a></td></tr>
 
37796
<tr><td></td><td valign="top"><a href="#index-st_005fcharge">st_charge</a></td><td valign="top"><a href="#st_005fcharge">9.5.12 st_charge</a></td></tr>
 
37797
<tr><td></td><td valign="top"><a href="#index-st_005fchess">st_chess</a></td><td valign="top"><a href="#st_005fchess">9.5.13 st_chess</a></td></tr>
 
37798
<tr><td></td><td valign="top"><a href="#index-st_005fcoinslot">st_coinslot</a></td><td valign="top"><a href="#st_005fcoinslot">9.5.14 st_coinslot</a></td></tr>
 
37799
<tr><td></td><td valign="top"><a href="#index-st_005fconcrete">st_concrete</a></td><td valign="top"><a href="#st_005fconcrete">9.3.6 st_concrete</a></td></tr>
 
37800
<tr><td></td><td valign="top"><a href="#index-st_005fdarkglass">st_darkglass</a></td><td valign="top"><a href="#st_005fdarkglass">9.5.15 st_darkglass</a></td></tr>
 
37801
<tr><td></td><td valign="top"><a href="#index-st_005fdarkgray">st_darkgray</a></td><td valign="top"><a href="#st_005fdarkgray">9.3.7 st_darkgray</a></td></tr>
 
37802
<tr><td></td><td valign="top"><a href="#index-st_005fdeath">st_death</a></td><td valign="top"><a href="#st_005fdeath">9.5.16 st_death</a></td></tr>
 
37803
<tr><td></td><td valign="top"><a href="#index-st_005fdisco">st_disco</a></td><td valign="top"><a href="#st_005fdisco">9.5.17 st_disco</a></td></tr>
 
37804
<tr><td></td><td valign="top"><a href="#index-st_005fdispenser">st_dispenser</a></td><td valign="top"><a href="#st_005fdispenser">9.5.18 st_dispenser</a></td></tr>
 
37805
<tr><td></td><td valign="top"><a href="#index-st_005fdoor">st_door</a></td><td valign="top"><a href="#st_005fdoor">9.5.19 st_door</a></td></tr>
 
37806
<tr><td></td><td valign="top"><a href="#index-st_005ffake">st_fake</a></td><td valign="top"><a href="#st_005ffake">9.5.20 st_fake</a></td></tr>
 
37807
<tr><td></td><td valign="top"><a href="#index-st_005fflash">st_flash</a></td><td valign="top"><a href="#st_005fflash">9.5.21 st_flash</a></td></tr>
 
37808
<tr><td></td><td valign="top"><a href="#index-st_005fflat">st_flat</a></td><td valign="top"><a href="#st_005fflat">9.5.22 st_flat</a></td></tr>
 
37809
<tr><td></td><td valign="top"><a href="#index-st_005ffloppy">st_floppy</a></td><td valign="top"><a href="#st_005ffloppy">9.5.23 st_floppy</a></td></tr>
 
37810
<tr><td></td><td valign="top"><a href="#index-st_005ffourswitch">st_fourswitch</a></td><td valign="top"><a href="#st_005ffourswitch">9.5.24 st_fourswitch</a></td></tr>
 
37811
<tr><td></td><td valign="top"><a href="#index-st_005fghost">st_ghost</a></td><td valign="top"><a href="#st_005fghost">9.5.25 st_ghost</a></td></tr>
 
37812
<tr><td></td><td valign="top"><a href="#index-st_005fgranite">st_granite</a></td><td valign="top"><a href="#st_005fgranite">9.3.8 st_granite</a></td></tr>
 
37813
<tr><td></td><td valign="top"><a href="#index-st_005fgrate">st_grate</a></td><td valign="top"><a href="#st_005fgrate">9.5.26 st_grate</a></td></tr>
 
37814
<tr><td></td><td valign="top"><a href="#index-st_005fgreenbrown">st_greenbrown</a></td><td valign="top"><a href="#st_005fgreenbrown">9.5.27 st_greenbrown</a></td></tr>
 
37815
<tr><td></td><td valign="top"><a href="#index-st_005fgreengray">st_greengray</a></td><td valign="top"><a href="#st_005fgreengray">9.3.9 st_greengray</a></td></tr>
 
37816
<tr><td></td><td valign="top"><a href="#index-st_005fice">st_ice</a></td><td valign="top"><a href="#st_005fice">9.5.28 st_ice</a></td></tr>
 
37817
<tr><td></td><td valign="top"><a href="#index-st_005finvisible">st_invisible</a></td><td valign="top"><a href="#st_005finvisible">9.3.10 st_invisible</a></td></tr>
 
37818
<tr><td></td><td valign="top"><a href="#index-st_005fjamb">st_jamb</a></td><td valign="top"><a href="#st_005fjamb">9.5.29 st_jamb</a></td></tr>
 
37819
<tr><td></td><td valign="top"><a href="#index-st_005fkey">st_key</a></td><td valign="top"><a href="#st_005fkey">9.5.30 st_key</a></td></tr>
 
37820
<tr><td></td><td valign="top"><a href="#index-st_005fknight">st_knight</a></td><td valign="top"><a href="#st_005fknight">9.5.31 st_knight</a></td></tr>
 
37821
<tr><td></td><td valign="top"><a href="#index-st_005flaser">st_laser</a></td><td valign="top"><a href="#st_005flaser">9.5.32 st_laser</a></td></tr>
 
37822
<tr><td></td><td valign="top"><a href="#index-st_005flaserflop">st_laserflop</a></td><td valign="top"><a href="#st_005flaserflop">9.5.33 st_laserflop</a></td></tr>
 
37823
<tr><td></td><td valign="top"><a href="#index-st_005flaserswitch">st_laserswitch</a></td><td valign="top"><a href="#st_005flaserswitch">9.5.34 st_laserswitch</a></td></tr>
 
37824
<tr><td></td><td valign="top"><a href="#index-st_005flightglass">st_lightglass</a></td><td valign="top"><a href="#st_005flightglass">9.5.35 st_lightglass</a></td></tr>
 
37825
<tr><td></td><td valign="top"><a href="#index-st_005flightpassenger">st_lightpassenger</a></td><td valign="top"><a href="#st_005flightpassenger">9.5.36 st_lightpassenger</a></td></tr>
 
37826
<tr><td></td><td valign="top"><a href="#index-st_005fmagic">st_magic</a></td><td valign="top"><a href="#st_005fmagic">9.5.37 st_magic</a></td></tr>
 
37827
<tr><td></td><td valign="top"><a href="#index-st_005fmail">st_mail</a></td><td valign="top"><a href="#st_005fmail">9.5.38 st_mail</a></td></tr>
 
37828
<tr><td></td><td valign="top"><a href="#index-st_005fmetal">st_metal</a></td><td valign="top"><a href="#st_005fmetal">9.3.11 st_metal</a></td></tr>
 
37829
<tr><td></td><td valign="top"><a href="#index-st_005fmirror">st_mirror</a></td><td valign="top"><a href="#st_005fmirror">9.5.39 st_mirror</a></td></tr>
 
37830
<tr><td></td><td valign="top"><a href="#index-st_005fmonoflop">st_monoflop</a></td><td valign="top"><a href="#st_005fmonoflop">9.5.40 st_monoflop</a></td></tr>
 
37831
<tr><td></td><td valign="top"><a href="#index-st_005fnil">st_nil</a></td><td valign="top"><a href="#Tile-and-Object-Declaration">5.11 Tile and Object Declaration</a></td></tr>
 
37832
<tr><td></td><td valign="top"><a href="#index-st_005foneway">st_oneway</a></td><td valign="top"><a href="#st_005foneway">9.5.41 st_oneway</a></td></tr>
 
37833
<tr><td></td><td valign="top"><a href="#index-st_005foxyd">st_oxyd</a></td><td valign="top"><a href="#st_005foxyd">9.5.42 st_oxyd</a></td></tr>
 
37834
<tr><td></td><td valign="top"><a href="#index-st_005fpanel">st_panel</a></td><td valign="top"><a href="#st_005fpanel">9.4.4 st_panel</a></td></tr>
 
37835
<tr><td></td><td valign="top"><a href="#index-st_005fpassage">st_passage</a></td><td valign="top"><a href="#st_005fpassage">9.5.43 st_passage</a></td></tr>
 
37836
<tr><td></td><td valign="top"><a href="#index-st_005fpinkbumps">st_pinkbumps</a></td><td valign="top"><a href="#st_005fpinkbumps">9.3.12 st_pinkbumps</a></td></tr>
 
37837
<tr><td></td><td valign="top"><a href="#index-st_005fplaster">st_plaster</a></td><td valign="top"><a href="#st_005fplaster">9.5.44 st_plaster</a></td></tr>
 
37838
<tr><td></td><td valign="top"><a href="#index-st_005fplop">st_plop</a></td><td valign="top"><a href="#st_005fplop">9.5.45 st_plop</a></td></tr>
 
37839
<tr><td></td><td valign="top"><a href="#index-st_005fpolarswitch">st_polarswitch</a></td><td valign="top"><a href="#st_005fpolarswitch">9.5.46 st_polarswitch</a></td></tr>
 
37840
<tr><td></td><td valign="top"><a href="#index-st_005fportal">st_portal</a></td><td valign="top"><a href="#st_005fportal">9.5.47 st_portal</a></td></tr>
 
37841
<tr><td></td><td valign="top"><a href="#index-st_005fpull">st_pull</a></td><td valign="top"><a href="#st_005fpull">9.5.48 st_pull</a></td></tr>
 
37842
<tr><td></td><td valign="top"><a href="#index-st_005fpurplegray">st_purplegray</a></td><td valign="top"><a href="#st_005fpurplegray">9.3.13 st_purplegray</a></td></tr>
 
37843
<tr><td></td><td valign="top"><a href="#index-st_005fpurplemarble">st_purplemarble</a></td><td valign="top"><a href="#st_005fpurplemarble">9.3.14 st_purplemarble</a></td></tr>
 
37844
<tr><td></td><td valign="top"><a href="#index-st_005fpuzzle">st_puzzle</a></td><td valign="top"><a href="#st_005fpuzzle">9.5.49 st_puzzle</a></td></tr>
 
37845
<tr><td></td><td valign="top"><a href="#index-st_005fquake">st_quake</a></td><td valign="top"><a href="#st_005fquake">9.5.50 st_quake</a></td></tr>
 
37846
<tr><td></td><td valign="top"><a href="#index-st_005frawglass">st_rawglass</a></td><td valign="top"><a href="#st_005frawglass">9.5.51 st_rawglass</a></td></tr>
 
37847
<tr><td></td><td valign="top"><a href="#index-st_005fredbrown">st_redbrown</a></td><td valign="top"><a href="#st_005fredbrown">9.3.15 st_redbrown</a></td></tr>
 
37848
<tr><td></td><td valign="top"><a href="#index-st_005fredfiber">st_redfiber</a></td><td valign="top"><a href="#st_005fredfiber">9.5.52 st_redfiber</a></td></tr>
 
37849
<tr><td></td><td valign="top"><a href="#index-st_005fredmarble">st_redmarble</a></td><td valign="top"><a href="#st_005fredmarble">9.3.16 st_redmarble</a></td></tr>
 
37850
<tr><td></td><td valign="top"><a href="#index-st_005fredrock">st_redrock</a></td><td valign="top"><a href="#st_005fredrock">9.3.17 st_redrock</a></td></tr>
 
37851
<tr><td></td><td valign="top"><a href="#index-st_005frotator">st_rotator</a></td><td valign="top"><a href="#st_005frotator">9.5.53 st_rotator</a></td></tr>
 
37852
<tr><td></td><td valign="top"><a href="#index-st_005frubberband">st_rubberband</a></td><td valign="top"><a href="#st_005frubberband">9.5.54 st_rubberband</a></td></tr>
 
37853
<tr><td></td><td valign="top"><a href="#index-st_005fscissors">st_scissors</a></td><td valign="top"><a href="#st_005fscissors">9.5.55 st_scissors</a></td></tr>
 
37854
<tr><td></td><td valign="top"><a href="#index-st_005fshogun">st_shogun</a></td><td valign="top"><a href="#st_005fshogun">9.5.56 st_shogun</a></td></tr>
 
37855
<tr><td></td><td valign="top"><a href="#index-st_005fspitter">st_spitter</a></td><td valign="top"><a href="#st_005fspitter">9.5.57 st_spitter</a></td></tr>
 
37856
<tr><td></td><td valign="top"><a href="#index-st_005fstoneimpulse">st_stoneimpulse</a></td><td valign="top"><a href="#st_005fstoneimpulse">9.5.58 st_stoneimpulse</a></td></tr>
 
37857
<tr><td></td><td valign="top"><a href="#index-st_005fsurprise">st_surprise</a></td><td valign="top"><a href="#st_005fsurprise">9.5.59 st_surprise</a></td></tr>
 
37858
<tr><td></td><td valign="top"><a href="#index-st_005fswap">st_swap</a></td><td valign="top"><a href="#st_005fswap">9.5.60 st_swap</a></td></tr>
 
37859
<tr><td></td><td valign="top"><a href="#index-st_005fswitch">st_switch</a></td><td valign="top"><a href="#st_005fswitch">9.5.61 st_switch</a></td></tr>
 
37860
<tr><td></td><td valign="top"><a href="#index-st_005fthief">st_thief</a></td><td valign="top"><a href="#st_005fthief">9.5.62 st_thief</a></td></tr>
 
37861
<tr><td></td><td valign="top"><a href="#index-st_005ftigris">st_tigris</a></td><td valign="top"><a href="#st_005ftigris">9.3.18 st_tigris</a></td></tr>
 
37862
<tr><td></td><td valign="top"><a href="#index-st_005ftimer">st_timer</a></td><td valign="top"><a href="#st_005ftimer">9.5.63 st_timer</a></td></tr>
 
37863
<tr><td></td><td valign="top"><a href="#index-st_005fturnstile">st_turnstile</a></td><td valign="top"><a href="#st_005fturnstile">9.5.64 st_turnstile</a></td></tr>
 
37864
<tr><td></td><td valign="top"><a href="#index-st_005fturnstilearm">st_turnstilearm</a></td><td valign="top"><a href="#st_005fturnstilearm">9.5.65 st_turnstilearm</a></td></tr>
 
37865
<tr><td></td><td valign="top"><a href="#index-st_005fvolcano">st_volcano</a></td><td valign="top"><a href="#st_005fvolcano">9.5.66 st_volcano</a></td></tr>
 
37866
<tr><td></td><td valign="top"><a href="#index-st_005fwindow">st_window</a></td><td valign="top"><a href="#st_005fwindow">9.5.67 st_window</a></td></tr>
 
37867
<tr><td></td><td valign="top"><a href="#index-st_005fwoven">st_woven</a></td><td valign="top"><a href="#st_005fwoven">9.3.19 st_woven</a></td></tr>
 
37868
<tr><td></td><td valign="top"><a href="#index-st_005fyellow">st_yellow</a></td><td valign="top"><a href="#st_005fyellow">9.3.20 st_yellow</a></td></tr>
 
37869
<tr><td></td><td valign="top"><a href="#index-st_005fyinyang">st_yinyang</a></td><td valign="top"><a href="#st_005fyinyang">9.5.68 st_yinyang</a></td></tr>
 
37870
<tr><td colspan="3"> <hr></td></tr>
 
37871
</table>
 
37872
<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Object-Index-1_ob_letter-A" class="summary-letter"><b>A</b></a>
 
37873
 &nbsp; 
 
37874
<a href="#Object-Index-1_ob_letter-F" class="summary-letter"><b>F</b></a>
 
37875
 &nbsp; 
 
37876
<a href="#Object-Index-1_ob_letter-I" class="summary-letter"><b>I</b></a>
 
37877
 &nbsp; 
 
37878
<a href="#Object-Index-1_ob_letter-N" class="summary-letter"><b>N</b></a>
 
37879
 &nbsp; 
 
37880
<a href="#Object-Index-1_ob_letter-O" class="summary-letter"><b>O</b></a>
 
37881
 &nbsp; 
 
37882
<a href="#Object-Index-1_ob_letter-S" class="summary-letter"><b>S</b></a>
 
37883
 &nbsp; 
 
37884
</td></tr></table>
 
37885
 
 
37886
<hr size="6">
 
37887
<a name="Attribute-Index"></a>
 
37888
<table cellpadding="1" cellspacing="1" border="0">
 
37889
<tr><td valign="middle" align="left">[<a href="#Object-Index" title="Previous section in reading order"> &lt; </a>]</td>
 
37890
<td valign="middle" align="left">[<a href="#Message-Index" title="Next section in reading order"> &gt; </a>]</td>
 
37891
<td valign="middle" align="left"> &nbsp; </td>
 
37892
<td valign="middle" align="left">[<a href="#Object-Index" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
37893
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
37894
<td valign="middle" align="left">[<a href="#Message-Index" title="Next chapter"> &gt;&gt; </a>]</td>
 
37895
<td valign="middle" align="left"> &nbsp; </td>
 
37896
<td valign="middle" align="left"> &nbsp; </td>
 
37897
<td valign="middle" align="left"> &nbsp; </td>
 
37898
<td valign="middle" align="left"> &nbsp; </td>
 
37899
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
37900
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
37901
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37902
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37903
</tr></table>
 
37904
<a name="Attribute-Index-1"></a>
 
37905
<h1 class="unnumbered">Attribute Index</h1>
 
37906
 
 
37907
<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Attribute-Index-1_at_letter-A" class="summary-letter"><b>A</b></a>
 
37908
 &nbsp; 
 
37909
<a href="#Attribute-Index-1_at_letter-O" class="summary-letter"><b>O</b></a>
 
37910
 &nbsp; 
 
37911
<a href="#Attribute-Index-1_at_letter-S" class="summary-letter"><b>S</b></a>
 
37912
 &nbsp; 
 
37913
</td></tr></table>
 
37914
<table border="0" class="index-at">
 
37915
<tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
 
37916
<tr><td colspan="3"> <hr></td></tr>
 
37917
<tr><th><a name="Attribute-Index-1_at_letter-A">A</a></th><td></td><td></td></tr>
 
37918
<tr><td></td><td valign="top"><a href="#index-autoclose">autoclose</a></td><td valign="top"><a href="#it_005fblocker">8.4.1 it_blocker</a></td></tr>
 
37919
<tr><td></td><td valign="top"><a href="#index-autoclose-1">autoclose</a></td><td valign="top"><a href="#st_005fblocker">9.5.4 st_blocker</a></td></tr>
 
37920
<tr><td colspan="3"> <hr></td></tr>
 
37921
<tr><th><a name="Attribute-Index-1_at_letter-O">O</a></th><td></td><td></td></tr>
 
37922
<tr><td></td><td valign="top"><a href="#index-orientation">orientation</a></td><td valign="top"><a href="#it_005fpuller">8.3.23 it_puller</a></td></tr>
 
37923
<tr><td></td><td valign="top"><a href="#index-orientation-1">orientation</a></td><td valign="top"><a href="#st_005fboulder">9.5.6 st_boulder</a></td></tr>
 
37924
<tr><td></td><td valign="top"><a href="#index-orientation-2">orientation</a></td><td valign="top"><a href="#st_005fturnstile">9.5.64 st_turnstile</a></td></tr>
 
37925
<tr><td></td><td valign="top"><a href="#index-orientation-3">orientation</a></td><td valign="top"><a href="#st_005fturnstilearm">9.5.65 st_turnstilearm</a></td></tr>
 
37926
<tr><td colspan="3"> <hr></td></tr>
 
37927
<tr><th><a name="Attribute-Index-1_at_letter-S">S</a></th><td></td><td></td></tr>
 
37928
<tr><td></td><td valign="top"><a href="#index-state">state</a></td><td valign="top"><a href="#st_005ffourswitch">9.5.24 st_fourswitch</a></td></tr>
 
37929
<tr><td colspan="3"> <hr></td></tr>
 
37930
</table>
 
37931
<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Attribute-Index-1_at_letter-A" class="summary-letter"><b>A</b></a>
 
37932
 &nbsp; 
 
37933
<a href="#Attribute-Index-1_at_letter-O" class="summary-letter"><b>O</b></a>
 
37934
 &nbsp; 
 
37935
<a href="#Attribute-Index-1_at_letter-S" class="summary-letter"><b>S</b></a>
 
37936
 &nbsp; 
 
37937
</td></tr></table>
 
37938
 
 
37939
<hr size="6">
 
37940
<a name="Message-Index"></a>
 
37941
<table cellpadding="1" cellspacing="1" border="0">
 
37942
<tr><td valign="middle" align="left">[<a href="#Attribute-Index" title="Previous section in reading order"> &lt; </a>]</td>
 
37943
<td valign="middle" align="left">[<a href="#Function-Index" title="Next section in reading order"> &gt; </a>]</td>
 
37944
<td valign="middle" align="left"> &nbsp; </td>
 
37945
<td valign="middle" align="left">[<a href="#Attribute-Index" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
37946
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
37947
<td valign="middle" align="left">[<a href="#Function-Index" title="Next chapter"> &gt;&gt; </a>]</td>
 
37948
<td valign="middle" align="left"> &nbsp; </td>
 
37949
<td valign="middle" align="left"> &nbsp; </td>
 
37950
<td valign="middle" align="left"> &nbsp; </td>
 
37951
<td valign="middle" align="left"> &nbsp; </td>
 
37952
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
37953
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
37954
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37955
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37956
</tr></table>
 
37957
<a name="Message-Index-1"></a>
 
37958
<h1 class="unnumbered">Message Index</h1>
 
37959
 
 
37960
<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Message-Index-1_ms_letter-O" class="summary-letter"><b>O</b></a>
 
37961
 &nbsp; 
 
37962
</td></tr></table>
 
37963
<table border="0" class="index-ms">
 
37964
<tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
 
37965
<tr><td colspan="3"> <hr></td></tr>
 
37966
<tr><th><a name="Message-Index-1_ms_letter-O">O</a></th><td></td><td></td></tr>
 
37967
<tr><td></td><td valign="top"><a href="#index-orientate">orientate</a></td><td valign="top"><a href="#st_005fboulder">9.5.6 st_boulder</a></td></tr>
 
37968
<tr><td></td><td valign="top"><a href="#index-orientate-1">orientate</a></td><td valign="top"><a href="#st_005fmirror">9.5.39 st_mirror</a></td></tr>
 
37969
<tr><td></td><td valign="top"><a href="#index-orientate-2">orientate</a></td><td valign="top"><a href="#st_005fturnstilearm">9.5.65 st_turnstilearm</a></td></tr>
 
37970
<tr><td colspan="3"> <hr></td></tr>
 
37971
</table>
 
37972
<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Message-Index-1_ms_letter-O" class="summary-letter"><b>O</b></a>
 
37973
 &nbsp; 
 
37974
</td></tr></table>
 
37975
 
 
37976
<hr size="6">
 
37977
<a name="Function-Index"></a>
 
37978
<table cellpadding="1" cellspacing="1" border="0">
 
37979
<tr><td valign="middle" align="left">[<a href="#Message-Index" title="Previous section in reading order"> &lt; </a>]</td>
 
37980
<td valign="middle" align="left">[<a href="#Concept-Index" title="Next section in reading order"> &gt; </a>]</td>
 
37981
<td valign="middle" align="left"> &nbsp; </td>
 
37982
<td valign="middle" align="left">[<a href="#Message-Index" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
37983
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
37984
<td valign="middle" align="left">[<a href="#Concept-Index" title="Next chapter"> &gt;&gt; </a>]</td>
 
37985
<td valign="middle" align="left"> &nbsp; </td>
 
37986
<td valign="middle" align="left"> &nbsp; </td>
 
37987
<td valign="middle" align="left"> &nbsp; </td>
 
37988
<td valign="middle" align="left"> &nbsp; </td>
 
37989
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
37990
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
37991
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
37992
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
37993
</tr></table>
 
37994
<a name="Function-Index-1"></a>
 
37995
<h1 class="unnumbered">Function Index</h1>
 
37996
 
 
37997
 
 
37998
 
 
37999
 
 
38000
<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Function-Index-1_tp_letter-A" class="summary-letter"><b>A</b></a>
 
38001
 &nbsp; 
 
38002
<a href="#Function-Index-1_tp_letter-C" class="summary-letter"><b>C</b></a>
 
38003
 &nbsp; 
 
38004
<a href="#Function-Index-1_tp_letter-E" class="summary-letter"><b>E</b></a>
 
38005
 &nbsp; 
 
38006
<a href="#Function-Index-1_tp_letter-F" class="summary-letter"><b>F</b></a>
 
38007
 &nbsp; 
 
38008
<a href="#Function-Index-1_tp_letter-G" class="summary-letter"><b>G</b></a>
 
38009
 &nbsp; 
 
38010
<a href="#Function-Index-1_tp_letter-I" class="summary-letter"><b>I</b></a>
 
38011
 &nbsp; 
 
38012
<a href="#Function-Index-1_tp_letter-L" class="summary-letter"><b>L</b></a>
 
38013
 &nbsp; 
 
38014
<a href="#Function-Index-1_tp_letter-R" class="summary-letter"><b>R</b></a>
 
38015
 &nbsp; 
 
38016
<a href="#Function-Index-1_tp_letter-S" class="summary-letter"><b>S</b></a>
 
38017
 &nbsp; 
 
38018
<a href="#Function-Index-1_tp_letter-U" class="summary-letter"><b>U</b></a>
 
38019
 &nbsp; 
 
38020
</td></tr></table>
 
38021
<table border="0" class="index-tp">
 
38022
<tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
 
38023
<tr><td colspan="3"> <hr></td></tr>
 
38024
<tr><th><a name="Function-Index-1_tp_letter-A">A</a></th><td></td><td></td></tr>
 
38025
<tr><td></td><td valign="top"><a href="#index-assert_005fbool"><code>assert_bool</code></a></td><td valign="top"><a href="#assert_005fbool">5.14.1 assert_bool</a></td></tr>
 
38026
<tr><td></td><td valign="top"><a href="#index-assert_005ftype"><code>assert_type</code></a></td><td valign="top"><a href="#assert_005ftype">5.14.2 assert_type</a></td></tr>
 
38027
<tr><td colspan="3"> <hr></td></tr>
 
38028
<tr><th><a name="Function-Index-1_tp_letter-C">C</a></th><td></td><td></td></tr>
 
38029
<tr><td></td><td valign="top"><a href="#index-Callback-Function"><code>Callback Function</code></a></td><td valign="top"><a href="#Callback-Function">4.3.3 Callback Function</a></td></tr>
 
38030
<tr><td></td><td valign="top"><a href="#index-custom-resolver"><code>custom resolver</code></a></td><td valign="top"><a href="#Custom-Resolver">13.1.2 Custom Resolver</a></td></tr>
 
38031
<tr><td colspan="3"> <hr></td></tr>
 
38032
<tr><th><a name="Function-Index-1_tp_letter-E">E</a></th><td></td><td></td></tr>
 
38033
<tr><td></td><td valign="top"><a href="#index-etype"><code>etype</code></a></td><td valign="top"><a href="#etype">5.14.4 etype</a></td></tr>
 
38034
<tr><td colspan="3"> <hr></td></tr>
 
38035
<tr><th><a name="Function-Index-1_tp_letter-F">F</a></th><td></td><td></td></tr>
 
38036
<tr><td></td><td valign="top"><a href="#index-fl"><code>fl</code></a></td><td valign="top"><a href="#fl">5.14.5 fl</a></td></tr>
 
38037
<tr><td colspan="3"> <hr></td></tr>
 
38038
<tr><th><a name="Function-Index-1_tp_letter-G">G</a></th><td></td><td></td></tr>
 
38039
<tr><td></td><td valign="top"><a href="#index-grp"><code>grp</code></a></td><td valign="top"><a href="#grp">5.14.6 grp</a></td></tr>
 
38040
<tr><td colspan="3"> <hr></td></tr>
 
38041
<tr><th><a name="Function-Index-1_tp_letter-I">I</a></th><td></td><td></td></tr>
 
38042
<tr><td></td><td valign="top"><a href="#index-it"><code>it</code></a></td><td valign="top"><a href="#it">5.14.7 it</a></td></tr>
 
38043
<tr><td colspan="3"> <hr></td></tr>
 
38044
<tr><th><a name="Function-Index-1_tp_letter-L">L</a></th><td></td><td></td></tr>
 
38045
<tr><td></td><td valign="top"><a href="#index-lib_002eimport"><code>lib.import</code></a></td><td valign="top"><a href="#libimport">12.5 libimport</a></td></tr>
 
38046
<tr><td></td><td valign="top"><a href="#index-lib_002eimport_002elevel_005fto_005fmap"><code>lib.import.level_to_map</code></a></td><td valign="top"><a href="#lib_002eimport_002elevel_005fto_005fmap">12.5.3 lib.import.level_to_map</a></td></tr>
 
38047
<tr><td></td><td valign="top"><a href="#index-lib_002eimport_002emap_005fsokoban"><code>lib.import.map_sokoban</code></a></td><td valign="top"><a href="#lib_002eimport_002emap_005fsokoban">12.5.4 lib.import.map_sokoban</a></td></tr>
 
38048
<tr><td></td><td valign="top"><a href="#index-lib_002eimport_002emap_005fwanderer"><code>lib.import.map_wanderer</code></a></td><td valign="top"><a href="#lib_002eimport_002emap_005fwanderer">12.5.5 lib.import.map_wanderer</a></td></tr>
 
38049
<tr><td></td><td valign="top"><a href="#index-lib_002eimport_002euncompress_005frle"><code>lib.import.uncompress_rle</code></a></td><td valign="top"><a href="#lib_002eimport_002euncompress_005frle">12.5.2 lib.import.uncompress_rle</a></td></tr>
 
38050
<tr><td></td><td valign="top"><a href="#index-lib_002eimport_002eunpack_005fmultilevel"><code>lib.import.unpack_multilevel</code></a></td><td valign="top"><a href="#lib_002eimport_002eunpack_005fmultilevel">12.5.1 lib.import.unpack_multilevel</a></td></tr>
 
38051
<tr><td></td><td valign="top"><a href="#index-lib_002elua_002ecombine_005ftables"><code>lib.lua.combine_tables</code></a></td><td valign="top"><a href="#lib_002elua_002ecombine_005ftables">12.2.1 lib.lua.combine_tables</a></td></tr>
 
38052
<tr><td></td><td valign="top"><a href="#index-lib_002elua_002edeep_005fcopy"><code>lib.lua.deep_copy</code></a></td><td valign="top"><a href="#lib_002elua_002edeep_005fcopy">12.2.2 lib.lua.deep_copy</a></td></tr>
 
38053
<tr><td></td><td valign="top"><a href="#index-lib_002elua_002emod"><code>lib.lua.mod</code></a></td><td valign="top"><a href="#lib_002elua_002emod">12.2.3 lib.lua.mod</a></td></tr>
 
38054
<tr><td></td><td valign="top"><a href="#index-lib_002elua_002eprint_005ftable"><code>lib.lua.print_table</code></a></td><td valign="top"><a href="#lib_002elua_002eprint_005ftable">12.2.4 lib.lua.print_table</a></td></tr>
 
38055
<tr><td></td><td valign="top"><a href="#index-lib_002elua_002eshuffle"><code>lib.lua.shuffle</code></a></td><td valign="top"><a href="#lib_002elua_002eshuffle">12.2.5 lib.lua.shuffle</a></td></tr>
 
38056
<tr><td></td><td valign="top"><a href="#index-lib_002elua_002eto_005fstring"><code>lib.lua.to_string</code></a></td><td valign="top"><a href="#lib_002elua_002eto_005fstring">12.2.6 lib.lua.to_string</a></td></tr>
 
38057
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002econcat_005fhorizontally"><code>lib.map.concat_horizontally</code></a></td><td valign="top"><a href="#Map-Horizontal-Concatenation">12.4.10 Map Horizontal Concatenation</a></td></tr>
 
38058
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002econcat_005fvertically"><code>lib.map.concat_vertically</code></a></td><td valign="top"><a href="#Map-Vertical-Concatenation">12.4.11 Map Vertical Concatenation</a></td></tr>
 
38059
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002ecovers"><code>lib.map.covers</code></a></td><td valign="top"><a href="#lib_002emap_002ecovers">12.4.15 lib.map.covers</a></td></tr>
 
38060
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002edefuse"><code>lib.map.defuse</code></a></td><td valign="top"><a href="#lib_002emap_002edefuse">12.4.16 lib.map.defuse</a></td></tr>
 
38061
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002eextend"><code>lib.map.extend</code></a></td><td valign="top"><a href="#lib_002emap_002eextend">12.4.17 lib.map.extend</a></td></tr>
 
38062
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002efuse"><code>lib.map.fuse</code></a></td><td valign="top"><a href="#Map-Fusing">12.4.12 Map Fusing</a></td></tr>
 
38063
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002eget"><code>lib.map.get</code></a></td><td valign="top"><a href="#Map-Entry-Request">12.4.8 Map Entry Request</a></td></tr>
 
38064
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002ematch"><code>lib.map.match</code></a></td><td valign="top"><a href="#lib_002emap_002ematch">12.4.18 lib.map.match</a></td></tr>
 
38065
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002enewMap"><code>lib.map.newMap</code></a></td><td valign="top"><a href="#newMap">12.4.7 newMap</a></td></tr>
 
38066
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002epaste"><code>lib.map.paste</code></a></td><td valign="top"><a href="#lib_002emap_002epaste">12.4.19 lib.map.paste</a></td></tr>
 
38067
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002eprint"><code>lib.map.print</code></a></td><td valign="top"><a href="#lib_002emap_002eprint">12.4.20 lib.map.print</a></td></tr>
 
38068
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002erandom_005ftransformation"><code>lib.map.random_transformation</code></a></td><td valign="top"><a href="#Random-Map-Transformations">12.4.28 Random Map Transformations</a></td></tr>
 
38069
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002ereplace"><code>lib.map.replace</code></a></td><td valign="top"><a href="#lib_002emap_002ereplace">12.4.21 lib.map.replace</a></td></tr>
 
38070
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002ereplace_005foutside"><code>lib.map.replace_outside</code></a></td><td valign="top"><a href="#lib_002emap_002ereplace_005foutside">12.4.22 lib.map.replace_outside</a></td></tr>
 
38071
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002eset"><code>lib.map.set</code></a></td><td valign="top"><a href="#Map-Entry-Request">12.4.8 Map Entry Request</a></td></tr>
 
38072
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002eset_005fdefault_005fkey"><code>lib.map.set_default_key</code></a></td><td valign="top"><a href="#Map-Default-Keys">12.4.13 Map Default Keys</a></td></tr>
 
38073
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002esub"><code>lib.map.sub</code></a></td><td valign="top"><a href="#lib_002emap_002esub">12.4.23 lib.map.sub</a></td></tr>
 
38074
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002etransform"><code>lib.map.transform</code></a></td><td valign="top"><a href="#Map-Transformation">12.4.9 Map Transformation</a></td></tr>
 
38075
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002etransformation_005fcompose"><code>lib.map.transformation_compose</code></a></td><td valign="top"><a href="#Map-Transformation-Composition-and-Powers">12.4.26 Map Transformation Composition and Powers</a></td></tr>
 
38076
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002etransformation_005fpower"><code>lib.map.transformation_power</code></a></td><td valign="top"><a href="#Map-Transformation-Composition-and-Powers">12.4.26 Map Transformation Composition and Powers</a></td></tr>
 
38077
<tr><td></td><td valign="top"><a href="#index-lib_002emap_002etrim"><code>lib.map.trim</code></a></td><td valign="top"><a href="#lib_002emap_002etrim">12.4.24 lib.map.trim</a></td></tr>
 
38078
<tr><td></td><td valign="top"><a href="#index-lib_002emath_002ecombinations"><code>lib.math.combinations</code></a></td><td valign="top"><a href="#lib_002emath_002ecombinations">12.3.1 lib.math.combinations</a></td></tr>
 
38079
<tr><td></td><td valign="top"><a href="#index-lib_002emath_002ecubic_005fpolynomial"><code>lib.math.cubic_polynomial</code></a></td><td valign="top"><a href="#lib_002emath_002ecubic_005fpolynomial">12.3.2 lib.math.cubic_polynomial</a></td></tr>
 
38080
<tr><td></td><td valign="top"><a href="#index-lib_002emath_002ecyclic_005fpermutation"><code>lib.math.cyclic_permutation</code></a></td><td valign="top"><a href="#lib_002emath_002ecyclic_005fpermutation">12.3.3 lib.math.cyclic_permutation</a></td></tr>
 
38081
<tr><td></td><td valign="top"><a href="#index-lib_002emath_002edigits"><code>lib.math.digits</code></a></td><td valign="top"><a href="#lib_002emath_002edigits">12.3.4 lib.math.digits</a></td></tr>
 
38082
<tr><td></td><td valign="top"><a href="#index-lib_002emath_002emanhattan_005fdistance"><code>lib.math.manhattan_distance</code></a></td><td valign="top"><a href="#lib_002emath_002emanhattan_005fdistance">12.3.5 lib.math.manhattan_distance</a></td></tr>
 
38083
<tr><td></td><td valign="top"><a href="#index-lib_002emath_002emark_005fcomponents"><code>lib.math.mark_components</code></a></td><td valign="top"><a href="#lib_002emath_002emark_005fcomponents">12.3.6 lib.math.mark_components</a></td></tr>
 
38084
<tr><td></td><td valign="top"><a href="#index-lib_002emath_002epermutation"><code>lib.math.permutation</code></a></td><td valign="top"><a href="#lib_002emath_002epermutation">12.3.7 lib.math.permutation</a></td></tr>
 
38085
<tr><td></td><td valign="top"><a href="#index-lib_002emath_002erandom_005fvector"><code>lib.math.random_vector</code></a></td><td valign="top"><a href="#lib_002emath_002erandom_005fvector">12.3.8 lib.math.random_vector</a></td></tr>
 
38086
<tr><td></td><td valign="top"><a href="#index-lib_002emath_002esteps"><code>lib.math.steps</code></a></td><td valign="top"><a href="#lib_002emath_002esteps">12.3.9 lib.math.steps</a></td></tr>
 
38087
<tr><td></td><td valign="top"><a href="#index-lib_002emaze_002erenderer_005fstandard"><code>lib.maze.renderer_standard</code></a></td><td valign="top"><a href="#res_002emaze">13.1.5 res.maze</a></td></tr>
 
38088
<tr><td></td><td valign="top"><a href="#index-lib_002emaze_002erenderer_005fstrip"><code>lib.maze.renderer_strip</code></a></td><td valign="top"><a href="#res_002emaze">13.1.5 res.maze</a></td></tr>
 
38089
<tr><td></td><td valign="top"><a href="#index-lib_002emaze_002erenderer_005fwindow"><code>lib.maze.renderer_window</code></a></td><td valign="top"><a href="#res_002emaze">13.1.5 res.maze</a></td></tr>
 
38090
<tr><td></td><td valign="top"><a href="#index-lib_002esoko_002ecreate_005fsokoball"><code>lib.soko.create_sokoball</code></a></td><td valign="top"><a href="#libsoko">12.6 libsoko</a></td></tr>
 
38091
<tr><td colspan="3"> <hr></td></tr>
 
38092
<tr><th><a name="Function-Index-1_tp_letter-R">R</a></th><td></td><td></td></tr>
 
38093
<tr><td></td><td valign="top"><a href="#index-random"><code>random</code></a></td><td valign="top"><a href="#random">5.14.9 random</a></td></tr>
 
38094
<tr><td></td><td valign="top"><a href="#index-res_002eautotile"><code>res.autotile</code></a></td><td valign="top"><a href="#res_002eautotile">13.1.3 res.autotile</a></td></tr>
 
38095
<tr><td></td><td valign="top"><a href="#index-res_002ecomposer"><code>res.composer</code></a></td><td valign="top"><a href="#res_002ecomposer">13.1.4 res.composer</a></td></tr>
 
38096
<tr><td></td><td valign="top"><a href="#index-res_002ecomposer_005fimplementation"><code>res.composer_implementation</code></a></td><td valign="top"><a href="#Resolver-Implementation">14.1.2 Resolver Implementation</a></td></tr>
 
38097
<tr><td></td><td valign="top"><a href="#index-res_002emaze"><code>res.maze</code></a></td><td valign="top"><a href="#res_002emaze">13.1.5 res.maze</a></td></tr>
 
38098
<tr><td></td><td valign="top"><a href="#index-res_002epuzzle"><code>res.puzzle</code></a></td><td valign="top"><a href="#res_002epuzzle">13.1.6 res.puzzle</a></td></tr>
 
38099
<tr><td></td><td valign="top"><a href="#index-res_002erandom"><code>res.random</code></a></td><td valign="top"><a href="#res_002erandom">13.1.7 res.random</a></td></tr>
 
38100
<tr><td></td><td valign="top"><a href="#index-res_002eresolvername"><code>res.resolvername</code></a></td><td valign="top"><a href="#Resolver-Configurator">14.1.1 Resolver Configurator</a></td></tr>
 
38101
<tr><td></td><td valign="top"><a href="#index-res_002eresolver_005ffinalization"><code>res.resolver_finalization</code></a></td><td valign="top"><a href="#Resolver-Finalizer">14.1.3 Resolver Finalizer</a></td></tr>
 
38102
<tr><td></td><td valign="top"><a href="#index-res_002etrain"><code>res.train</code></a></td><td valign="top"><a href="#res_002etrain">13.1.8 res.train</a></td></tr>
 
38103
<tr><td colspan="3"> <hr></td></tr>
 
38104
<tr><th><a name="Function-Index-1_tp_letter-S">S</a></th><td></td><td></td></tr>
 
38105
<tr><td></td><td valign="top"><a href="#index-st"><code>st</code></a></td><td valign="top"><a href="#st">5.14.10 st</a></td></tr>
 
38106
<tr><td colspan="3"> <hr></td></tr>
 
38107
<tr><th><a name="Function-Index-1_tp_letter-U">U</a></th><td></td><td></td></tr>
 
38108
<tr><td></td><td valign="top"><a href="#index-usertype"><code>usertype</code></a></td><td valign="top"><a href="#usertype">5.14.11 usertype</a></td></tr>
 
38109
<tr><td colspan="3"> <hr></td></tr>
 
38110
</table>
 
38111
<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Function-Index-1_tp_letter-A" class="summary-letter"><b>A</b></a>
 
38112
 &nbsp; 
 
38113
<a href="#Function-Index-1_tp_letter-C" class="summary-letter"><b>C</b></a>
 
38114
 &nbsp; 
 
38115
<a href="#Function-Index-1_tp_letter-E" class="summary-letter"><b>E</b></a>
 
38116
 &nbsp; 
 
38117
<a href="#Function-Index-1_tp_letter-F" class="summary-letter"><b>F</b></a>
 
38118
 &nbsp; 
 
38119
<a href="#Function-Index-1_tp_letter-G" class="summary-letter"><b>G</b></a>
 
38120
 &nbsp; 
 
38121
<a href="#Function-Index-1_tp_letter-I" class="summary-letter"><b>I</b></a>
 
38122
 &nbsp; 
 
38123
<a href="#Function-Index-1_tp_letter-L" class="summary-letter"><b>L</b></a>
 
38124
 &nbsp; 
 
38125
<a href="#Function-Index-1_tp_letter-R" class="summary-letter"><b>R</b></a>
 
38126
 &nbsp; 
 
38127
<a href="#Function-Index-1_tp_letter-S" class="summary-letter"><b>S</b></a>
 
38128
 &nbsp; 
 
38129
<a href="#Function-Index-1_tp_letter-U" class="summary-letter"><b>U</b></a>
 
38130
 &nbsp; 
 
38131
</td></tr></table>
 
38132
 
 
38133
<hr size="6">
 
38134
<a name="Concept-Index"></a>
 
38135
<table cellpadding="1" cellspacing="1" border="0">
 
38136
<tr><td valign="middle" align="left">[<a href="#Function-Index" title="Previous section in reading order"> &lt; </a>]</td>
 
38137
<td valign="middle" align="left">[<a href="#Renaming-Index" title="Next section in reading order"> &gt; </a>]</td>
 
38138
<td valign="middle" align="left"> &nbsp; </td>
 
38139
<td valign="middle" align="left">[<a href="#Function-Index" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
38140
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
38141
<td valign="middle" align="left">[<a href="#Renaming-Index" title="Next chapter"> &gt;&gt; </a>]</td>
 
38142
<td valign="middle" align="left"> &nbsp; </td>
 
38143
<td valign="middle" align="left"> &nbsp; </td>
 
38144
<td valign="middle" align="left"> &nbsp; </td>
 
38145
<td valign="middle" align="left"> &nbsp; </td>
 
38146
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
38147
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
38148
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
38149
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
38150
</tr></table>
 
38151
<a name="Concept-Index-1"></a>
 
38152
<h1 class="unnumbered">Concept Index</h1>
 
38153
 
 
38154
<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Concept-Index-1_cp_letter-A" class="summary-letter"><b>A</b></a>
 
38155
 &nbsp; 
 
38156
<a href="#Concept-Index-1_cp_letter-C" class="summary-letter"><b>C</b></a>
 
38157
 &nbsp; 
 
38158
<a href="#Concept-Index-1_cp_letter-D" class="summary-letter"><b>D</b></a>
 
38159
 &nbsp; 
 
38160
<a href="#Concept-Index-1_cp_letter-F" class="summary-letter"><b>F</b></a>
 
38161
 &nbsp; 
 
38162
<a href="#Concept-Index-1_cp_letter-G" class="summary-letter"><b>G</b></a>
 
38163
 &nbsp; 
 
38164
<a href="#Concept-Index-1_cp_letter-I" class="summary-letter"><b>I</b></a>
 
38165
 &nbsp; 
 
38166
<a href="#Concept-Index-1_cp_letter-L" class="summary-letter"><b>L</b></a>
 
38167
 &nbsp; 
 
38168
<a href="#Concept-Index-1_cp_letter-N" class="summary-letter"><b>N</b></a>
 
38169
 &nbsp; 
 
38170
<a href="#Concept-Index-1_cp_letter-O" class="summary-letter"><b>O</b></a>
 
38171
 &nbsp; 
 
38172
<a href="#Concept-Index-1_cp_letter-P" class="summary-letter"><b>P</b></a>
 
38173
 &nbsp; 
 
38174
<a href="#Concept-Index-1_cp_letter-R" class="summary-letter"><b>R</b></a>
 
38175
 &nbsp; 
 
38176
<a href="#Concept-Index-1_cp_letter-S" class="summary-letter"><b>S</b></a>
 
38177
 &nbsp; 
 
38178
<a href="#Concept-Index-1_cp_letter-T" class="summary-letter"><b>T</b></a>
 
38179
 &nbsp; 
 
38180
<a href="#Concept-Index-1_cp_letter-U" class="summary-letter"><b>U</b></a>
 
38181
 &nbsp; 
 
38182
</td></tr></table>
 
38183
<table border="0" class="index-cp">
 
38184
<tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
 
38185
<tr><td colspan="3"> <hr></td></tr>
 
38186
<tr><th><a name="Concept-Index-1_cp_letter-A">A</a></th><td></td><td></td></tr>
 
38187
<tr><td></td><td valign="top"><a href="#index-abstract-kind">abstract kind</a></td><td valign="top"><a href="#Object-Kind">4.2.1 Object Kind</a></td></tr>
 
38188
<tr><td></td><td valign="top"><a href="#index-auto-naming">auto naming</a></td><td valign="top"><a href="#Object-Naming">4.2.3 Object Naming</a></td></tr>
 
38189
<tr><td colspan="3"> <hr></td></tr>
 
38190
<tr><th><a name="Concept-Index-1_cp_letter-C">C</a></th><td></td><td></td></tr>
 
38191
<tr><td></td><td valign="top"><a href="#index-callback-function">callback function</a></td><td valign="top"><a href="#Callback-Function">4.3.3 Callback Function</a></td></tr>
 
38192
<tr><td></td><td valign="top"><a href="#index-crossindex">crossindex</a></td><td valign="top"><a href="#Levelpack-Basics">2. Levelpack Basics</a></td></tr>
 
38193
<tr><td></td><td valign="top"><a href="#index-crossreference">crossreference</a></td><td valign="top"><a href="#Levelpack-Basics">2. Levelpack Basics</a></td></tr>
 
38194
<tr><td colspan="3"> <hr></td></tr>
 
38195
<tr><th><a name="Concept-Index-1_cp_letter-D">D</a></th><td></td><td></td></tr>
 
38196
<tr><td></td><td valign="top"><a href="#index-default-floor">default floor</a></td><td valign="top"><a href="#Object-Layers">4.1.2 Object Layers</a></td></tr>
 
38197
<tr><td colspan="3"> <hr></td></tr>
 
38198
<tr><th><a name="Concept-Index-1_cp_letter-F">F</a></th><td></td><td></td></tr>
 
38199
<tr><td></td><td valign="top"><a href="#index-flood">flood</a></td><td valign="top"><a href="#Flood-Spreading">13.2.2 Flood Spreading</a></td></tr>
 
38200
<tr><td colspan="3"> <hr></td></tr>
 
38201
<tr><th><a name="Concept-Index-1_cp_letter-G">G</a></th><td></td><td></td></tr>
 
38202
<tr><td></td><td valign="top"><a href="#index-grid-position">grid position</a></td><td valign="top"><a href="#World_0027s-Shape-and-Coordinates">4.1.1 World&rsquo;s Shape and Coordinates</a></td></tr>
 
38203
<tr><td colspan="3"> <hr></td></tr>
 
38204
<tr><th><a name="Concept-Index-1_cp_letter-I">I</a></th><td></td><td></td></tr>
 
38205
<tr><td></td><td valign="top"><a href="#index-index">index</a></td><td valign="top"><a href="#Levelpack-Basics">2. Levelpack Basics</a></td></tr>
 
38206
<tr><td colspan="3"> <hr></td></tr>
 
38207
<tr><th><a name="Concept-Index-1_cp_letter-L">L</a></th><td></td><td></td></tr>
 
38208
<tr><td></td><td valign="top"><a href="#index-l10n-path">l10n path</a></td><td valign="top"><a href="#Locating-Resources">1.1 Locating Resources</a></td></tr>
 
38209
<tr><td></td><td valign="top"><a href="#index-layer">layer</a></td><td valign="top"><a href="#Object-Layers">4.1.2 Object Layers</a></td></tr>
 
38210
<tr><td></td><td valign="top"><a href="#index-levelinspector">levelinspector</a></td><td valign="top"><a href="#Level-Info">1.5 Level Info</a></td></tr>
 
38211
<tr><td></td><td valign="top"><a href="#index-levelpack">levelpack</a></td><td valign="top"><a href="#Levelpack-Basics">2. Levelpack Basics</a></td></tr>
 
38212
<tr><td></td><td valign="top"><a href="#index-localization-path">localization path</a></td><td valign="top"><a href="#Locating-Resources">1.1 Locating Resources</a></td></tr>
 
38213
<tr><td colspan="3"> <hr></td></tr>
 
38214
<tr><th><a name="Concept-Index-1_cp_letter-N">N</a></th><td></td><td></td></tr>
 
38215
<tr><td></td><td valign="top"><a href="#index-nearest-object">nearest object</a></td><td valign="top"><a href="#Object-Naming">4.2.3 Object Naming</a></td></tr>
 
38216
<tr><td colspan="3"> <hr></td></tr>
 
38217
<tr><th><a name="Concept-Index-1_cp_letter-O">O</a></th><td></td><td></td></tr>
 
38218
<tr><td></td><td valign="top"><a href="#index-onescreener">onescreener</a></td><td valign="top"><a href="#World_0027s-Shape-and-Coordinates">4.1.1 World&rsquo;s Shape and Coordinates</a></td></tr>
 
38219
<tr><td></td><td valign="top"><a href="#index-overloading">overloading</a></td><td valign="top"><a href="#Polymorphism-and-Overloading">5.4.3 Polymorphism and Overloading</a></td></tr>
 
38220
<tr><td colspan="3"> <hr></td></tr>
 
38221
<tr><th><a name="Concept-Index-1_cp_letter-P">P</a></th><td></td><td></td></tr>
 
38222
<tr><td></td><td valign="top"><a href="#index-polymorphism">polymorphism</a></td><td valign="top"><a href="#Polymorphism-and-Overloading">5.4.3 Polymorphism and Overloading</a></td></tr>
 
38223
<tr><td></td><td valign="top"><a href="#index-position">position</a></td><td valign="top"><a href="#World_0027s-Shape-and-Coordinates">4.1.1 World&rsquo;s Shape and Coordinates</a></td></tr>
 
38224
<tr><td></td><td valign="top"><a href="#index-preferences-path">preferences path</a></td><td valign="top"><a href="#Locating-Resources">1.1 Locating Resources</a></td></tr>
 
38225
<tr><td colspan="3"> <hr></td></tr>
 
38226
<tr><th><a name="Concept-Index-1_cp_letter-R">R</a></th><td></td><td></td></tr>
 
38227
<tr><td></td><td valign="top"><a href="#index-resource-paths">resource paths</a></td><td valign="top"><a href="#Locating-Resources">1.1 Locating Resources</a></td></tr>
 
38228
<tr><td colspan="3"> <hr></td></tr>
 
38229
<tr><th><a name="Concept-Index-1_cp_letter-S">S</a></th><td></td><td></td></tr>
 
38230
<tr><td></td><td valign="top"><a href="#index-system-path">system path</a></td><td valign="top"><a href="#Locating-Resources">1.1 Locating Resources</a></td></tr>
 
38231
<tr><td colspan="3"> <hr></td></tr>
 
38232
<tr><th><a name="Concept-Index-1_cp_letter-T">T</a></th><td></td><td></td></tr>
 
38233
<tr><td></td><td valign="top"><a href="#index-target-action-paradigm">target action paradigm</a></td><td valign="top"><a href="#Target-_002d-Action">4.3.2 Target - Action</a></td></tr>
 
38234
<tr><td></td><td valign="top"><a href="#index-tile">tile</a></td><td valign="top"><a href="#World_0027s-Shape-and-Coordinates">4.1.1 World&rsquo;s Shape and Coordinates</a></td></tr>
 
38235
<tr><td colspan="3"> <hr></td></tr>
 
38236
<tr><th><a name="Concept-Index-1_cp_letter-U">U</a></th><td></td><td></td></tr>
 
38237
<tr><td></td><td valign="top"><a href="#index-user-image-path">user image path</a></td><td valign="top"><a href="#Locating-Resources">1.1 Locating Resources</a></td></tr>
 
38238
<tr><td></td><td valign="top"><a href="#index-user-path">user path</a></td><td valign="top"><a href="#Locating-Resources">1.1 Locating Resources</a></td></tr>
 
38239
<tr><td colspan="3"> <hr></td></tr>
 
38240
</table>
 
38241
<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Concept-Index-1_cp_letter-A" class="summary-letter"><b>A</b></a>
 
38242
 &nbsp; 
 
38243
<a href="#Concept-Index-1_cp_letter-C" class="summary-letter"><b>C</b></a>
 
38244
 &nbsp; 
 
38245
<a href="#Concept-Index-1_cp_letter-D" class="summary-letter"><b>D</b></a>
 
38246
 &nbsp; 
 
38247
<a href="#Concept-Index-1_cp_letter-F" class="summary-letter"><b>F</b></a>
 
38248
 &nbsp; 
 
38249
<a href="#Concept-Index-1_cp_letter-G" class="summary-letter"><b>G</b></a>
 
38250
 &nbsp; 
 
38251
<a href="#Concept-Index-1_cp_letter-I" class="summary-letter"><b>I</b></a>
 
38252
 &nbsp; 
 
38253
<a href="#Concept-Index-1_cp_letter-L" class="summary-letter"><b>L</b></a>
 
38254
 &nbsp; 
 
38255
<a href="#Concept-Index-1_cp_letter-N" class="summary-letter"><b>N</b></a>
 
38256
 &nbsp; 
 
38257
<a href="#Concept-Index-1_cp_letter-O" class="summary-letter"><b>O</b></a>
 
38258
 &nbsp; 
 
38259
<a href="#Concept-Index-1_cp_letter-P" class="summary-letter"><b>P</b></a>
 
38260
 &nbsp; 
 
38261
<a href="#Concept-Index-1_cp_letter-R" class="summary-letter"><b>R</b></a>
 
38262
 &nbsp; 
 
38263
<a href="#Concept-Index-1_cp_letter-S" class="summary-letter"><b>S</b></a>
 
38264
 &nbsp; 
 
38265
<a href="#Concept-Index-1_cp_letter-T" class="summary-letter"><b>T</b></a>
 
38266
 &nbsp; 
 
38267
<a href="#Concept-Index-1_cp_letter-U" class="summary-letter"><b>U</b></a>
 
38268
 &nbsp; 
 
38269
</td></tr></table>
 
38270
 
 
38271
<hr size="6">
 
38272
<a name="Renaming-Index"></a>
 
38273
<table cellpadding="1" cellspacing="1" border="0">
 
38274
<tr><td valign="middle" align="left">[<a href="#Concept-Index" title="Previous section in reading order"> &lt; </a>]</td>
 
38275
<td valign="middle" align="left">[ &gt; ]</td>
 
38276
<td valign="middle" align="left"> &nbsp; </td>
 
38277
<td valign="middle" align="left">[<a href="#Concept-Index" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
38278
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
 
38279
<td valign="middle" align="left">[ &gt;&gt; ]</td>
 
38280
<td valign="middle" align="left"> &nbsp; </td>
 
38281
<td valign="middle" align="left"> &nbsp; </td>
 
38282
<td valign="middle" align="left"> &nbsp; </td>
 
38283
<td valign="middle" align="left"> &nbsp; </td>
 
38284
<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
38285
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
38286
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
38287
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
38288
</tr></table>
 
38289
<a name="Renaming-Index-1"></a>
 
38290
<h1 class="unnumbered">Renaming Index</h1>
 
38291
 
 
38292
<dl compact="compact">
 
38293
<dt> <b>ac-blackball</b> &rarr; <code>ac_marble_black</code>, see section <a href="#ac_005fmarble">ac_marble</a></dt>
 
38294
<dt> <b>ac-bug</b> &rarr; <a href="#ac_005fbug">ac_bug</a></dt>
 
38295
<dt> <b>ac-horse</b> &rarr; <a href="#ac_005fhorse">ac_horse</a></dt>
 
38296
<dt> <b>ac-killerball</b> &rarr; <a href="#ac_005fkiller">ac_killer</a></dt>
 
38297
<dt> <b>ac-rotor</b> &rarr; <a href="#ac_005frotor">ac_rotor</a></dt>
 
38298
<dt> <b>ac-top</b> &rarr; <a href="#ac_005ftop">ac_top</a></dt>
 
38299
<dt> <b>ac-whiteball</b> &rarr; <code>ac_marble_white</code>, see section <a href="#ac_005fmarble">ac_marble</a></dt>
 
38300
<dt> <b>ac-whiteball-small</b> &rarr; <code>ac_pearl_white, owner=DEFAULT</code>, see section <a href="#ac_005fpearl">ac_pearl</a></dt>
 
38301
<dt> <b>fl-abyss</b> &rarr; <a href="#fl_005fabyss">fl_abyss</a></dt>
 
38302
<dt> <b>fl-abyss_fake</b> &rarr; <code>fl_fake_abyss</code>, see section <a href="#fl_005ffake">fl_fake</a></dt>
 
38303
<dt> <b>fl-acblack</b> &rarr; <code>fl_yinyang_yin</code>, see section <a href="#fl_005fyinyang">fl_yinyang</a></dt>
 
38304
<dt> <b>fl-acwhite</b> &rarr; <code>fl_yinyang_yang</code>, see section <a href="#fl_005fyinyang">fl_yinyang</a></dt>
 
38305
<dt> <b>fl-black</b> &rarr; <a href="#fl_005fdark">fl_dark</a></dt>
 
38306
<dt> <b>fl-bluegray</b> &rarr; <a href="#fl_005fbluegray">fl_bluegray</a></dt>
 
38307
<dt> <b>fl-bluegreen</b> &rarr; <a href="#fl_005fbluegreen">fl_bluegreen</a></dt>
 
38308
<dt> <b>fl-bluegreenx</b> &rarr; <a href="#fl_005faquamarine">fl_aquamarine</a></dt>
 
38309
<dt> <b>fl-brick</b> &rarr; <a href="#fl_005fbrick">fl_brick</a></dt>
 
38310
<dt> <b>fl-bridge</b> &rarr; <a href="#fl_005fbridge">fl_bridge</a></dt>
 
38311
<dt> <b>fl-bridge-closed</b> &rarr; <code>fl_bridge, state=CLOSED</code>, see section <a href="#fl_005fbridge">fl_bridge</a></dt>
 
38312
<dt> <b>fl-bridge-open</b> &rarr; <a href="#fl_005fbridge">fl_bridge</a></dt>
 
38313
<dt> <b>fl-bumps</b> &rarr; <a href="#fl_005fpinkbumps">fl_pinkbumps</a></dt>
 
38314
<dt> <b>fl-concrete</b> &rarr; <a href="#fl_005fconcrete">fl_concrete</a></dt>
 
38315
<dt> <b>fl-darkgray</b> &rarr; <a href="#fl_005fdarkgray">fl_darkgray</a></dt>
 
38316
<dt> <b>fl-dunes</b> &rarr; <a href="#fl_005fdunes">fl_dunes</a></dt>
 
38317
<dt> <b>fl-floor_001</b> &rarr; <a href="#fl_005fbast">fl_bast</a></dt>
 
38318
<dt> <b>fl-gradient</b> &rarr; <code>fl_slope_ps</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38319
<dt> <b>fl-gradient1</b> &rarr; <code>fl_slope_ps</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38320
<dt> <b>fl-gradient2</b> &rarr; <code>fl_slope_pn</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38321
<dt> <b>fl-gradient3</b> &rarr; <code>fl_slope_pe</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38322
<dt> <b>fl-gradient4</b> &rarr; <code>fl_slope_pw</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38323
<dt> <b>fl-gradient5</b> &rarr; <code>fl_slope_ose</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38324
<dt> <b>fl-gradient6</b> &rarr; <code>fl_slope_osw</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38325
<dt> <b>fl-gradient7</b> &rarr; <code>fl_slope_one</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38326
<dt> <b>fl-gradient8</b> &rarr; <code>fl_slope_onw</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38327
<dt> <b>fl-gradient9</b> &rarr; <code>fl_slope_ise</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38328
<dt> <b>fl-gradient10</b> &rarr; <code>fl_slope_ine</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38329
<dt> <b>fl-gradient11</b> &rarr; <code>fl_slope_isw</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38330
<dt> <b>fl-gradient12</b> &rarr; <code>fl_slope_inw</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38331
<dt> <b>fl-gradient13</b> &rarr; <code>fl_slope_tn</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38332
<dt> <b>fl-gradient14</b> &rarr; <code>fl_slope_ts</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38333
<dt> <b>fl-gradient15</b> &rarr; <code>fl_slope_tw</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38334
<dt> <b>fl-gradient16</b> &rarr; <code>fl_slope_te</code>, see section <a href="#fl_005fslope">fl_slope</a></dt>
 
38335
<dt> <b>fl-gravel</b> &rarr; <a href="#fl_005fgravel">fl_gravel</a></dt>
 
38336
<dt> <b>fl-gray</b> &rarr; <a href="#fl_005fgray">fl_gray</a></dt>
 
38337
<dt> <b>fl-hay</b> &rarr; <a href="#fl_005fhay">fl_hay</a></dt>
 
38338
<dt> <b>fl-himalaya</b> &rarr; <a href="#fl_005fhimalaya">fl_himalaya</a></dt>
 
38339
<dt> <b>fl-ice</b> &rarr; <a href="#fl_005fice">fl_ice</a></dt>
 
38340
<dt> <b>fl-inverse</b> &rarr; <code>fl_inverse_white</code>, see section <a href="#fl_005finverse">fl_inverse</a></dt>
 
38341
<dt> <b>fl-inverse2</b> &rarr; <code>fl_inverse_gray</code>, see section <a href="#fl_005finverse">fl_inverse</a></dt>
 
38342
<dt> <b>fl-leaves</b> &rarr; <code>fl_lawn_a</code>, see section <a href="#fl_005flawn">fl_lawn</a></dt>
 
38343
<dt> <b>fl-leavesb</b> &rarr; <code>fl_lawn_b</code>, see section <a href="#fl_005flawn">fl_lawn</a></dt>
 
38344
<dt> <b>fl-leavesc1</b> &rarr; <code>fl_lawn_c1</code>, see section <a href="#fl_005flawn">fl_lawn</a></dt>
 
38345
<dt> <b>fl-leavesc2</b> &rarr; <code>fl_lawn_c2</code>, see section <a href="#fl_005flawn">fl_lawn</a></dt>
 
38346
<dt> <b>fl-leavesc3</b> &rarr; <code>fl_lawn_c3</code>, see section <a href="#fl_005flawn">fl_lawn</a></dt>
 
38347
<dt> <b>fl-leavesc4</b> &rarr; <code>fl_lawn_c4</code>, see section <a href="#fl_005flawn">fl_lawn</a></dt>
 
38348
<dt> <b>fl-leavesd1</b> &rarr; <code>fl_lawn_d1</code>, see section <a href="#fl_005flawn">fl_lawn</a></dt>
 
38349
<dt> <b>fl-leavesd2</b> &rarr; <code>fl_lawn_d2</code>, see section <a href="#fl_005flawn">fl_lawn</a></dt>
 
38350
<dt> <b>fl-leavesd3</b> &rarr; <code>fl_lawn_d3</code>, see section <a href="#fl_005flawn">fl_lawn</a></dt>
 
38351
<dt> <b>fl-leavesd4</b> &rarr; <code>fl_lawn_d4</code>, see section <a href="#fl_005flawn">fl_lawn</a></dt>
 
38352
<dt> <b>fl-leavese1</b> &rarr; <code>fl_lawn_e1</code>, see section <a href="#fl_005flawn">fl_lawn</a></dt>
 
38353
<dt> <b>fl-leavese2</b> &rarr; <code>fl_lawn_e2</code>, see section <a href="#fl_005flawn">fl_lawn</a></dt>
 
38354
<dt> <b>fl-leavese3</b> &rarr; <code>fl_lawn_e3</code>, see section <a href="#fl_005flawn">fl_lawn</a></dt>
 
38355
<dt> <b>fl-leavese4</b> &rarr; <code>fl_lawn_e4</code>, see section <a href="#fl_005flawn">fl_lawn</a></dt>
 
38356
<dt> <b>fl-light</b> &rarr; <a href="#fl_005fivory">fl_ivory</a></dt>
 
38357
<dt> <b>fl-lightgray</b> &rarr; <a href="#fl_005fplatinum">fl_platinum</a></dt>
 
38358
<dt> <b>fl-marble</b> &rarr; <a href="#fl_005fmarble">fl_marble</a></dt>
 
38359
<dt> <b>fl-metal</b> &rarr; <a href="#fl_005fmetal">fl_metal</a></dt>
 
38360
<dt> <b>fl-metal1</b> &rarr; <code>fl_metal_1</code>, see section <a href="#fl_005fmetal">fl_metal</a></dt>
 
38361
<dt> <b>fl-metal2</b> &rarr; <code>fl_metal_2</code>, see section <a href="#fl_005fmetal">fl_metal</a></dt>
 
38362
<dt> <b>fl-metal3</b> &rarr; <code>fl_metal_3</code>, see section <a href="#fl_005fmetal">fl_metal</a></dt>
 
38363
<dt> <b>fl-metal4</b> &rarr; <code>fl_metal_4</code>, see section <a href="#fl_005fmetal">fl_metal</a></dt>
 
38364
<dt> <b>fl-metal5</b> &rarr; <code>fl_metal_5</code>, see section <a href="#fl_005fmetal">fl_metal</a></dt>
 
38365
<dt> <b>fl-metal6</b> &rarr; <code>fl_metal_6</code>, see section <a href="#fl_005fmetal">fl_metal</a></dt>
 
38366
<dt> <b>fl-mortar</b> &rarr; <a href="#fl_005fmortar">fl_mortar</a></dt>
 
38367
<dt> <b>fl-nomouse</b> &rarr; <a href="#fl_005fadhesionless">fl_adhesionless</a></dt>
 
38368
<dt> <b>fl-normal_x</b> &rarr; <code>fl_metal_7</code>, see section <a href="#fl_005fmetal">fl_metal</a></dt>
 
38369
<dt> <b>fl-normal</b> &rarr; <code>fl_metal_7n</code>, see section <a href="#fl_005fmetal">fl_metal</a></dt>
 
38370
<dt> <b>fl-plank</b> &rarr; <a href="#fl_005fplank">fl_plank</a></dt>
 
38371
<dt> <b>fl-red</b> &rarr; <a href="#fl_005fred">fl_red</a></dt>
 
38372
<dt> <b>fl-rock</b> &rarr; <a href="#fl_005frock">fl_rock</a></dt>
 
38373
<dt> <b>fl-rough</b> &rarr; <a href="#fl_005frough">fl_rough</a></dt>
 
38374
<dt> <b>fl-rough_medium</b> &rarr; <code>fl_rough, friction=5.0, adhesion=1.2</code>, see section <a href="#fl_005frough">fl_rough</a></dt>
 
38375
<dt> <b>fl-rough_slow</b> &rarr; <code>fl_rough, friction=7.0, adhesion=0.5</code>, see section <a href="#fl_005frough">fl_rough</a></dt>
 
38376
<dt> <b>fl-rough-blue</b> &rarr; <a href="#fl_005fblueslab">fl_blueslab</a></dt>
 
38377
<dt> <b>fl-rough-red</b> &rarr; <a href="#fl_005fredslab">fl_redslab</a></dt>
 
38378
<dt> <b>fl-sahara</b> &rarr; <a href="#fl_005fsahara">fl_sahara</a></dt>
 
38379
<dt> <b>fl-samba</b> &rarr; <a href="#fl_005fsamba">fl_samba</a></dt>
 
38380
<dt> <b>fl-samba1</b> &rarr; <code>fl_samba_h</code>, see section <a href="#fl_005fsamba">fl_samba</a></dt>
 
38381
<dt> <b>fl-samba2</b> &rarr; <code>fl_samba_v</code>, see section <a href="#fl_005fsamba">fl_samba</a></dt>
 
38382
<dt> <b>fl-sand</b> &rarr; <a href="#fl_005fsand">fl_sand</a></dt>
 
38383
<dt> <b>fl-space</b> &rarr; <a href="#fl_005fspace">fl_space</a></dt>
 
38384
<dt> <b>fl-springboard</b> &rarr; <a href="#fl_005fwhite">fl_white</a></dt>
 
38385
<dt> <b>fl-stone</b> &rarr; <a href="#fl_005fstone">fl_stone</a></dt>
 
38386
<dt> <b>fl-stwood</b> &rarr; <code>fl_wood_framed</code>, see section <a href="#fl_005fwood">fl_wood</a></dt>
 
38387
<dt> <b>fl-stwood1</b> &rarr; <code>fl_wood_framed_h</code>, see section <a href="#fl_005fwood">fl_wood</a></dt>
 
38388
<dt> <b>fl-stwood2</b> &rarr; <code>fl_wood_framed_v</code>, see section <a href="#fl_005fwood">fl_wood</a></dt>
 
38389
<dt> <b>fl-swamp</b> &rarr; <a href="#fl_005fswamp">fl_swamp</a></dt>
 
38390
<dt> <b>fl-thief</b> &rarr; <a href="#fl_005fthief">fl_thief</a></dt>
 
38391
<dt> <b>fl-tigris</b> &rarr; <a href="#fl_005ftigris">fl_tigris</a></dt>
 
38392
<dt> <b>fl-trigger</b> &rarr; <code>fl_fake_trigger</code>, see section <a href="#fl_005ffake">fl_fake</a></dt>
 
38393
<dt> <b>fl-water</b> &rarr; <a href="#fl_005fwater">fl_water</a></dt>
 
38394
<dt> <b>fl-white</b> &rarr; <a href="#fl_005fbright">fl_bright</a></dt>
 
38395
<dt> <b>fl-wood</b> &rarr; <a href="#fl_005fwood">fl_wood</a></dt>
 
38396
<dt> <b>fl-wood1</b> &rarr; <code>fl_wood_h</code>, see section <a href="#fl_005fwood">fl_wood</a></dt>
 
38397
<dt> <b>fl-wood2</b> &rarr; <code>fl_wood_v</code>, see section <a href="#fl_005fwood">fl_wood</a></dt>
 
38398
<dt> <b>fl-woven</b> &rarr; <a href="#fl_005fwoven">fl_woven</a></dt>
 
38399
<dt> <b>it-abyss</b> &rarr; <a href="#it_005ftrap">it_trap</a></dt>
 
38400
<dt> <b>it-bag</b> &rarr; <a href="#it_005fbag">it_bag</a></dt>
 
38401
<dt> <b>it-banana</b> &rarr; <a href="#it_005fbanana">it_banana</a></dt>
 
38402
<dt> <b>it-blackbomb</b> &rarr; <code>it_bomb_black</code>, see section <a href="#it_005fbomb">it_bomb</a></dt>
 
38403
<dt> <b>it-blocker</b> &rarr; <a href="#it_005fblocker">it_blocker</a></dt>
 
38404
<dt> <b>it-blocker-new</b> &rarr; <code>it_blocker_new</code>, see section <a href="#it_005fblocker">it_blocker</a></dt>
 
38405
<dt> <b>it-booze</b> &rarr; <a href="#it_005fbottle">it_bottle</a></dt>
 
38406
<dt> <b>it-booze-broken</b> &rarr; <code>it_bottle_broken</code>, see section <a href="#it_005fbottle">it_bottle</a></dt>
 
38407
<dt> <b>it-brake</b> &rarr; <a href="#it_005fbrake">it_brake</a></dt>
 
38408
<dt> <b>it-brush</b> &rarr; <a href="#it_005fbrush">it_brush</a></dt>
 
38409
<dt> <b>it-burnable</b> &rarr; <a href="#it_005fburnable">it_burnable</a></dt>
 
38410
<dt> <b>it-burnable_ash</b> &rarr; <code>it_burnable_ash</code>, see section <a href="#it_005fburnable">it_burnable</a></dt>
 
38411
<dt> <b>it-burnable_burning</b> &rarr; <code>it_burnable_burning</code>, see section <a href="#it_005fburnable">it_burnable</a></dt>
 
38412
<dt> <b>it-burnable_fireproof</b> &rarr; <code>it_burnable_fireproof</code>, see section <a href="#it_005fburnable">it_burnable</a></dt>
 
38413
<dt> <b>it-burnable_ignited</b> &rarr; <code>it_burnable_ignited</code>, see section <a href="#it_005fburnable">it_burnable</a></dt>
 
38414
<dt> <b>it-burnable_oil</b> &rarr; <code>it_burnable_oil</code>, see section <a href="#it_005fburnable">it_burnable</a></dt>
 
38415
<dt> <b>it-cherry</b> &rarr; <a href="#it_005fcherry">it_cherry</a></dt>
 
38416
<dt> <b>it-coffee</b> &rarr; <a href="#it_005fcoffee">it_coffee</a></dt>
 
38417
<dt> <b>it-coin1</b> &rarr; <code>it_coin_s</code>, see section <a href="#it_005fcoin">it_coin</a></dt>
 
38418
<dt> <b>it-coin2</b> &rarr; <code>it_coin_m</code>, see section <a href="#it_005fcoin">it_coin</a></dt>
 
38419
<dt> <b>it-coin4</b> &rarr; <code>it_coin_l</code>, see section <a href="#it_005fcoin">it_coin</a></dt>
 
38420
<dt> <b>it-crack0</b> &rarr; <code>it_crack_i</code>, see section <a href="#it_005fcrack">it_crack</a></dt>
 
38421
<dt> <b>it-crack1</b> &rarr; <code>it_crack_s</code>, see section <a href="#it_005fcrack">it_crack</a></dt>
 
38422
<dt> <b>it-crack2</b> &rarr; <code>it_crack_m</code>, see section <a href="#it_005fcrack">it_crack</a></dt>
 
38423
<dt> <b>it-crack3</b> &rarr; <code>it_crack_l</code>, see section <a href="#it_005fcrack">it_crack</a></dt>
 
38424
<dt> <b>it-cross</b> &rarr; <a href="#it_005fcross">it_cross</a></dt>
 
38425
<dt> <b>it-death</b> &rarr; <a href="#it_005fdeath">it_death</a></dt>
 
38426
<dt> <b>it-document</b> &rarr; <a href="#it_005fdocument">it_document</a></dt>
 
38427
<dt> <b>it-drop</b> &rarr; <a href="#it_005fdrop">it_drop</a></dt>
 
38428
<dt> <b>it-dynamite</b> &rarr; <a href="#it_005fdynamite">it_dynamite</a></dt>
 
38429
<dt> <b>it-explosion1</b> &rarr; <code>it_explosion_nil</code>, see section <a href="#it_005fexplosion">it_explosion</a></dt>
 
38430
<dt> <b>it-explosion2</b> &rarr; <code>it_explosion_hollow</code>, see section <a href="#it_005fexplosion">it_explosion</a></dt>
 
38431
<dt> <b>it-explosion3</b> &rarr; <code>it_explosion_debris</code>, see section <a href="#it_005fexplosion">it_explosion</a></dt>
 
38432
<dt> <b>it-extinguisher</b> &rarr; <a href="#it_005fextinguisher">it_extinguisher</a></dt>
 
38433
<dt> <b>it-extinguisher_empty</b> &rarr; <code>it_extinguisher_empty</code>, see section <a href="#it_005fextinguisher">it_extinguisher</a></dt>
 
38434
<dt> <b>it-extinguisher_medium</b> &rarr; <code>it_extinguisher_medium</code>, see section <a href="#it_005fextinguisher">it_extinguisher</a></dt>
 
38435
<dt> <b>it-extralife</b> &rarr; <a href="#it_005fextralife">it_extralife</a></dt>
 
38436
<dt> <b>it-flagblack</b> &rarr; <code>it_flag_black</code>, see section <a href="#it_005fflag">it_flag</a></dt>
 
38437
<dt> <b>it-flagwhite</b> &rarr; <code>it_flag_white</code>, see section <a href="#it_005fflag">it_flag</a></dt>
 
38438
<dt> <b>it-floppy</b> &rarr; <a href="#it_005ffloppy">it_floppy</a></dt>
 
38439
<dt> <b>it-glasses</b> &rarr; <a href="#it_005fglasses">it_glasses</a></dt>
 
38440
<dt> <b>it-glasses-broken</b> &rarr; <code>it_glasses_broken</code>, see section <a href="#it_005fglasses">it_glasses</a></dt>
 
38441
<dt> <b>it-hammer</b> &rarr; <a href="#it_005fhammer">it_hammer</a></dt>
 
38442
<dt> <b>it-hollow</b> &rarr; <code>it_meditation_hollow</code>, see section <a href="#it_005fmeditation">it_meditation</a></dt>
 
38443
<dt> <b>it-hill</b> &rarr; <code>it_meditation_hill</code>, see section <a href="#it_005fmeditation">it_meditation</a></dt>
 
38444
<dt> <b>it-hstrip</b> &rarr; <code>it_strip_ew</code>, see section <a href="#it_005fstrip">it_strip</a></dt>
 
38445
<dt> <b>it-inversesensor</b> &rarr; <code>it_sensor, invisible=true, inverse=true</code>, see section <a href="#it_005fsensor">it_sensor</a></dt>
 
38446
<dt> <b>it-key</b> &rarr; <code>it_key, code=1</code>, see section <a href="#it_005fkey">it_key</a></dt>
 
38447
<dt> <b>it-key_a</b> &rarr; <code>it_key, code=1</code>, see section <a href="#it_005fkey">it_key</a></dt>
 
38448
<dt> <b>it-key_b</b> &rarr; <code>it_key, code=2</code>, see section <a href="#it_005fkey">it_key</a></dt>
 
38449
<dt> <b>it-key_c</b> &rarr; <code>it_key, code=3</code>, see section <a href="#it_005fkey">it_key</a></dt>
 
38450
<dt> <b>it-landmine</b> &rarr; <a href="#it_005flandmine">it_landmine</a></dt>
 
38451
<dt> <b>it-magicwand</b> &rarr; <a href="#it_005fmagicwand">it_magicwand</a></dt>
 
38452
<dt> <b>it-magnet</b> &rarr; <a href="#it_005fmagnet">it_magnet</a></dt>
 
38453
<dt> <b>it-magnet-on</b> &rarr; <code>it_magnet_on</code>, see section <a href="#it_005fmagnet">it_magnet</a></dt>
 
38454
<dt> <b>it-magnet-off</b> &rarr; <code>it_magnet_off</code>, see section <a href="#it_005fmagnet">it_magnet</a></dt>
 
38455
<dt> <b>it-pencil</b> &rarr; <a href="#it_005fpencil">it_pencil</a></dt>
 
38456
<dt> <b>it-pin</b> &rarr; <a href="#it_005fpin">it_pin</a></dt>
 
38457
<dt> <b>it-pipe-e</b> &rarr; <code>it_pipe_e</code>, see section <a href="#it_005fpipe">it_pipe</a></dt>
 
38458
<dt> <b>it-pipe-es</b> &rarr; <code>it_pipe_es</code>, see section <a href="#it_005fpipe">it_pipe</a></dt>
 
38459
<dt> <b>it-pipe-h</b> &rarr; <code>it_pipe_ew</code>, see section <a href="#it_005fpipe">it_pipe</a></dt>
 
38460
<dt> <b>it-pipe-n</b> &rarr; <code>it_pipe_n</code>, see section <a href="#it_005fpipe">it_pipe</a></dt>
 
38461
<dt> <b>it-pipe-ne</b> &rarr; <code>it_pipe_ne</code>, see section <a href="#it_005fpipe">it_pipe</a></dt>
 
38462
<dt> <b>it-pipe-s</b> &rarr; <code>it_pipe_s</code>, see section <a href="#it_005fpipe">it_pipe</a></dt>
 
38463
<dt> <b>it-pipe-sw</b> &rarr; <code>it_pipe_sw</code>, see section <a href="#it_005fpipe">it_pipe</a></dt>
 
38464
<dt> <b>it-pipe-v</b> &rarr; <code>it_pipe_ns</code>, see section <a href="#it_005fpipe">it_pipe</a></dt>
 
38465
<dt> <b>it-pipe-w</b> &rarr; <code>it_pipe_w</code>, see section <a href="#it_005fpipe">it_pipe</a></dt>
 
38466
<dt> <b>it-pipe-wn</b> &rarr; <code>it_pipe_nw</code>, see section <a href="#it_005fpipe">it_pipe</a></dt>
 
38467
<dt> <b>it-puller-e</b> &rarr; <code>it_puller_e</code>, see section <a href="#it_005fpuller">it_puller</a></dt>
 
38468
<dt> <b>it-puller-n</b> &rarr; <code>it_puller_n</code>, see section <a href="#it_005fpuller">it_puller</a></dt>
 
38469
<dt> <b>it-puller-s</b> &rarr; <code>it_puller_s</code>, see section <a href="#it_005fpuller">it_puller</a></dt>
 
38470
<dt> <b>it-puller-w</b> &rarr; <code>it_puller_w</code>, see section <a href="#it_005fpuller">it_puller</a></dt>
 
38471
<dt> <b>it-ring</b> &rarr; <a href="#it_005fring">it_ring</a></dt>
 
38472
<dt> <b>it-rubberband</b> &rarr; <a href="#it_005frubberband">it_rubberband</a></dt>
 
38473
<dt> <b>it-seed</b> &rarr; <code>it_seed_wood</code>, see section <a href="#it_005fseed">it_seed</a></dt>
 
38474
<dt> <b>it-seed_nowood</b> &rarr; <code>it_seed_fake</code>, see section <a href="#it_005fseed">it_seed</a></dt>
 
38475
<dt> <b>it-seed_volcano</b> &rarr; <code>it_seed_volcano</code>, see section <a href="#it_005fseed">it_seed</a></dt>
 
38476
<dt> <b>it-sensor</b> &rarr; <code>it_sensor, invisible=true</code>, see section <a href="#it_005fsensor">it_sensor</a></dt>
 
38477
<dt> <b>it-spade</b> &rarr; <a href="#it_005fspade">it_spade</a></dt>
 
38478
<dt> <b>it-spoon</b> &rarr; <a href="#it_005fspoon">it_spoon</a></dt>
 
38479
<dt> <b>it-spring1</b> &rarr; <code>it_spring_keep</code>, see section <a href="#it_005fspring">it_spring</a></dt>
 
38480
<dt> <b>it-spring2</b> &rarr; <code>it_spring_drop</code>, see section <a href="#it_005fspring">it_spring</a></dt>
 
38481
<dt> <b>it-springboard</b> &rarr; <a href="#it_005fspringboard">it_springboard</a></dt>
 
38482
<dt> <b>it-squashed</b> &rarr; <a href="#it_005fsquashed">it_squashed</a></dt>
 
38483
<dt> <b>it-shogun-s</b> &rarr; <code>it_shogun_s</code>, see section <a href="#it_005fshogun">it_shogun</a></dt>
 
38484
<dt> <b>it-shogun-m</b> &rarr; <code>it_shogun_m</code>, see section <a href="#it_005fshogun">it_shogun</a></dt>
 
38485
<dt> <b>it-shogun-l</b> &rarr; <code>it_shogun_l</code>, see section <a href="#it_005fshogun">it_shogun</a></dt>
 
38486
<dt> <b>it-surprise</b> &rarr; <a href="#it_005fsurprise">it_surprise</a></dt>
 
38487
<dt> <b>it-sword</b> &rarr; <a href="#it_005fsword">it_sword</a></dt>
 
38488
<dt> <b>it-tinyhollow</b> &rarr; <code>it_meditation_dent</code>, see section <a href="#it_005fmeditation">it_meditation</a></dt>
 
38489
<dt> <b>it-tinyhill</b> &rarr; <code>it_meditation_bump</code>, see section <a href="#it_005fmeditation">it_meditation</a></dt>
 
38490
<dt> <b>it-trigger</b> &rarr; <a href="#it_005ftrigger">it_trigger</a></dt>
 
38491
<dt> <b>it-umbrella</b> &rarr; <a href="#it_005fumbrella">it_umbrella</a></dt>
 
38492
<dt> <b>it-vortex-open</b> &rarr; <code>it_vortex_open, scissor=false</code>, see section <a href="#it_005fvortex">it_vortex</a></dt>
 
38493
<dt> <b>it-vortex-closed</b> &rarr; <code>it_vortex_closed, autoclose=true, scissor=false</code>, see section <a href="#it_005fvortex">it_vortex</a></dt>
 
38494
<dt> <b>it-vstrip</b> &rarr; <code>it_strip_ns</code>, see section <a href="#it_005fstrip">it_strip</a></dt>
 
38495
<dt> <b>it-weight</b> &rarr; <a href="#it_005fweight">it_weight</a></dt>
 
38496
<dt> <b>it-whitebomb</b> &rarr; <code>it_bomb_white</code>, see section <a href="#it_005fbomb">it_bomb</a></dt>
 
38497
<dt> <b>it-wormhole</b> &rarr; <code>it_wormhole_on, scissor=false</code>, see section <a href="#it_005fwormhole">it_wormhole</a></dt>
 
38498
<dt> <b>it-wormhole-off</b> &rarr; <code>it_wormhole_off, scissor=false</code>, see section <a href="#it_005fwormhole">it_wormhole</a></dt>
 
38499
<dt> <b>it-wrench</b> &rarr; <a href="#it_005fwrench">it_wrench</a></dt>
 
38500
<dt> <b>it-yinyang</b> &rarr; <a href="#it_005fyinyang">it_yinyang</a></dt>
 
38501
<dt> <b>st-actorimpulse</b> &rarr; <a href="#st_005factorimpulse">st_actorimpulse</a></dt>
 
38502
<dt> <b>st-actorimpulse_invisible</b> &rarr; <code>st_actorimpulse_invisible</code>, see section <a href="#st_005factorimpulse">st_actorimpulse</a></dt>
 
38503
<dt> <b>st-beads</b> &rarr; <a href="#st_005fbeads">st_beads</a></dt>
 
38504
<dt> <b>st-bigbluesand-e</b> &rarr; <code>st_bluesand_e</code>, see section <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38505
<dt> <b>st-bigbluesand-es</b> &rarr; <code>st_bluesand_es</code>, see section <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38506
<dt> <b>st-bigbluesand-esw</b> &rarr; <code>st_bluesand_esw</code>, see section <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38507
<dt> <b>st-bigbluesand-ew</b> &rarr; <code>st_bluesand_ew</code>, see section <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38508
<dt> <b>st-bigbluesand-n</b> &rarr; <code>st_bluesand_n</code>, see section <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38509
<dt> <b>st-bigbluesand-ne</b> &rarr; <code>st_bluesand_ne</code>, see section <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38510
<dt> <b>st-bigbluesand-nes</b> &rarr; <code>st_bluesand_nes</code>, see section <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38511
<dt> <b>st-bigbluesand-nesw</b> &rarr; <code>st_bluesand_nesw</code>, see section <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38512
<dt> <b>st-bigbluesand-new</b> &rarr; <code>st_bluesand_new</code>, see section <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38513
<dt> <b>st-bigbluesand-ns</b> &rarr; <code>st_bluesand_ns</code>, see section <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38514
<dt> <b>st-bigbluesand-nsw</b> &rarr; <code>st_bluesand_nsw</code>, see section <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38515
<dt> <b>st-bigbluesand-nw</b> &rarr; <code>st_bluesand_nw</code>, see section <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38516
<dt> <b>st-bigbluesand-s</b> &rarr; <code>st_bluesand_s</code>, see section <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38517
<dt> <b>st-bigbluesand-sw</b> &rarr; <code>st_bluesand_sw</code>, see section <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38518
<dt> <b>st-bigbluesand-w</b> &rarr; <code>st_bluesand_w</code>, see section <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38519
<dt> <b>st-bigbrick-e</b> &rarr; <code>st_brick_e</code>, see section <a href="#st_005fbrick">st_brick</a></dt>
 
38520
<dt> <b>st-bigbrick-es</b> &rarr; <code>st_brick_es</code>, see section <a href="#st_005fbrick">st_brick</a></dt>
 
38521
<dt> <b>st-bigbrick-esw</b> &rarr; <code>st_brick_esw</code>, see section <a href="#st_005fbrick">st_brick</a></dt>
 
38522
<dt> <b>st-bigbrick-ew</b> &rarr; <code>st_brick_ew</code>, see section <a href="#st_005fbrick">st_brick</a></dt>
 
38523
<dt> <b>st-bigbrick-n</b> &rarr; <code>st_brick_n</code>, see section <a href="#st_005fbrick">st_brick</a></dt>
 
38524
<dt> <b>st-bigbrick-ne</b> &rarr; <code>st_brick_ne</code>, see section <a href="#st_005fbrick">st_brick</a></dt>
 
38525
<dt> <b>st-bigbrick-nes</b> &rarr; <code>st_brick_nes</code>, see section <a href="#st_005fbrick">st_brick</a></dt>
 
38526
<dt> <b>st-bigbrick-nesw</b> &rarr; <code>st_brick_nesw</code>, see section <a href="#st_005fbrick">st_brick</a></dt>
 
38527
<dt> <b>st-bigbrick-new</b> &rarr; <code>st_brick_new</code>, see section <a href="#st_005fbrick">st_brick</a></dt>
 
38528
<dt> <b>st-bigbrick-ns</b> &rarr; <code>st_brick_ns</code>, see section <a href="#st_005fbrick">st_brick</a></dt>
 
38529
<dt> <b>st-bigbrick-nsw</b> &rarr; <code>st_brick_nsw</code>, see section <a href="#st_005fbrick">st_brick</a></dt>
 
38530
<dt> <b>st-bigbrick-nw</b> &rarr; <code>st_brick_nw</code>, see section <a href="#st_005fbrick">st_brick</a></dt>
 
38531
<dt> <b>st-bigbrick-s</b> &rarr; <code>st_brick_s</code>, see section <a href="#st_005fbrick">st_brick</a></dt>
 
38532
<dt> <b>st-bigbrick-sw</b> &rarr; <code>st_brick_sw</code>, see section <a href="#st_005fbrick">st_brick</a></dt>
 
38533
<dt> <b>st-bigbrick-w</b> &rarr; <code>st_brick_w</code>, see section <a href="#st_005fbrick">st_brick</a></dt>
 
38534
<dt> <b>st-blackballs</b> &rarr; <code>st_jamb_black</code>, see section <a href="#st_005fjamb">st_jamb</a></dt>
 
38535
<dt> <b>st-black1</b> &rarr; <code>st_passage_black_square</code>, see section <a href="#st_005fpassage">st_passage</a></dt>
 
38536
<dt> <b>st-black2</b> &rarr; <code>st_passage_black_slash</code>, see section <a href="#st_005fpassage">st_passage</a></dt>
 
38537
<dt> <b>st-black3</b> &rarr; <code>st_passage_black_cross</code>, see section <a href="#st_005fpassage">st_passage</a></dt>
 
38538
<dt> <b>st-black4</b> &rarr; <code>st_passage_black_frame</code>, see section <a href="#st_005fpassage">st_passage</a></dt>
 
38539
<dt> <b>st-block</b> &rarr; <a href="#st_005fplop">st_plop</a></dt>
 
38540
<dt> <b>st-blocker</b> &rarr; <a href="#st_005fblocker">st_blocker</a></dt>
 
38541
<dt> <b>st-blocker-growing</b> &rarr; <code>st_blocker_new</code>, see section <a href="#st_005fblocker">st_blocker</a></dt>
 
38542
<dt> <b>st-bluegray</b> &rarr; <a href="#st_005fbluegray">st_bluegray</a></dt>
 
38543
<dt> <b>st-bluegray_hole</b> &rarr; <code>st_bluegray_hollow</code>, see section <a href="#st_005fbluegray">st_bluegray</a></dt>
 
38544
<dt> <b>st-blue-sand</b> &rarr; <a href="#st_005fbluesand">st_bluesand</a></dt>
 
38545
<dt> <b>st-bolder</b> &rarr; <a href="#st_005fboulder">st_boulder</a></dt>
 
38546
<dt> <b>st-bolder-e</b> &rarr; <code>st_boulder_e</code>, see section <a href="#st_005fboulder">st_boulder</a></dt>
 
38547
<dt> <b>st-bolder-n</b> &rarr; <code>st_boulder_n</code>, see section <a href="#st_005fboulder">st_boulder</a></dt>
 
38548
<dt> <b>st-bolder-s</b> &rarr; <code>st_boulder_s</code>, see section <a href="#st_005fboulder">st_boulder</a></dt>
 
38549
<dt> <b>st-bolder-w</b> &rarr; <code>st_boulder_w</code>, see section <a href="#st_005fboulder">st_boulder</a></dt>
 
38550
<dt> <b>st-bombs</b> &rarr; <code>st_dispenser_bombblack</code>, see section <a href="#st_005fdispenser">st_dispenser</a></dt>
 
38551
<dt> <b>st-brake</b> &rarr; <a href="#st_005fbrake">st_brake</a></dt>
 
38552
<dt> <b>st-break_acblack</b> &rarr; <code>st_break_black</code>, see section <a href="#st_005fbreak">st_break</a></dt>
 
38553
<dt> <b>st-break_acwhite</b> &rarr; <code>st_break_white</code>, see section <a href="#st_005fbreak">st_break</a></dt>
 
38554
<dt> <b>st-break_bolder</b> &rarr; <code>st_break_boulder</code>, see section <a href="#st_005fbreak">st_break</a></dt>
 
38555
<dt> <b>st-break_gray</b> &rarr; <code>st_break_plain</code>, see section <a href="#st_005fbreak">st_break</a></dt>
 
38556
<dt> <b>st-break_invisible</b> &rarr; <code>st_ghost_break</code>, see section <a href="#st_005fghost">st_ghost</a></dt>
 
38557
<dt> <b>st-brick</b> &rarr; <a href="#st_005fbrick">st_brick</a></dt>
 
38558
<dt> <b>st-brick_magic</b> &rarr; <code>st_magic_brick</code>, see section <a href="#st_005fmagic">st_magic</a></dt>
 
38559
<dt> <b>st-brownie</b> &rarr; <a href="#st_005fbrownie">st_brownie</a></dt>
 
38560
<dt> <b>st-bug</b> &rarr; <code>st_break_bug</code>, see section <a href="#st_005fbreak">st_break</a></dt>
 
38561
<dt> <b>st-bumps</b> &rarr; <a href="#st_005fpinkbumps">st_pinkbumps</a></dt>
 
38562
<dt> <b>st-camouflage</b> &rarr; <a href="#st_005fcamouflage">st_camouflage</a></dt>
 
38563
<dt> <b>st-camouflage_hole</b> &rarr; <code>st_camouflage_hollow</code>, see section <a href="#st_005fcamouflage">st_camouflage</a></dt>
 
38564
<dt> <b>st-camouflage_move</b> &rarr; <code>st_camouflage_movable</code>, see section <a href="#st_005fcamouflage">st_camouflage</a></dt>
 
38565
<dt> <b>st-chameleon</b> &rarr; <a href="#st_005fchameleon">st_chameleon</a></dt>
 
38566
<dt> <b>st-chargeminus</b> &rarr; <code>st_charge_minus</code>, see section <a href="#st_005fcharge">st_charge</a></dt>
 
38567
<dt> <b>st-chargeplus</b> &rarr; <code>st_charge_plus</code>, see section <a href="#st_005fcharge">st_charge</a></dt>
 
38568
<dt> <b>st-chargezero</b> &rarr; <code>st_charge_zero</code>, see section <a href="#st_005fcharge">st_charge</a></dt>
 
38569
<dt> <b>st-chess</b> &rarr; <a href="#st_005fchess">st_chess</a></dt>
 
38570
<dt> <b>st-chess_black</b> &rarr; <code>st_chess_black</code>, see section <a href="#st_005fchess">st_chess</a></dt>
 
38571
<dt> <b>st-chess_white</b> &rarr; <code>st_chess_white</code>, see section <a href="#st_005fchess">st_chess</a></dt>
 
38572
<dt> <b>st-coffee</b> &rarr; <code>st_magic_oxydc</code>, see section <a href="#st_005fmagic">st_magic</a></dt>
 
38573
<dt> <b>st-coinslot</b> &rarr; <a href="#st_005fcoinslot">st_coinslot</a></dt>
 
38574
<dt> <b>st-death</b> &rarr; <a href="#st_005fdeath">st_death</a></dt>
 
38575
<dt> <b>st-death_invisible</b> &rarr; <code>st_death_invisible</code>, see section <a href="#st_005fdeath">st_death</a></dt>
 
38576
<dt> <b>st-disco-dark</b> &rarr; <code>st_disco_dark</code>, see section <a href="#st_005fdisco">st_disco</a></dt>
 
38577
<dt> <b>st-disco-light</b> &rarr; <code>st_disco_light</code>, see section <a href="#st_005fdisco">st_disco</a></dt>
 
38578
<dt> <b>st-disco-medium</b> &rarr; <code>st_disco_medium</code>, see section <a href="#st_005fdisco">st_disco</a></dt>
 
38579
<dt> <b>st-door_a</b> &rarr; <code>st_door_a</code>, see section <a href="#st_005fdoor">st_door</a></dt>
 
38580
<dt> <b>st-door_b</b> &rarr; <code>st_door_b</code>, see section <a href="#st_005fdoor">st_door</a></dt>
 
38581
<dt> <b>st-door_c</b> &rarr; <code>st_door_c</code>, see section <a href="#st_005fdoor">st_door</a></dt>
 
38582
<dt> <b>st-door-h</b> &rarr; <code>st_door_d, faces=&quot;ns&quot;</code>, see section <a href="#st_005fdoor">st_door</a></dt>
 
38583
<dt> <b>st-door-h-open</b> &rarr; <code>st_door_d, faces=&quot;ns&quot;, state=OPEN</code>, see section <a href="#st_005fdoor">st_door</a></dt>
 
38584
<dt> <b>st-door-v</b> &rarr; <code>st_door_d, faces=&quot;ew&quot;</code>, see section <a href="#st_005fdoor">st_door</a></dt>
 
38585
<dt> <b>st-door-v-open</b> &rarr; <code>st_door_d, faces=&quot;ew&quot;, state=OPEN</code>, see section <a href="#st_005fdoor">st_door</a></dt>
 
38586
<dt> <b>st-fakeoxyd</b> &rarr; <code>st_fake_quake</code>, see section <a href="#st_005ffake">st_fake</a></dt>
 
38587
<dt> <b>st-fakeoxyda</b> &rarr; <code>st_magic_oxyda</code>, see section <a href="#st_005fmagic">st_magic</a></dt>
 
38588
<dt> <b>st-fart</b> &rarr; <a href="#st_005fquake">st_quake</a></dt>
 
38589
<dt> <b>st-firebreak</b> &rarr; <code>st_flat_burnable</code>, see section <a href="#st_005fflat">st_flat</a></dt>
 
38590
<dt> <b>st-firebreak_move</b> &rarr; <code>st_flat_moveburnable</code>, see section <a href="#st_005fflat">st_flat</a></dt>
 
38591
<dt> <b>st-flash</b> &rarr; <a href="#st_005fflash">st_flash</a></dt>
 
38592
<dt> <b>st-flhay</b> &rarr; <code>st_box_hay</code>, see section <a href="#st_005fbox">st_box</a></dt>
 
38593
<dt> <b>st-floppy</b> &rarr; <a href="#st_005ffloppy">st_floppy</a></dt>
 
38594
<dt> <b>st-flrock</b> &rarr; <code>st_box_rock</code>, see section <a href="#st_005fbox">st_box</a></dt>
 
38595
<dt> <b>st-fourswitch</b> &rarr; <a href="#st_005ffourswitch">st_fourswitch</a></dt>
 
38596
<dt> <b>st-glass</b> &rarr; <a href="#st_005frawglass">st_rawglass</a></dt>
 
38597
<dt> <b>st-glass_move</b> &rarr; <code>st_rawglass_movable</code>, see section <a href="#st_005frawglass">st_rawglass</a></dt>
 
38598
<dt> <b>st-glass1</b> &rarr; <a href="#st_005flightglass">st_lightglass</a></dt>
 
38599
<dt> <b>st-glass1_hole</b> &rarr; <code>st_lightglass_hollow</code>, see section <a href="#st_005flightglass">st_lightglass</a></dt>
 
38600
<dt> <b>st-glass1_move</b> &rarr; <code>st_lightglass_movable</code>, see section <a href="#st_005flightglass">st_lightglass</a></dt>
 
38601
<dt> <b>st-glass2</b> &rarr; <a href="#st_005fdarkglass">st_darkglass</a></dt>
 
38602
<dt> <b>st-glass2_hole</b> &rarr; <code>st_darkglass_hollow</code>, see section <a href="#st_005fdarkglass">st_darkglass</a></dt>
 
38603
<dt> <b>st-glass2_move</b> &rarr; <code>st_darkglass_movable</code>, see section <a href="#st_005fdarkglass">st_darkglass</a></dt>
 
38604
<dt> <b>st-glass3</b> &rarr; <a href="#st_005fredfiber">st_redfiber</a></dt>
 
38605
<dt> <b>st-grate1</b> &rarr; <code>st_grate_cross</code>, see section <a href="#st_005fgrate">st_grate</a></dt>
 
38606
<dt> <b>st-grate2</b> &rarr; <code>st_grate_framed</code>, see section <a href="#st_005fgrate">st_grate</a></dt>
 
38607
<dt> <b>st-grate3</b> &rarr; <code>st_portal_horse</code>, see section <a href="#st_005fportal">st_portal</a></dt>
 
38608
<dt> <b>st-greenbrown</b> &rarr; <a href="#st_005fgreenbrown">st_greenbrown</a></dt>
 
38609
<dt> <b>st-greenbrown_hole</b> &rarr; <code>st_greenbrown_hollow</code>, see section <a href="#st_005fgreenbrown">st_greenbrown</a></dt>
 
38610
<dt> <b>st-greenbrown_move</b> &rarr; <code>st_greenbrown_movable</code>, see section <a href="#st_005fgreenbrown">st_greenbrown</a></dt>
 
38611
<dt> <b>st-invisible</b> &rarr; <a href="#st_005finvisible">st_invisible</a></dt>
 
38612
<dt> <b>st-invisible_hole</b> &rarr; <code>st_invisible_hollow</code>, see section <a href="#st_005finvisible">st_invisible</a></dt>
 
38613
<dt> <b>st-invisible_magic</b> &rarr; <code>st_ghost_greenbrown</code>, see section <a href="#st_005fghost">st_ghost</a></dt>
 
38614
<dt> <b>st-invisible_move</b> &rarr; <code>st_invisible_movable</code>, see section <a href="#st_005finvisible">st_invisible</a></dt>
 
38615
<dt> <b>st-key</b> &rarr; <code>st_key, code=0</code>, see section <a href="#st_005fkey">st_key</a></dt>
 
38616
<dt> <b>st-key_a</b> &rarr; <code>st_key, code=1</code>, see section <a href="#st_005fkey">st_key</a></dt>
 
38617
<dt> <b>st-key_b</b> &rarr; <code>st_key, code=2</code>, see section <a href="#st_005fkey">st_key</a></dt>
 
38618
<dt> <b>st-key_c</b> &rarr; <code>st_key, code=3</code>, see section <a href="#st_005fkey">st_key</a></dt>
 
38619
<dt> <b>st-knight</b> &rarr; <a href="#st_005fknight">st_knight</a></dt>
 
38620
<dt> <b>st-laserbreak</b> &rarr; <code>st_break_laser</code>, see section <a href="#st_005fbreak">st_break</a></dt>
 
38621
<dt> <b>st-laserswitch</b> &rarr; <a href="#st_005flaserswitch">st_laserswitch</a></dt>
 
38622
<dt> <b>st-lasertimeswitch</b> &rarr; <a href="#st_005flaserflop">st_laserflop</a></dt>
 
38623
<dt> <b>st-laser</b> &rarr; <code>st_laser_e</code>, see section <a href="#st_005flaser">st_laser</a></dt>
 
38624
<dt> <b>st-laser-e</b> &rarr; <code>st_laser_e</code>, see section <a href="#st_005flaser">st_laser</a></dt>
 
38625
<dt> <b>st-laser-n</b> &rarr; <code>st_laser_n</code>, see section <a href="#st_005flaser">st_laser</a></dt>
 
38626
<dt> <b>st-laser-s</b> &rarr; <code>st_laser_s</code>, see section <a href="#st_005flaser">st_laser</a></dt>
 
38627
<dt> <b>st-laser-w</b> &rarr; <code>st_laser_w</code>, see section <a href="#st_005flaser">st_laser</a></dt>
 
38628
<dt> <b>st-lightpassenger</b> &rarr; <a href="#st_005flightpassenger">st_lightpassenger</a></dt>
 
38629
<dt> <b>st-lightpassenger_off</b> &rarr; <code>st_lightpassenger_off</code>, see section <a href="#st_005flightpassenger">st_lightpassenger</a></dt>
 
38630
<dt> <b>st-likeoxyda</b> &rarr; <code>st_fake_oxyda</code>, see section <a href="#st_005ffake">st_fake</a></dt>
 
38631
<dt> <b>st-likeoxyda-open</b> &rarr; <code>st_fake_oxyda, state=OPEN</code>, see section <a href="#st_005ffake">st_fake</a></dt>
 
38632
<dt> <b>st-likeoxydb</b> &rarr; <code>st_fake_oxydb</code>, see section <a href="#st_005ffake">st_fake</a></dt>
 
38633
<dt> <b>st-likeoxydb-open</b> &rarr; <code>st_fake_oxydb, state=OPEN</code>, see section <a href="#st_005ffake">st_fake</a></dt>
 
38634
<dt> <b>st-likeoxydc</b> &rarr; <code>st_fake_oxydc</code>, see section <a href="#st_005ffake">st_fake</a></dt>
 
38635
<dt> <b>st-likeoxydc-open</b> &rarr; <code>st_fake_oxydc, state=OPEN</code>, see section <a href="#st_005ffake">st_fake</a></dt>
 
38636
<dt> <b>st-likeoxydd</b> &rarr; <code>st_fake_oxydd</code>, see section <a href="#st_005ffake">st_fake</a></dt>
 
38637
<dt> <b>st-likeoxydd-open</b> &rarr; <code>st_fake_oxydd, state=OPEN</code>, see section <a href="#st_005ffake">st_fake</a></dt>
 
38638
<dt> <b>st-mail-e</b> &rarr; <code>st_mail_e</code>, see section <a href="#st_005fmail">st_mail</a></dt>
 
38639
<dt> <b>st-mail-n</b> &rarr; <code>st_mail_n</code>, see section <a href="#st_005fmail">st_mail</a></dt>
 
38640
<dt> <b>st-mail-s</b> &rarr; <code>st_mail_s</code>, see section <a href="#st_005fmail">st_mail</a></dt>
 
38641
<dt> <b>st-mail-w</b> &rarr; <code>st_mail_w</code>, see section <a href="#st_005fmail">st_mail</a></dt>
 
38642
<dt> <b>st-marble</b> &rarr; <a href="#st_005fredbrown">st_redbrown</a></dt>
 
38643
<dt> <b>st-marble_hole</b> &rarr; <code>st_redbrown_hollow</code>, see section <a href="#st_005fredbrown">st_redbrown</a></dt>
 
38644
<dt> <b>st-marble_move</b> &rarr; <code>st_redbrown_movable</code>, see section <a href="#st_005fredbrown">st_redbrown</a></dt>
 
38645
<dt> <b>st-metal</b> &rarr; <a href="#st_005fmetal">st_metal</a></dt>
 
38646
<dt> <b>st-metal_hole</b> &rarr; <code>st_metal_hollow</code>, see section <a href="#st_005fmetal">st_metal</a></dt>
 
38647
<dt> <b>st-mirror-p|</b> &rarr; <code>st_mirror_slab_n</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38648
<dt> <b>st-mirror-p/</b> &rarr; <code>st_mirror_slab_e</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38649
<dt> <b>st-mirror-p-</b> &rarr; <code>st_mirror_slab_s</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38650
<dt> <b>st-mirror-p\\</b> &rarr; <code>st_mirror_slab_w</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38651
<dt> <b>st-mirror-p|t</b> &rarr; <code>st_mirror_slab_nt</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38652
<dt> <b>st-mirror-p/t</b> &rarr; <code>st_mirror_slab_et</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38653
<dt> <b>st-mirror-p-t</b> &rarr; <code>st_mirror_slab_st</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38654
<dt> <b>st-mirror-p\\t</b> &rarr; <code>st_mirror_slab_wt</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38655
<dt> <b>st-mirror-p|m</b> &rarr; <code>st_mirror_slab_nm</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38656
<dt> <b>st-mirror-p/m</b> &rarr; <code>st_mirror_slab_em</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38657
<dt> <b>st-mirror-p-m</b> &rarr; <code>st_mirror_slab_sm</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38658
<dt> <b>st-mirror-p\\m</b> &rarr; <code>st_mirror_slab_wm</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38659
<dt> <b>st-mirror-p|tm</b> &rarr; <code>st_mirror_slab_ntm</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38660
<dt> <b>st-mirror-p/tm</b> &rarr; <code>st_mirror_slab_etm</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38661
<dt> <b>st-mirror-p-tm</b> &rarr; <code>st_mirror_slab_stm</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38662
<dt> <b>st-mirror-p\\tm</b> &rarr; <code>st_mirror_slab_wtm</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38663
<dt> <b>st-mirror-3^</b> &rarr; <code>st_mirror_triangle_n</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38664
<dt> <b>st-mirror-3&gt;</b> &rarr; <code>st_mirror_triangle_e</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38665
<dt> <b>st-mirror-3v</b> &rarr; <code>st_mirror_triangle_s</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38666
<dt> <b>st-mirror-3&lt;</b> &rarr; <code>st_mirror_triangle_w</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38667
<dt> <b>st-mirror-3^t</b> &rarr; <code>st_mirror_triangle_nt</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38668
<dt> <b>st-mirror-3&gt;t</b> &rarr; <code>st_mirror_triangle_et</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38669
<dt> <b>st-mirror-3vt</b> &rarr; <code>st_mirror_triangle_st</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38670
<dt> <b>st-mirror-3&lt;t</b> &rarr; <code>st_mirror_triangle_wt</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38671
<dt> <b>st-mirror-3^m</b> &rarr; <code>st_mirror_triangle_nm</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38672
<dt> <b>st-mirror-3&gt;m</b> &rarr; <code>st_mirror_triangle_em</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38673
<dt> <b>st-mirror-3vm</b> &rarr; <code>st_mirror_triangle_sm</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38674
<dt> <b>st-mirror-3&lt;m</b> &rarr; <code>st_mirror_triangle_wm</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38675
<dt> <b>st-mirror-3^tm</b> &rarr; <code>st_mirror_triangle_ntm</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38676
<dt> <b>st-mirror-3&gt;tm</b> &rarr; <code>st_mirror_triangle_etm</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38677
<dt> <b>st-mirror-3vtm</b> &rarr; <code>st_mirror_triangle_stm</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38678
<dt> <b>st-mirror-3&lt;tm</b> &rarr; <code>st_mirror_triangle_wtm</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38679
<dt> <b>st-oneway</b> &rarr; <a href="#st_005foneway">st_oneway</a></dt>
 
38680
<dt> <b>st-oneway_black&quot;</b> &rarr; <code>st_oneway_black</code>, see section <a href="#st_005foneway">st_oneway</a></dt>
 
38681
<dt> <b>st-oneway_black-e&quot;</b> &rarr; <code>st_oneway_black_e</code>, see section <a href="#st_005foneway">st_oneway</a></dt>
 
38682
<dt> <b>st-oneway_black-n&quot;</b> &rarr; <code>st_oneway_black_n</code>, see section <a href="#st_005foneway">st_oneway</a></dt>
 
38683
<dt> <b>st-oneway_black-s&quot;</b> &rarr; <code>st_oneway_black_s</code>, see section <a href="#st_005foneway">st_oneway</a></dt>
 
38684
<dt> <b>st-oneway_black-w&quot;</b> &rarr; <code>st_oneway_black_w</code>, see section <a href="#st_005foneway">st_oneway</a></dt>
 
38685
<dt> <b>st-oneway-e&quot;</b> &rarr; <code>st_oneway_e</code>, see section <a href="#st_005foneway">st_oneway</a></dt>
 
38686
<dt> <b>st-oneway-n&quot;</b> &rarr; <code>st_oneway_n</code>, see section <a href="#st_005foneway">st_oneway</a></dt>
 
38687
<dt> <b>st-oneway-s&quot;</b> &rarr; <code>st_oneway_s</code>, see section <a href="#st_005foneway">st_oneway</a></dt>
 
38688
<dt> <b>st-oneway-w&quot;</b> &rarr; <code>st_oneway_w</code>, see section <a href="#st_005foneway">st_oneway</a></dt>
 
38689
<dt> <b>st-oneway_white&quot;</b> &rarr; <code>st_oneway_white</code>, see section <a href="#st_005foneway">st_oneway</a></dt>
 
38690
<dt> <b>st-oneway_white-e&quot;</b> &rarr; <code>st_oneway_white_e</code>, see section <a href="#st_005foneway">st_oneway</a></dt>
 
38691
<dt> <b>st-oneway_white-n&quot;</b> &rarr; <code>st_oneway_white_n</code>, see section <a href="#st_005foneway">st_oneway</a></dt>
 
38692
<dt> <b>st-oneway_white-s&quot;</b> &rarr; <code>st_oneway_white_s</code>, see section <a href="#st_005foneway">st_oneway</a></dt>
 
38693
<dt> <b>st-oneway_white-w&quot;</b> &rarr; <code>st_oneway_white_w</code>, see section <a href="#st_005foneway">st_oneway</a></dt>
 
38694
<dt> <b>st-oxyd</b> &rarr; <a href="#st_005foxyd">st_oxyd</a></dt>
 
38695
<dt> <b>st-plain</b> &rarr; <a href="#st_005fflat">st_flat</a></dt>
 
38696
<dt> <b>st-plain_break</b> &rarr; <code>st_flat_breakable</code>, see section <a href="#st_005fflat">st_flat</a></dt>
 
38697
<dt> <b>st-plain_cracked</b> &rarr; <code>st_flat_cracked</code>, see section <a href="#st_005fflat">st_flat</a></dt>
 
38698
<dt> <b>st-plain_hole</b> &rarr; <code>st_flat_hollow</code>, see section <a href="#st_005fflat">st_flat</a></dt>
 
38699
<dt> <b>st-plain_move</b> &rarr; <code>st_flat_movable</code>, see section <a href="#st_005fflat">st_flat</a></dt>
 
38700
<dt> <b>st-pmirror</b> &rarr; <code>st_mirror_slab_e</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38701
<dt> <b>st-polarswitch</b> &rarr; <a href="#st_005fpolarswitch">st_polarswitch</a></dt>
 
38702
<dt> <b>st-pull</b> &rarr; <a href="#st_005fpull">st_pull</a></dt>
 
38703
<dt> <b>st-puzzle</b> &rarr; <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38704
<dt> <b>st-puzzle-e</b> &rarr; <code>st_puzzle_blue_e</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38705
<dt> <b>st-puzzle-es</b> &rarr; <code>st_puzzle_blue_es</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38706
<dt> <b>st-puzzle-esw</b> &rarr; <code>st_puzzle_blue_esw</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38707
<dt> <b>st-puzzle-ew</b> &rarr; <code>st_puzzle_blue_ew</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38708
<dt> <b>st-puzzle-hollow</b> &rarr; <code>st_puzzle_blue_nesw_hollow</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38709
<dt> <b>st-puzzle-n</b> &rarr; <code>st_puzzle_blue_n</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38710
<dt> <b>st-puzzle-ne</b> &rarr; <code>st_puzzle_blue_ne</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38711
<dt> <b>st-puzzle-nes</b> &rarr; <code>st_puzzle_blue_nes</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38712
<dt> <b>st-puzzle-nesw</b> &rarr; <code>st_puzzle_blue_nesw</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38713
<dt> <b>st-puzzle-new</b> &rarr; <code>st_puzzle_blue_new</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38714
<dt> <b>st-puzzle-ns</b> &rarr; <code>st_puzzle_blue_ns</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38715
<dt> <b>st-puzzle-nsw</b> &rarr; <code>st_puzzle_blue_nsw</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38716
<dt> <b>st-puzzle-nw</b> &rarr; <code>st_puzzle_blue_nw</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38717
<dt> <b>st-puzzle-s</b> &rarr; <code>st_puzzle_blue_s</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38718
<dt> <b>st-puzzle-sw</b> &rarr; <code>st_puzzle_blue_sw</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38719
<dt> <b>st-puzzle-w</b> &rarr; <code>st_puzzle_blue_w</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38720
<dt> <b>st-puzzle2-e</b> &rarr; <code>st_puzzle_yellow_e</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38721
<dt> <b>st-puzzle2-es</b> &rarr; <code>st_puzzle_yellow_es</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38722
<dt> <b>st-puzzle2-esw</b> &rarr; <code>st_puzzle_yellow_esw</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38723
<dt> <b>st-puzzle2-ew</b> &rarr; <code>st_puzzle_yellow_ew</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38724
<dt> <b>st-puzzle2-hollow</b> &rarr; <code>st_puzzle_yellow_nesw_hollow</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38725
<dt> <b>st-puzzle2-n</b> &rarr; <code>st_puzzle_yellow_n</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38726
<dt> <b>st-puzzle2-ne</b> &rarr; <code>st_puzzle_yellow_ne</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38727
<dt> <b>st-puzzle2-nes</b> &rarr; <code>st_puzzle_yellow_nes</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38728
<dt> <b>st-puzzle2-nesw</b> &rarr; <code>st_puzzle_yellow_nesw</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38729
<dt> <b>st-puzzle2-new</b> &rarr; <code>st_puzzle_yellow_new</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38730
<dt> <b>st-puzzle2-ns</b> &rarr; <code>st_puzzle_yellow_ns</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38731
<dt> <b>st-puzzle2-nsw</b> &rarr; <code>st_puzzle_yellow_nsw</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38732
<dt> <b>st-puzzle2-nw</b> &rarr; <code>st_puzzle_yellow_nw</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38733
<dt> <b>st-puzzle2-s</b> &rarr; <code>st_puzzle_yellow_s</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38734
<dt> <b>st-puzzle2-sw</b> &rarr; <code>st_puzzle_yellow_sw</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38735
<dt> <b>st-puzzle2-w</b> &rarr; <code>st_puzzle_yellow_w</code>, see section <a href="#st_005fpuzzle">st_puzzle</a></dt>
 
38736
<dt> <b>st-redrock</b> &rarr; <a href="#st_005fredrock">st_redrock</a></dt>
 
38737
<dt> <b>st-rock1</b> &rarr; <a href="#st_005fgranite">st_granite</a></dt>
 
38738
<dt> <b>st-rock1_hole</b> &rarr; <code>st_granite_hollow</code>, see section <a href="#st_005fgranite">st_granite</a></dt>
 
38739
<dt> <b>st-rock1_move</b> &rarr; <code>st_granite_movable</code>, see section <a href="#st_005fgranite">st_granite</a></dt>
 
38740
<dt> <b>st-rock2</b> &rarr; <a href="#st_005fdarkgray">st_darkgray</a></dt>
 
38741
<dt> <b>st-rock2_hole</b> &rarr; <code>st_darkgray_hollow</code>, see section <a href="#st_005fdarkgray">st_darkgray</a></dt>
 
38742
<dt> <b>st-rock3</b> &rarr; <a href="#st_005fplaster">st_plaster</a></dt>
 
38743
<dt> <b>st-rock3_break</b> &rarr; <code>st_plaster_breakable</code>, see section <a href="#st_005fplaster">st_plaster</a></dt>
 
38744
<dt> <b>st-rock3_hole</b> &rarr; <code>st_plaster_hollow</code>, see section <a href="#st_005fplaster">st_plaster</a></dt>
 
38745
<dt> <b>st-rock3_move</b> &rarr; <code>st_plaster_movable</code>, see section <a href="#st_005fplaster">st_plaster</a></dt>
 
38746
<dt> <b>st-rock3_movebreak</b> &rarr; <code>st_plaster_movebreakable</code>, see section <a href="#st_005fplaster">st_plaster</a></dt>
 
38747
<dt> <b>st-rock4</b> &rarr; <a href="#st_005fpurplemarble">st_purplemarble</a></dt>
 
38748
<dt> <b>st-rock5</b> &rarr; <a href="#st_005ftigris">st_tigris</a></dt>
 
38749
<dt> <b>st-rock6</b> &rarr; <a href="#st_005fpurplegray">st_purplegray</a></dt>
 
38750
<dt> <b>st-rock7</b> &rarr; <a href="#st_005fgreengray">st_greengray</a></dt>
 
38751
<dt> <b>st-rock8</b> &rarr; <a href="#st_005fconcrete">st_concrete</a></dt>
 
38752
<dt> <b>st-rock9</b> &rarr; <a href="#st_005fancient">st_ancient</a></dt>
 
38753
<dt> <b>st-rock10</b> &rarr; <a href="#st_005fbrownmarble">st_brownmarble</a></dt>
 
38754
<dt> <b>st-rotator-left</b> &rarr; <code>st_rotator_ccw</code>, see section <a href="#st_005frotator">st_rotator</a></dt>
 
38755
<dt> <b>st-rotator_move-left</b> &rarr; <code>st_rotator_ccw_movable</code>, see section <a href="#st_005frotator">st_rotator</a></dt>
 
38756
<dt> <b>st-rotator_move-right</b> &rarr; <code>st_rotator_cw_movable</code>, see section <a href="#st_005frotator">st_rotator</a></dt>
 
38757
<dt> <b>st-rotator-right</b> &rarr; <code>st_rotator_cw</code>, see section <a href="#st_005frotator">st_rotator</a></dt>
 
38758
<dt> <b>st-rubberband</b> &rarr; <a href="#st_005frubberband">st_rubberband</a></dt>
 
38759
<dt> <b>st-scissors</b> &rarr; <code>st_scissors, inverse=true</code>, see section <a href="#st_005fscissors">st_scissors</a></dt>
 
38760
<dt> <b>st-shogun</b> &rarr; <a href="#st_005fshogun">st_shogun</a></dt>
 
38761
<dt> <b>st-shogun-l</b> &rarr; <code>st_shogun_l</code>, see section <a href="#st_005fshogun">st_shogun</a></dt>
 
38762
<dt> <b>st-shogun-m</b> &rarr; <code>st_shogun_m</code>, see section <a href="#st_005fshogun">st_shogun</a></dt>
 
38763
<dt> <b>st-shogun-ml</b> &rarr; <code>st_shogun_ml</code>, see section <a href="#st_005fshogun">st_shogun</a></dt>
 
38764
<dt> <b>st-shogun-s</b> &rarr; <code>st_shogun_s</code>, see section <a href="#st_005fshogun">st_shogun</a></dt>
 
38765
<dt> <b>st-shogun-sl</b> &rarr; <code>st_shogun_sl</code>, see section <a href="#st_005fshogun">st_shogun</a></dt>
 
38766
<dt> <b>st-shogun-sm</b> &rarr; <code>st_shogun_sm</code>, see section <a href="#st_005fshogun">st_shogun</a></dt>
 
38767
<dt> <b>st-shogun-sml</b> &rarr; <code>st_shogun_sml</code>, see section <a href="#st_005fshogun">st_shogun</a></dt>
 
38768
<dt> <b>st-spitter</b> &rarr; <a href="#st_005fspitter">st_spitter</a></dt>
 
38769
<dt> <b>st-stonebrush</b> &rarr; <code>st_ghost_purplemarble</code>, see section <a href="#st_005fghost">st_ghost</a></dt>
 
38770
<dt> <b>st-stoneimpulse</b> &rarr; <a href="#st_005fstoneimpulse">st_stoneimpulse</a></dt>
 
38771
<dt> <b>st-stoneimpulse-hollow</b> &rarr; <code>st_stoneimpulse_hollow</code>, see section <a href="#st_005fstoneimpulse">st_stoneimpulse</a></dt>
 
38772
<dt> <b>st-stoneimpulse_movable</b> &rarr; <code>st_stoneimpulse_movable</code>, see section <a href="#st_005fstoneimpulse">st_stoneimpulse</a></dt>
 
38773
<dt> <b>st-stone1</b> &rarr; <a href="#st_005fbrownpyramid">st_brownpyramid</a></dt>
 
38774
<dt> <b>st-stone2</b> &rarr; <a href="#st_005fredmarble">st_redmarble</a></dt>
 
38775
<dt> <b>st-stone_break</b> &rarr; <code>st_break_oxydc</code>, see section <a href="#st_005fbreak">st_break</a></dt>
 
38776
<dt> <b>st-surprise</b> &rarr; <a href="#st_005fsurprise">st_surprise</a></dt>
 
38777
<dt> <b>st-swap</b> &rarr; <a href="#st_005fswap">st_swap</a></dt>
 
38778
<dt> <b>st-switch</b> &rarr; <code>st_switch, instant=true</code>, see section <a href="#st_005fswitch">st_switch</a></dt>
 
38779
<dt> <b>st-switch_black</b> &rarr; <code>st_switch_black, instant=true</code>, see section <a href="#st_005fswitch">st_switch</a></dt>
 
38780
<dt> <b>st-switch_white</b> &rarr; <code>st_switch_white, instant=true</code>, see section <a href="#st_005fswitch">st_switch</a></dt>
 
38781
<dt> <b>st-thief</b> &rarr; <a href="#st_005fthief">st_thief</a></dt>
 
38782
<dt> <b>st-timer</b> &rarr; <a href="#st_005ftimer">st_timer</a></dt>
 
38783
<dt> <b>st-timeswitch</b> &rarr; <a href="#st_005fmonoflop">st_monoflop</a></dt>
 
38784
<dt> <b>st-turnstile</b> &rarr; <code>st_turnstile_red</code>, see section <a href="#st_005fturnstile">st_turnstile</a></dt>
 
38785
<dt> <b>st-turnstile-green</b> &rarr; <code>st_turnstile_green</code>, see section <a href="#st_005fturnstile">st_turnstile</a></dt>
 
38786
<dt> <b>st-turnstile-e</b> &rarr; <code>st_turnstilearm_e</code>, see section <a href="#st_005fturnstilearm">st_turnstilearm</a></dt>
 
38787
<dt> <b>st-turnstile-n</b> &rarr; <code>st_turnstilearm_n</code>, see section <a href="#st_005fturnstilearm">st_turnstilearm</a></dt>
 
38788
<dt> <b>st-turnstile-s</b> &rarr; <code>st_turnstilearm_s</code>, see section <a href="#st_005fturnstilearm">st_turnstilearm</a></dt>
 
38789
<dt> <b>st-turnstile-w</b> &rarr; <code>st_turnstilearm_w</code>, see section <a href="#st_005fturnstilearm">st_turnstilearm</a></dt>
 
38790
<dt> <b>st-volcano</b> &rarr; <a href="#st_005fvolcano">st_volcano</a></dt>
 
38791
<dt> <b>st-volcano_active</b> &rarr; <code>st_volcano_active</code>, see section <a href="#st_005fvolcano">st_volcano</a></dt>
 
38792
<dt> <b>st-volcano-growing</b> &rarr; <code>st_volcano_new</code>, see section <a href="#st_005fvolcano">st_volcano</a></dt>
 
38793
<dt> <b>st-volcano_inactive</b> &rarr; <code>st_volcano_idle</code>, see section <a href="#st_005fvolcano">st_volcano</a></dt>
 
38794
<dt> <b>st-whiteballs</b> &rarr; <code>st_jamb_white</code>, see section <a href="#st_005fjamb">st_jamb</a></dt>
 
38795
<dt> <b>st-white1</b> &rarr; <code>st_passage_white_square</code>, see section <a href="#st_005fpassage">st_passage</a></dt>
 
38796
<dt> <b>st-white2</b> &rarr; <code>st_passage_white_slash</code>, see section <a href="#st_005fpassage">st_passage</a></dt>
 
38797
<dt> <b>st-white3</b> &rarr; <code>st_passage_white_cross</code>, see section <a href="#st_005fpassage">st_passage</a></dt>
 
38798
<dt> <b>st-white4</b> &rarr; <code>st_passage_white_frame</code>, see section <a href="#st_005fpassage">st_passage</a></dt>
 
38799
<dt> <b>st-window</b> &rarr; <a href="#st_005fwindow">st_window</a></dt>
 
38800
<dt> <b>st-wood</b> &rarr; <code>st_box_wood</code>, see section <a href="#st_005fbox">st_box</a></dt>
 
38801
<dt> <b>st-wood1</b> &rarr; <code>st_box_wood_h</code>, see section <a href="#st_005fbox">st_box</a></dt>
 
38802
<dt> <b>st-wood2</b> &rarr; <code>st_box_wood_v</code>, see section <a href="#st_005fbox">st_box</a></dt>
 
38803
<dt> <b>st-wood-growing</b> &rarr; <code>st_box_wood_growing</code>, see section <a href="#st_005fbox">st_box</a></dt>
 
38804
<dt> <b>st-wood_001</b> &rarr; <a href="#st_005fpanel">st_panel</a></dt>
 
38805
<dt> <b>st-woven</b> &rarr; <a href="#st_005fwoven">st_woven</a></dt>
 
38806
<dt> <b>st-yellow</b> &rarr; <a href="#st_005fyellow">st_yellow</a></dt>
 
38807
<dt> <b>st-yinyang1</b> &rarr; <code>st_blur_cross</code>, see section <a href="#st_005fblur">st_blur</a></dt>
 
38808
<dt> <b>st-yinyang2</b> &rarr; <code>st_blur_straight</code>, see section <a href="#st_005fblur">st_blur</a></dt>
 
38809
<dt> <b>st-yinyang3</b> &rarr; <code>st_blur_magic</code>, see section <a href="#st_005fblur">st_blur</a></dt>
 
38810
<dt> <b>st-3mirror</b> &rarr; <code>st_mirror_triangle_s</code>, see section <a href="#st_005fmirror">st_mirror</a></dt>
 
38811
</dl>
 
38812
<hr size="6">
 
38813
<a name="SEC_Contents"></a>
 
38814
<table cellpadding="1" cellspacing="1" border="0">
 
38815
<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
38816
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
38817
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
38818
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
38819
</tr></table>
 
38820
<h1>Table of Contents</h1>
 
38821
<div class="contents">
 
38822
 
 
38823
<ul class="toc">
 
38824
  <li><a name="toc-Running-Enigma-1" href="#Running-Enigma">1. Running Enigma</a>
 
38825
  <ul class="toc">
 
38826
    <li><a name="toc-Locating-Resources-1" href="#Locating-Resources">1.1 Locating Resources</a></li>
 
38827
    <li><a name="toc-Startup-Switches-1" href="#Startup-Switches">1.2 Startup Switches</a></li>
 
38828
    <li><a name="toc-User-Options-1" href="#User-Options">1.3 User Options</a></li>
 
38829
    <li><a name="toc-Inventory-Console-1" href="#Inventory-Console">1.4 Inventory Console</a></li>
 
38830
    <li><a name="toc-Level-Info-1" href="#Level-Info">1.5 Level Info</a>
 
38831
    <ul class="toc">
 
38832
      <li><a name="toc-Public-Ratings-1" href="#Public-Ratings">1.5.1 Public Ratings</a></li>
 
38833
      <li><a name="toc-Scores-1" href="#Scores">1.5.2 Scores</a></li>
 
38834
      <li><a name="toc-Versions-1" href="#Versions">1.5.3 Versions</a></li>
 
38835
      <li><a name="toc-Private-Annotations-and-Ratings-1" href="#Private-Annotations-and-Ratings">1.5.4 Private Annotations and Ratings</a></li>
 
38836
      <li><a name="toc-Screenshots-1" href="#Screenshots">1.5.5 Screenshots</a></li>
 
38837
    </ul></li>
 
38838
    <li><a name="toc-Handicap-and-PAR-1" href="#Handicap-and-PAR">1.6 Handicap and PAR</a></li>
 
38839
    <li><a name="toc-User-Sound-Sets-1" href="#User-Sound-Sets">1.7 User Sound Sets</a></li>
 
38840
  </ul></li>
 
38841
  <li><a name="toc-Levelpack-Basics-1" href="#Levelpack-Basics">2. Levelpack Basics</a>
 
38842
  <ul class="toc">
 
38843
    <li><a name="toc-Getting-Started-with-Levelpacks-1" href="#Getting-Started-with-Levelpacks">2.1 Getting Started with Levelpacks</a></li>
 
38844
    <li><a name="toc-Converting-0_002e92-Levelpacks-1" href="#Converting-0_002e92-Levelpacks">2.2 Converting 0.92 Levelpacks</a></li>
 
38845
    <li><a name="toc-Zip-Levelpacks-1" href="#Zip-Levelpacks">2.3 Zip Levelpacks</a></li>
 
38846
    <li><a name="toc-Grouping-and-Sorting-Levelpacks-1" href="#Grouping-and-Sorting-Levelpacks">2.4 Grouping and Sorting Levelpacks</a></li>
 
38847
    <li><a name="toc-Creating-New-Levelpacks-1" href="#Creating-New-Levelpacks">2.5 Creating New Levelpacks</a></li>
 
38848
    <li><a name="toc-Modifying-and-Deleting-Levelpacks-1" href="#Modifying-and-Deleting-Levelpacks">2.6 Modifying and Deleting Levelpacks</a></li>
 
38849
    <li><a name="toc-Composing-Levelpacks-1" href="#Composing-Levelpacks">2.7 Composing Levelpacks</a></li>
 
38850
  </ul></li>
 
38851
  <li><a name="toc-Level-Basics-1" href="#Level-Basics">3. Level Basics</a>
 
38852
  <ul class="toc">
 
38853
    <li><a name="toc-Getting-Started-with-Levels-1" href="#Getting-Started-with-Levels">3.1 Getting Started with Levels</a></li>
 
38854
    <li><a name="toc-XML-Level-structure-1" href="#XML-Level-structure">3.2 XML Level structure</a></li>
 
38855
    <li><a name="toc-Info-metadata-1" href="#Info-metadata">3.3 Info metadata</a>
 
38856
    <ul class="toc">
 
38857
      <li><a name="toc-_003cidentity_003e-1" href="#g_t_003cidentity_003e">3.3.1 &lt;identity&gt;</a></li>
 
38858
      <li><a name="toc-_003cversion_003e-1" href="#g_t_003cversion_003e">3.3.2 &lt;version&gt;</a></li>
 
38859
      <li><a name="toc-_003cauthor_003e-1" href="#g_t_003cauthor_003e">3.3.3 &lt;author&gt;</a></li>
 
38860
      <li><a name="toc-_003ccopyright_003e-1" href="#g_t_003ccopyright_003e">3.3.4 &lt;copyright&gt;</a></li>
 
38861
      <li><a name="toc-_003clicense_003e-1" href="#g_t_003clicense_003e">3.3.5 &lt;license&gt;</a></li>
 
38862
      <li><a name="toc-_003ccompatibility_003e-1" href="#g_t_003ccompatibility_003e">3.3.6 &lt;compatibility&gt;</a></li>
 
38863
      <li><a name="toc-_003cmodes_003e-1" href="#g_t_003cmodes_003e">3.3.7 &lt;modes&gt;</a></li>
 
38864
      <li><a name="toc-_003ccomments_003e-1" href="#g_t_003ccomments_003e">3.3.8 &lt;comments&gt;</a></li>
 
38865
      <li><a name="toc-_003cscore_003e-1" href="#g_t_003cscore_003e">3.3.9 &lt;score&gt;</a></li>
 
38866
    </ul></li>
 
38867
    <li><a name="toc-LUA-code-1" href="#LUA-code">3.4 LUA code</a></li>
 
38868
    <li><a name="toc-Internationalization-_0028i18n_0029-1" href="#Internationalization-_0028i18n_0029">3.5 Internationalization (i18n)</a></li>
 
38869
    <li><a name="toc-Usage-1" href="#Usage">3.6 Usage</a></li>
 
38870
    <li><a name="toc-Update-and-Upgrade-1" href="#Update-and-Upgrade">3.7 Update and Upgrade</a></li>
 
38871
    <li><a name="toc-Library-Files-1" href="#Library-Files">3.8 Library Files</a>
 
38872
    <ul class="toc">
 
38873
      <li><a name="toc-Writing-a-Library-1" href="#Writing-a-Library">3.8.1 Writing a Library</a></li>
 
38874
      <li><a name="toc-Maintaining-a-Library-1" href="#Maintaining-a-Library">3.8.2 Maintaining a Library</a></li>
 
38875
    </ul></li>
 
38876
    <li><a name="toc-Multilevel-Files-1" href="#Multilevel-Files">3.9 Multilevel Files</a></li>
 
38877
  </ul></li>
 
38878
  <li><a name="toc-Enigma-Paradigm-1" href="#Enigma-Paradigm">4. Enigma Paradigm</a>
 
38879
  <ul class="toc">
 
38880
    <li><a name="toc-The-World_0027s-Structure-1" href="#The-World_0027s-Structure">4.1 The World&rsquo;s Structure</a>
 
38881
    <ul class="toc">
 
38882
      <li><a name="toc-World_0027s-Shape-and-Coordinates-1" href="#World_0027s-Shape-and-Coordinates">4.1.1 World&rsquo;s Shape and Coordinates</a></li>
 
38883
      <li><a name="toc-Object-Layers-1" href="#Object-Layers">4.1.2 Object Layers</a></li>
 
38884
      <li><a name="toc-World-as-an-Object-1" href="#World-as-an-Object">4.1.3 World as an Object</a></li>
 
38885
      <li><a name="toc-Unpositioned-Objects-1" href="#Unpositioned-Objects">4.1.4 Unpositioned Objects</a></li>
 
38886
      <li><a name="toc-Player-and-Inventory-1" href="#Player-and-Inventory">4.1.5 Player and Inventory</a></li>
 
38887
      <li><a name="toc-Owned-Objects-1" href="#Owned-Objects">4.1.6 Owned Objects</a></li>
 
38888
    </ul></li>
 
38889
    <li><a name="toc-Object-Description-1" href="#Object-Description">4.2 Object Description</a>
 
38890
    <ul class="toc">
 
38891
      <li><a name="toc-Object-Kind-1" href="#Object-Kind">4.2.1 Object Kind</a></li>
 
38892
      <li><a name="toc-Object-Reference-1" href="#Object-Reference">4.2.2 Object Reference</a></li>
 
38893
      <li><a name="toc-Object-Naming-1" href="#Object-Naming">4.2.3 Object Naming</a></li>
 
38894
      <li><a name="toc-Object-Attributes-1" href="#Object-Attributes">4.2.4 Object Attributes</a></li>
 
38895
    </ul></li>
 
38896
    <li><a name="toc-Methods-of-Interaction-1" href="#Methods-of-Interaction">4.3 Methods of Interaction</a>
 
38897
    <ul class="toc">
 
38898
      <li><a name="toc-Messages-1" href="#Messages">4.3.1 Messages</a></li>
 
38899
      <li><a name="toc-Target-_002d-Action-1" href="#Target-_002d-Action">4.3.2 Target - Action</a></li>
 
38900
      <li><a name="toc-Callback-Function-1" href="#Callback-Function">4.3.3 Callback Function</a></li>
 
38901
      <li><a name="toc-Object-State-1" href="#Object-State">4.3.4 Object State</a></li>
 
38902
    </ul></li>
 
38903
    <li><a name="toc-The-Lifecycle-of-a-Level-1" href="#The-Lifecycle-of-a-Level">4.4 The Lifecycle of a Level</a>
 
38904
    <ul class="toc">
 
38905
      <li><a name="toc-Library-Preloading-1" href="#Library-Preloading">4.4.1 Library Preloading</a></li>
 
38906
      <li><a name="toc-Snapshot-Principle-1" href="#Snapshot-Principle">4.4.2 Snapshot Principle</a></li>
 
38907
      <li><a name="toc-Level-Initialization-1" href="#Level-Initialization">4.4.3 Level Initialization</a></li>
 
38908
      <li><a name="toc-Object-Transformation-1" href="#Object-Transformation">4.4.4 Object Transformation</a></li>
 
38909
      <li><a name="toc-Named-Positions-1" href="#Named-Positions">4.4.5 Named Positions</a></li>
 
38910
      <li><a name="toc-Callbacks-and-Load-Balancing-1" href="#Callbacks-and-Load-Balancing">4.4.6 Callbacks and Load Balancing</a></li>
 
38911
      <li><a name="toc-Level-Restart-1" href="#Level-Restart">4.4.7 Level Restart</a></li>
 
38912
      <li><a name="toc-Ending-Conditions-1" href="#Ending-Conditions">4.4.8 Ending Conditions</a></li>
 
38913
    </ul>
 
38914
</li>
 
38915
  </ul></li>
 
38916
  <li><a name="toc-Lua-API-1" href="#Lua-API">5. Lua API</a>
 
38917
  <ul class="toc">
 
38918
    <li><a name="toc-Basic-Lua-Examples-1" href="#Basic-Lua-Examples">5.1 Basic Lua Examples</a>
 
38919
    <ul class="toc">
 
38920
      <li><a name="toc-Basic-Example-1" href="#Basic-Example">5.1.1 Basic Example</a></li>
 
38921
      <li><a name="toc-Colored-Turnstiles-1" href="#Colored-Turnstiles">5.1.2 Colored Turnstiles</a></li>
 
38922
    </ul></li>
 
38923
    <li><a name="toc-API-2-Overview-1" href="#API-2-Overview">5.2 API 2 Overview</a>
 
38924
    <ul class="toc">
 
38925
      <li><a name="toc-Types-Overview-1" href="#Types-Overview">5.2.1 Types Overview</a></li>
 
38926
      <li><a name="toc-Position-Tasks-1" href="#Position-Tasks">5.2.2 Position Tasks</a></li>
 
38927
      <li><a name="toc-Attribute-Tasks-1" href="#Attribute-Tasks">5.2.3 Attribute Tasks</a></li>
 
38928
      <li><a name="toc-Object-Tasks-1" href="#Object-Tasks">5.2.4 Object Tasks</a></li>
 
38929
      <li><a name="toc-Group-Tasks-1" href="#Group-Tasks">5.2.5 Group Tasks</a></li>
 
38930
      <li><a name="toc-Tiles-and-World-Tasks-1" href="#Tiles-and-World-Tasks">5.2.6 Tiles and World Tasks</a></li>
 
38931
      <li><a name="toc-Named-Positions-Tasks-1" href="#Named-Positions-Tasks">5.2.7 Named Positions Tasks</a></li>
 
38932
    </ul></li>
 
38933
    <li><a name="toc-Advanced-Lua-Examples-1" href="#Advanced-Lua-Examples">5.3 Advanced Lua Examples</a>
 
38934
    <ul class="toc">
 
38935
      <li><a name="toc-Color-Maze-1" href="#Color-Maze">5.3.1 Color Maze</a></li>
 
38936
      <li><a name="toc-Weirdly-Wired-1" href="#Weirdly-Wired">5.3.2 Weirdly Wired</a></li>
 
38937
    </ul></li>
 
38938
    <li><a name="toc-Introduction-to-Datatypes-1" href="#Introduction-to-Datatypes">5.4 Introduction to Datatypes</a>
 
38939
    <ul class="toc">
 
38940
      <li><a name="toc-Syntax-and-Conventions-1" href="#Syntax-and-Conventions">5.4.1 Syntax and Conventions</a></li>
 
38941
      <li><a name="toc-Value-and-Reference-1" href="#Value-and-Reference">5.4.2 Value and Reference</a></li>
 
38942
      <li><a name="toc-Polymorphism-and-Overloading-1" href="#Polymorphism-and-Overloading">5.4.3 Polymorphism and Overloading</a></li>
 
38943
      <li><a name="toc-Pseudo-Datatypes-1" href="#Pseudo-Datatypes">5.4.4 Pseudo Datatypes</a></li>
 
38944
    </ul></li>
 
38945
    <li><a name="toc-Position-1" href="#Position">5.5 Position</a>
 
38946
    <ul class="toc">
 
38947
      <li><a name="toc-Position-Addition-and-Subtraction-1" href="#Position-Addition-and-Subtraction">5.5.1 Position Addition and Subtraction</a></li>
 
38948
      <li><a name="toc-Position-Multiplication-and-Division-1" href="#Position-Multiplication-and-Division">5.5.2 Position Multiplication and Division</a></li>
 
38949
      <li><a name="toc-Position-Sign-1" href="#Position-Sign">5.5.3 Position Sign</a></li>
 
38950
      <li><a name="toc-Position-Center-1" href="#Position-Center">5.5.4 Position Center</a></li>
 
38951
      <li><a name="toc-Position-Comparison-1" href="#Position-Comparison">5.5.5 Position Comparison</a></li>
 
38952
      <li><a name="toc-Position-Concatenation-1" href="#Position-Concatenation">5.5.6 Position Concatenation</a></li>
 
38953
      <li><a name="toc-Position-Coordinate-Access-1" href="#Position-Coordinate-Access">5.5.7 Position Coordinate Access</a></li>
 
38954
      <li><a name="toc-Position-Grid-Rounding-1" href="#Position-Grid-Rounding">5.5.8 Position Grid Rounding</a></li>
 
38955
      <li><a name="toc-Position-Existence-1" href="#Position-Existence">5.5.9 Position Existence</a></li>
 
38956
    </ul></li>
 
38957
    <li><a name="toc-Object-1" href="#Object">5.6 Object</a>
 
38958
    <ul class="toc">
 
38959
      <li><a name="toc-Object-Attribute-Access-1" href="#Object-Attribute-Access">5.6.1 Object Attribute Access</a></li>
 
38960
      <li><a name="toc-Object-Messaging-1" href="#Object-Messaging">5.6.2 Object Messaging</a></li>
 
38961
      <li><a name="toc-Object-Comparison-1" href="#Object-Comparison">5.6.3 Object Comparison</a></li>
 
38962
      <li><a name="toc-Object-Existence-1" href="#Object-Existence">5.6.4 Object Existence</a></li>
 
38963
      <li><a name="toc-Object-Kill-1" href="#Object-Kill">5.6.5 Object Kill</a></li>
 
38964
      <li><a name="toc-Object-Kind-Check-1" href="#Object-Kind-Check">5.6.6 Object Kind Check</a></li>
 
38965
      <li><a name="toc-Object-Coordinate-Access-1" href="#Object-Coordinate-Access">5.6.7 Object Coordinate Access</a></li>
 
38966
      <li><a name="toc-Object-Addition-and-Subtraction-1" href="#Object-Addition-and-Subtraction">5.6.8 Object Addition and Subtraction</a></li>
 
38967
      <li><a name="toc-Object-Center-1" href="#Object-Center">5.6.9 Object Center</a></li>
 
38968
      <li><a name="toc-Object-Join-1" href="#Object-Join">5.6.10 Object Join</a></li>
 
38969
      <li><a name="toc-Object-Intersection-1" href="#Object-Intersection">5.6.11 Object Intersection</a></li>
 
38970
      <li><a name="toc-Object-Difference-1" href="#Object-Difference">5.6.12 Object Difference</a></li>
 
38971
      <li><a name="toc-Object-Sound-1" href="#Object-Sound">5.6.13 Object Sound</a></li>
 
38972
    </ul></li>
 
38973
    <li><a name="toc-Group-1" href="#Group">5.7 Group</a>
 
38974
    <ul class="toc">
 
38975
      <li><a name="toc-Group-Messaging-1" href="#Group-Messaging">5.7.1 Group Messaging</a></li>
 
38976
      <li><a name="toc-Group-Attribute-Write-1" href="#Group-Attribute-Write">5.7.2 Group Attribute Write</a></li>
 
38977
      <li><a name="toc-Group-Comparison-1" href="#Group-Comparison">5.7.3 Group Comparison</a></li>
 
38978
      <li><a name="toc-Group-Length-1" href="#Group-Length">5.7.4 Group Length</a></li>
 
38979
      <li><a name="toc-Group-Member-Access-1" href="#Group-Member-Access">5.7.5 Group Member Access</a></li>
 
38980
      <li><a name="toc-Group-Loop-1" href="#Group-Loop">5.7.6 Group Loop</a></li>
 
38981
      <li><a name="toc-Group-Join-1" href="#Group-Join">5.7.7 Group Join</a></li>
 
38982
      <li><a name="toc-Group-Intersection-1" href="#Group-Intersection">5.7.8 Group Intersection</a></li>
 
38983
      <li><a name="toc-Group-Difference-1" href="#Group-Difference">5.7.9 Group Difference</a></li>
 
38984
      <li><a name="toc-Group-Shuffle-1" href="#Group-Shuffle">5.7.10 Group Shuffle</a></li>
 
38985
      <li><a name="toc-Group-Sorting-1" href="#Group-Sorting">5.7.11 Group Sorting</a></li>
 
38986
      <li><a name="toc-Group-Subset-1" href="#Group-Subset">5.7.12 Group Subset</a></li>
 
38987
      <li><a name="toc-Group-Nearest-Object-1" href="#Group-Nearest-Object">5.7.13 Group Nearest Object</a></li>
 
38988
    </ul></li>
 
38989
    <li><a name="toc-NamedObjects-1" href="#NamedObjects">5.8 NamedObjects</a>
 
38990
    <ul class="toc">
 
38991
      <li><a name="toc-NamedObjects-Repository-Request-1" href="#NamedObjects-Repository-Request">5.8.1 NamedObjects Repository Request</a></li>
 
38992
      <li><a name="toc-NamedObjects-Object-Naming-1" href="#NamedObjects-Object-Naming">5.8.2 NamedObjects Object Naming</a></li>
 
38993
    </ul></li>
 
38994
    <li><a name="toc-PositionList-1" href="#PositionList">5.9 PositionList</a>
 
38995
    <ul class="toc">
 
38996
      <li><a name="toc-PositionList-Comparison-1" href="#PositionList-Comparison">5.9.1 PositionList Comparison</a></li>
 
38997
      <li><a name="toc-PositionList-Length-1" href="#PositionList-Length">5.9.2 PositionList Length</a></li>
 
38998
      <li><a name="toc-PositionList-Member-Access-1" href="#PositionList-Member-Access">5.9.3 PositionList Member Access</a></li>
 
38999
      <li><a name="toc-PositionList-Concatenation-1" href="#PositionList-Concatenation">5.9.4 PositionList Concatenation</a></li>
 
39000
      <li><a name="toc-PositionList-Translation-1" href="#PositionList-Translation">5.9.5 PositionList Translation</a></li>
 
39001
      <li><a name="toc-PositionList-Stretching-1" href="#PositionList-Stretching">5.9.6 PositionList Stretching</a></li>
 
39002
    </ul></li>
 
39003
    <li><a name="toc-Positions-Repository-1" href="#Positions-Repository">5.10 Positions Repository</a>
 
39004
    <ul class="toc">
 
39005
      <li><a name="toc-Positions-Repository-Request-1" href="#Positions-Repository-Request">5.10.1 Positions Repository Request</a></li>
 
39006
      <li><a name="toc-Positions-Repository-Storage-1" href="#Positions-Repository-Storage">5.10.2 Positions Repository Storage</a></li>
 
39007
      <li><a name="toc-Position-Conversion-1" href="#Position-Conversion">5.10.3 Position Conversion</a></li>
 
39008
      <li><a name="toc-PositionList-Conversion-1" href="#PositionList-Conversion">5.10.4 PositionList Conversion</a></li>
 
39009
    </ul></li>
 
39010
    <li><a name="toc-Tile-and-Object-Declaration-1" href="#Tile-and-Object-Declaration">5.11 Tile and Object Declaration</a>
 
39011
    <ul class="toc">
 
39012
      <li><a name="toc-Tile-concat-1" href="#Tile-concat">5.11.1 Tile concat</a></li>
 
39013
    </ul></li>
 
39014
    <li><a name="toc-Tiles-Repository-1" href="#Tiles-Repository">5.12 Tiles Repository</a>
 
39015
    <ul class="toc">
 
39016
      <li><a name="toc-Tiles-Storage-1" href="#Tiles-Storage">5.12.1 Tiles Storage</a></li>
 
39017
      <li><a name="toc-Tiles-Request-1" href="#Tiles-Request">5.12.2 Tiles Request</a></li>
 
39018
      <li><a name="toc-Tile-Conversion-1" href="#Tile-Conversion">5.12.3 Tile Conversion</a></li>
 
39019
    </ul></li>
 
39020
    <li><a name="toc-World-1" href="#World">5.13 World</a>
 
39021
    <ul class="toc">
 
39022
      <li><a name="toc-World-Creation-1" href="#World-Creation">5.13.1 World Creation</a></li>
 
39023
      <li><a name="toc-World-Tile-Set-1" href="#World-Tile-Set">5.13.2 World Tile Set</a></li>
 
39024
      <li><a name="toc-Global-Attribute-Set-1" href="#Global-Attribute-Set">5.13.3 Global Attribute Set</a></li>
 
39025
      <li><a name="toc-Global-Attribute-Get-1" href="#Global-Attribute-Get">5.13.4 Global Attribute Get</a></li>
 
39026
      <li><a name="toc-add-1" href="#add">5.13.5 add</a></li>
 
39027
      <li><a name="toc-drawBorder-1" href="#drawBorder">5.13.6 drawBorder</a></li>
 
39028
      <li><a name="toc-drawMap-1" href="#drawMap">5.13.7 drawMap</a></li>
 
39029
      <li><a name="toc-drawRect-1" href="#drawRect">5.13.8 drawRect</a></li>
 
39030
      <li><a name="toc-world-floor-1" href="#world-floor">5.13.9 world floor</a></li>
 
39031
      <li><a name="toc-world-item-1" href="#world-item">5.13.10 world item</a></li>
 
39032
      <li><a name="toc-shuffleOxyd-1" href="#shuffleOxyd">5.13.11 shuffleOxyd</a></li>
 
39033
      <li><a name="toc-world-stone-1" href="#world-stone">5.13.12 world stone</a></li>
 
39034
    </ul></li>
 
39035
    <li><a name="toc-Functions-1" href="#Functions">5.14 Functions</a>
 
39036
    <ul class="toc">
 
39037
      <li><a name="toc-assert_005fbool-1" href="#assert_005fbool">5.14.1 assert_bool</a></li>
 
39038
      <li><a name="toc-assert_005ftype-1" href="#assert_005ftype">5.14.2 assert_type</a></li>
 
39039
      <li><a name="toc-cond-1" href="#cond">5.14.3 cond</a></li>
 
39040
      <li><a name="toc-etype-1" href="#etype">5.14.4 etype</a></li>
 
39041
      <li><a name="toc-fl-1" href="#fl">5.14.5 fl</a></li>
 
39042
      <li><a name="toc-grp-1" href="#grp">5.14.6 grp</a></li>
 
39043
      <li><a name="toc-it-1" href="#it">5.14.7 it</a></li>
 
39044
      <li><a name="toc-ORI2DIR-1" href="#ORI2DIR">5.14.8 ORI2DIR</a></li>
 
39045
      <li><a name="toc-random-1" href="#random">5.14.9 random</a></li>
 
39046
      <li><a name="toc-st-1" href="#st">5.14.10 st</a></li>
 
39047
      <li><a name="toc-usertype-1" href="#usertype">5.14.11 usertype</a></li>
 
39048
    </ul>
 
39049
</li>
 
39050
  </ul></li>
 
39051
  <li><a name="toc-Common-Attributes-and-Messages-1" href="#Common-Attributes-and-Messages">6. Common Attributes and Messages</a>
 
39052
  <ul class="toc">
 
39053
    <li><a name="toc-Common-Attributes-1" href="#Common-Attributes">6.1 Common Attributes</a>
 
39054
    <ul class="toc">
 
39055
      <li><a name="toc-name-1" href="#name">6.1.1 name</a></li>
 
39056
      <li><a name="toc-state-1" href="#state">6.1.2 state</a></li>
 
39057
      <li><a name="toc-target-1" href="#target">6.1.3 target</a></li>
 
39058
      <li><a name="toc-action-1" href="#action">6.1.4 action</a></li>
 
39059
      <li><a name="toc-nopaction-1" href="#nopaction">6.1.5 nopaction</a></li>
 
39060
      <li><a name="toc-safeaction-1" href="#safeaction">6.1.6 safeaction</a></li>
 
39061
      <li><a name="toc-inverse-1" href="#inverse">6.1.7 inverse</a></li>
 
39062
      <li><a name="toc-destination-1" href="#destination">6.1.8 destination</a></li>
 
39063
      <li><a name="toc-friction-1" href="#friction">6.1.9 friction</a></li>
 
39064
      <li><a name="toc-adhesion-1" href="#adhesion">6.1.10 adhesion</a></li>
 
39065
      <li><a name="toc-checkerboard-1" href="#checkerboard">6.1.11 checkerboard</a></li>
 
39066
      <li><a name="toc-rubbers-1" href="#rubbers">6.1.12 rubbers</a></li>
 
39067
      <li><a name="toc-wires-1" href="#wires">6.1.13 wires</a></li>
 
39068
      <li><a name="toc-fellows-1" href="#fellows">6.1.14 fellows</a></li>
 
39069
    </ul></li>
 
39070
    <li><a name="toc-Common-Messages-1" href="#Common-Messages">6.2 Common Messages</a>
 
39071
    <ul class="toc">
 
39072
      <li><a name="toc-toggle-1" href="#toggle">6.2.1 toggle</a></li>
 
39073
      <li><a name="toc-nop-1" href="#nop">6.2.2 nop</a></li>
 
39074
      <li><a name="toc-signal-1" href="#signal">6.2.3 signal</a></li>
 
39075
      <li><a name="toc-on-1" href="#on">6.2.4 on</a></li>
 
39076
      <li><a name="toc-off-1" href="#off">6.2.5 off</a></li>
 
39077
      <li><a name="toc-open-1" href="#open">6.2.6 open</a></li>
 
39078
      <li><a name="toc-close-1" href="#close">6.2.7 close</a></li>
 
39079
      <li><a name="toc-ignite-1" href="#ignite">6.2.8 ignite</a></li>
 
39080
      <li><a name="toc-heat-1" href="#heat">6.2.9 heat</a></li>
 
39081
      <li><a name="toc-setfire-1" href="#setfire">6.2.10 setfire</a></li>
 
39082
      <li><a name="toc-kill-1" href="#kill">6.2.11 kill</a></li>
 
39083
      <li><a name="toc-sound-1" href="#sound">6.2.12 sound</a></li>
 
39084
      <li><a name="toc-disconnect-1" href="#disconnect">6.2.13 disconnect</a></li>
 
39085
    </ul></li>
 
39086
    <li><a name="toc-Common-Constants-1" href="#Common-Constants">6.3 Common Constants</a>
 
39087
    <ul class="toc">
 
39088
      <li><a name="toc-state-values-1" href="#state-values">6.3.1 state values</a></li>
 
39089
      <li><a name="toc-color-values-1" href="#color-values">6.3.2 color values</a></li>
 
39090
      <li><a name="toc-actor-controllers-1" href="#actor-controllers">6.3.3 actor controllers</a></li>
 
39091
      <li><a name="toc-oxyd-colors-1" href="#oxyd-colors">6.3.4 oxyd colors</a></li>
 
39092
      <li><a name="toc-orientations-1" href="#orientations">6.3.5 orientations</a></li>
 
39093
      <li><a name="toc-direction-offsets-1" href="#direction-offsets">6.3.6 direction offsets</a></li>
 
39094
      <li><a name="toc-position-lists-1" href="#position-lists">6.3.7 position lists</a></li>
 
39095
      <li><a name="toc-essentialness-1" href="#essentialness">6.3.8 essentialness</a></li>
 
39096
      <li><a name="toc-meditation-types-1" href="#meditation-types">6.3.9 meditation types</a></li>
 
39097
      <li><a name="toc-glasses-abilities-1" href="#glasses-abilities">6.3.10 glasses abilities</a></li>
 
39098
      <li><a name="toc-coinslot-acceptance-1" href="#coinslot-acceptance">6.3.11 coinslot acceptance</a></li>
 
39099
      <li><a name="toc-rubberband-length-1" href="#rubberband-length">6.3.12 rubberband length</a></li>
 
39100
      <li><a name="toc-subsoil-kind-1" href="#subsoil-kind">6.3.13 subsoil kind</a></li>
 
39101
      <li><a name="toc-screen-scrolling-1" href="#screen-scrolling">6.3.14 screen scrolling</a></li>
 
39102
      <li><a name="toc-map-read-directions-1" href="#map-read-directions">6.3.15 map read directions</a></li>
 
39103
    </ul></li>
 
39104
    <li><a name="toc-Global-Attributes-1" href="#Global-Attributes">6.4 Global Attributes</a>
 
39105
    <ul class="toc">
 
39106
      <li><a name="toc-ActorimpulseStrength-1" href="#ActorimpulseStrength">6.4.1 ActorimpulseStrength</a></li>
 
39107
      <li><a name="toc-AllowSingleOxyds-1" href="#AllowSingleOxyds">6.4.2 AllowSingleOxyds</a></li>
 
39108
      <li><a name="toc-AllowSuicide-1" href="#AllowSuicide">6.4.3 AllowSuicide</a></li>
 
39109
      <li><a name="toc-AutoRespawn-1" href="#AutoRespawn">6.4.4 AutoRespawn</a></li>
 
39110
      <li><a name="toc-ConserveLevel-1" href="#ConserveLevel">6.4.5 ConserveLevel</a></li>
 
39111
      <li><a name="toc-CrackSpreading-1" href="#CrackSpreading">6.4.6 CrackSpreading</a></li>
 
39112
      <li><a name="toc-CreatingPreview-1" href="#CreatingPreview">6.4.7 CreatingPreview</a></li>
 
39113
      <li><a name="toc-ElectricStrength-1" href="#ElectricStrength">6.4.8 ElectricStrength</a></li>
 
39114
      <li><a name="toc-ExtralifeGlasses-1" href="#ExtralifeGlasses">6.4.9 ExtralifeGlasses</a></li>
 
39115
      <li><a name="toc-FallenPuzzle-1" href="#FallenPuzzle">6.4.10 FallenPuzzle</a></li>
 
39116
      <li><a name="toc-FollowAction-1" href="#FollowAction">6.4.11 FollowAction</a></li>
 
39117
      <li><a name="toc-FollowGrid-1" href="#FollowGrid">6.4.12 FollowGrid</a></li>
 
39118
      <li><a name="toc-FollowMethod-1" href="#FollowMethod">6.4.13 FollowMethod</a></li>
 
39119
      <li><a name="toc-FollowThreshold-1" href="#FollowThreshold">6.4.14 FollowThreshold</a></li>
 
39120
      <li><a name="toc-Fragility-1" href="#Fragility">6.4.15 Fragility</a></li>
 
39121
      <li><a name="toc-FrictionStrength-1" href="#FrictionStrength">6.4.16 FrictionStrength</a></li>
 
39122
      <li><a name="toc-GlobalForce-1" href="#GlobalForce">6.4.17 GlobalForce</a></li>
 
39123
      <li><a name="toc-Height-1" href="#Height">6.4.18 Height</a></li>
 
39124
      <li><a name="toc-InfiniteReincarnation-1" href="#InfiniteReincarnation">6.4.19 InfiniteReincarnation</a></li>
 
39125
      <li><a name="toc-IsDifficult-1" href="#IsDifficult">6.4.20 IsDifficult</a></li>
 
39126
      <li><a name="toc-MagnetRange-1" href="#MagnetRange">6.4.21 MagnetRange</a></li>
 
39127
      <li><a name="toc-MagnetStrength-1" href="#MagnetStrength">6.4.22 MagnetStrength</a></li>
 
39128
      <li><a name="toc-MaxOxydColor-1" href="#MaxOxydColor">6.4.23 MaxOxydColor</a></li>
 
39129
      <li><a name="toc-MeditationStrength-1" href="#MeditationStrength">6.4.24 MeditationStrength</a></li>
 
39130
      <li><a name="toc-ProvideExtralifes-1" href="#ProvideExtralifes">6.4.25 ProvideExtralifes</a></li>
 
39131
      <li><a name="toc-RubberViolationStrength-1" href="#RubberViolationStrength">6.4.26 RubberViolationStrength</a></li>
 
39132
      <li><a name="toc-ShowMoves-1" href="#ShowMoves">6.4.27 ShowMoves</a></li>
 
39133
      <li><a name="toc-SlopeStrength-1" href="#SlopeStrength">6.4.28 SlopeStrength</a></li>
 
39134
      <li><a name="toc-SublevelNumber-1" href="#SublevelNumber">6.4.29 SublevelNumber</a></li>
 
39135
      <li><a name="toc-SublevelTitle-1" href="#SublevelTitle">6.4.30 SublevelTitle</a></li>
 
39136
      <li><a name="toc-SubSoil-1" href="#SubSoil">6.4.31 SubSoil</a></li>
 
39137
      <li><a name="toc-SurviveFinish-1" href="#SurviveFinish">6.4.32 SurviveFinish</a></li>
 
39138
      <li><a name="toc-SwampSinkTime-1" href="#SwampSinkTime">6.4.33 SwampSinkTime</a></li>
 
39139
      <li><a name="toc-WaterSinkTime-1" href="#WaterSinkTime">6.4.34 WaterSinkTime</a></li>
 
39140
      <li><a name="toc-Width-1" href="#Width">6.4.35 Width</a></li>
 
39141
      <li><a name="toc-WormholeRange-1" href="#WormholeRange">6.4.36 WormholeRange</a></li>
 
39142
      <li><a name="toc-WormholeStrength-1" href="#WormholeStrength">6.4.37 WormholeStrength</a></li>
 
39143
    </ul>
 
39144
</li>
 
39145
  </ul></li>
 
39146
  <li><a name="toc-Floor-Objects-1" href="#Floor-Objects">7. Floor Objects</a>
 
39147
  <ul class="toc">
 
39148
    <li><a name="toc-Floor-Overview-1" href="#Floor-Overview">7.1 Floor Overview</a></li>
 
39149
    <li><a name="toc-Floor-Attributes-1" href="#Floor-Attributes">7.2 Floor Attributes</a>
 
39150
    <ul class="toc">
 
39151
      <li><a name="toc-adhesion-_0028floor_0029-1" href="#adhesion-_0028floor_0029">7.2.1 adhesion (floor)</a></li>
 
39152
      <li><a name="toc-burnable-1" href="#burnable">7.2.2 burnable</a></li>
 
39153
      <li><a name="toc-eternal-1" href="#eternal">7.2.3 eternal</a></li>
 
39154
      <li><a name="toc-faces-_0028floor_0029-1" href="#faces-_0028floor_0029">7.2.4 faces (floor)</a></li>
 
39155
      <li><a name="toc-fastfire-1" href="#fastfire">7.2.5 fastfire</a></li>
 
39156
      <li><a name="toc-floodable-1" href="#floodable">7.2.6 floodable</a></li>
 
39157
      <li><a name="toc-force_005fx-1" href="#force_005fx">7.2.7 force_x</a></li>
 
39158
      <li><a name="toc-force_005fy-1" href="#force_005fy">7.2.8 force_y</a></li>
 
39159
      <li><a name="toc-fragility-_0028floor_0029-1" href="#fragility-_0028floor_0029">7.2.9 fragility (floor)</a></li>
 
39160
      <li><a name="toc-freeze_005fcheck-_0028floor_0029-1" href="#freeze_005fcheck-_0028floor_0029">7.2.10 freeze_check (floor)</a></li>
 
39161
      <li><a name="toc-friction-_0028floor_0029-1" href="#friction-_0028floor_0029">7.2.11 friction (floor)</a></li>
 
39162
      <li><a name="toc-ignitable-1" href="#ignitable">7.2.12 ignitable</a></li>
 
39163
      <li><a name="toc-indestructible-1" href="#indestructible">7.2.13 indestructible</a></li>
 
39164
      <li><a name="toc-initfire-1" href="#initfire">7.2.14 initfire</a></li>
 
39165
      <li><a name="toc-noash-1" href="#noash">7.2.15 noash</a></li>
 
39166
      <li><a name="toc-push_005fdirections-1" href="#push_005fdirections">7.2.16 push_directions</a></li>
 
39167
      <li><a name="toc-secure-1" href="#secure">7.2.17 secure</a></li>
 
39168
      <li><a name="toc-texture-1" href="#texture">7.2.18 texture</a></li>
 
39169
    </ul></li>
 
39170
    <li><a name="toc-Standard-Floors-1" href="#Standard-Floors">7.3 Standard Floors</a>
 
39171
    <ul class="toc">
 
39172
      <li><a name="toc-fl_005fadhesionless-1" href="#fl_005fadhesionless">7.3.1 fl_adhesionless</a></li>
 
39173
      <li><a name="toc-fl_005faquamarine-1" href="#fl_005faquamarine">7.3.2 fl_aquamarine</a></li>
 
39174
      <li><a name="toc-fl_005fbast-1" href="#fl_005fbast">7.3.3 fl_bast</a></li>
 
39175
      <li><a name="toc-fl_005fbluegray-1" href="#fl_005fbluegray">7.3.4 fl_bluegray</a></li>
 
39176
      <li><a name="toc-fl_005fbluegreen-1" href="#fl_005fbluegreen">7.3.5 fl_bluegreen</a></li>
 
39177
      <li><a name="toc-fl_005fblueslab-1" href="#fl_005fblueslab">7.3.6 fl_blueslab</a></li>
 
39178
      <li><a name="toc-fl_005fbrick-1" href="#fl_005fbrick">7.3.7 fl_brick</a></li>
 
39179
      <li><a name="toc-fl_005fbright-1" href="#fl_005fbright">7.3.8 fl_bright</a></li>
 
39180
      <li><a name="toc-fl_005fconcrete-1" href="#fl_005fconcrete">7.3.9 fl_concrete</a></li>
 
39181
      <li><a name="toc-fl_005fdark-1" href="#fl_005fdark">7.3.10 fl_dark</a></li>
 
39182
      <li><a name="toc-fl_005fdarkgray-1" href="#fl_005fdarkgray">7.3.11 fl_darkgray</a></li>
 
39183
      <li><a name="toc-fl_005fdunes-1" href="#fl_005fdunes">7.3.12 fl_dunes</a></li>
 
39184
      <li><a name="toc-fl_005fgravel-1" href="#fl_005fgravel">7.3.13 fl_gravel</a></li>
 
39185
      <li><a name="toc-fl_005fgray-1" href="#fl_005fgray">7.3.14 fl_gray</a></li>
 
39186
      <li><a name="toc-fl_005fhimalaya-1" href="#fl_005fhimalaya">7.3.15 fl_himalaya</a></li>
 
39187
      <li><a name="toc-fl_005fivory-1" href="#fl_005fivory">7.3.16 fl_ivory</a></li>
 
39188
      <li><a name="toc-fl_005flawn-1" href="#fl_005flawn">7.3.17 fl_lawn</a></li>
 
39189
      <li><a name="toc-fl_005fmarble-1" href="#fl_005fmarble">7.3.18 fl_marble</a></li>
 
39190
      <li><a name="toc-fl_005fmetal-1" href="#fl_005fmetal">7.3.19 fl_metal</a></li>
 
39191
      <li><a name="toc-fl_005fmortar-1" href="#fl_005fmortar">7.3.20 fl_mortar</a></li>
 
39192
      <li><a name="toc-fl_005fpinkbumps-1" href="#fl_005fpinkbumps">7.3.21 fl_pinkbumps</a></li>
 
39193
      <li><a name="toc-fl_005fplank-1" href="#fl_005fplank">7.3.22 fl_plank</a></li>
 
39194
      <li><a name="toc-fl_005fplatinum-1" href="#fl_005fplatinum">7.3.23 fl_platinum</a></li>
 
39195
      <li><a name="toc-fl_005fred-1" href="#fl_005fred">7.3.24 fl_red</a></li>
 
39196
      <li><a name="toc-fl_005fredslab-1" href="#fl_005fredslab">7.3.25 fl_redslab</a></li>
 
39197
      <li><a name="toc-fl_005frough-1" href="#fl_005frough">7.3.26 fl_rough</a></li>
 
39198
      <li><a name="toc-fl_005fsahara-1" href="#fl_005fsahara">7.3.27 fl_sahara</a></li>
 
39199
      <li><a name="toc-fl_005fsamba-1" href="#fl_005fsamba">7.3.28 fl_samba</a></li>
 
39200
      <li><a name="toc-fl_005fsand-1" href="#fl_005fsand">7.3.29 fl_sand</a></li>
 
39201
      <li><a name="toc-fl_005fspace-1" href="#fl_005fspace">7.3.30 fl_space</a></li>
 
39202
      <li><a name="toc-fl_005fstone-1" href="#fl_005fstone">7.3.31 fl_stone</a></li>
 
39203
      <li><a name="toc-fl_005ftigris-1" href="#fl_005ftigris">7.3.32 fl_tigris</a></li>
 
39204
      <li><a name="toc-fl_005fwhite-1" href="#fl_005fwhite">7.3.33 fl_white</a></li>
 
39205
      <li><a name="toc-fl_005fwoven-1" href="#fl_005fwoven">7.3.34 fl_woven</a></li>
 
39206
    </ul></li>
 
39207
    <li><a name="toc-Special-Floors-1" href="#Special-Floors">7.4 Special Floors</a>
 
39208
    <ul class="toc">
 
39209
      <li><a name="toc-fl_005fabyss-1" href="#fl_005fabyss">7.4.1 fl_abyss</a></li>
 
39210
      <li><a name="toc-fl_005fbridge-1" href="#fl_005fbridge">7.4.2 fl_bridge</a></li>
 
39211
      <li><a name="toc-fl_005ffake-1" href="#fl_005ffake">7.4.3 fl_fake</a></li>
 
39212
      <li><a name="toc-fl_005fhay-1" href="#fl_005fhay">7.4.4 fl_hay</a></li>
 
39213
      <li><a name="toc-fl_005fice-1" href="#fl_005fice">7.4.5 fl_ice</a></li>
 
39214
      <li><a name="toc-fl_005finverse-1" href="#fl_005finverse">7.4.6 fl_inverse</a></li>
 
39215
      <li><a name="toc-fl_005frock-1" href="#fl_005frock">7.4.7 fl_rock</a></li>
 
39216
      <li><a name="toc-fl_005fscales-1" href="#fl_005fscales">7.4.8 fl_scales</a></li>
 
39217
      <li><a name="toc-fl_005fslope-1" href="#fl_005fslope">7.4.9 fl_slope</a></li>
 
39218
      <li><a name="toc-fl_005fswamp-1" href="#fl_005fswamp">7.4.10 fl_swamp</a></li>
 
39219
      <li><a name="toc-fl_005fthief-1" href="#fl_005fthief">7.4.11 fl_thief</a></li>
 
39220
      <li><a name="toc-fl_005fwater-1" href="#fl_005fwater">7.4.12 fl_water</a></li>
 
39221
      <li><a name="toc-fl_005fwood-1" href="#fl_005fwood">7.4.13 fl_wood</a></li>
 
39222
      <li><a name="toc-fl_005fyinyang-1" href="#fl_005fyinyang">7.4.14 fl_yinyang</a></li>
 
39223
    </ul>
 
39224
</li>
 
39225
  </ul></li>
 
39226
  <li><a name="toc-Item-Objects-1" href="#Item-Objects">8. Item Objects</a>
 
39227
  <ul class="toc">
 
39228
    <li><a name="toc-Item-Overview-1" href="#Item-Overview">8.1 Item Overview</a></li>
 
39229
    <li><a name="toc-Item-Attributes-1" href="#Item-Attributes">8.2 Item Attributes</a>
 
39230
    <ul class="toc">
 
39231
      <li><a name="toc-fireproof-1" href="#fireproof">8.2.1 fireproof</a></li>
 
39232
      <li><a name="toc-freezable-1" href="#freezable">8.2.2 freezable</a></li>
 
39233
      <li><a name="toc-liftable-1" href="#liftable">8.2.3 liftable</a></li>
 
39234
      <li><a name="toc-portable-1" href="#portable">8.2.4 portable</a></li>
 
39235
    </ul></li>
 
39236
    <li><a name="toc-Liftable-Items-1" href="#Liftable-Items">8.3 Liftable Items</a>
 
39237
    <ul class="toc">
 
39238
      <li><a name="toc-it_005fbag-1" href="#it_005fbag">8.3.1 it_bag</a></li>
 
39239
      <li><a name="toc-it_005fbanana-1" href="#it_005fbanana">8.3.2 it_banana</a></li>
 
39240
      <li><a name="toc-it_005fbottle-1" href="#it_005fbottle">8.3.3 it_bottle</a></li>
 
39241
      <li><a name="toc-it_005fbrake-1" href="#it_005fbrake">8.3.4 it_brake</a></li>
 
39242
      <li><a name="toc-it_005fbrush-1" href="#it_005fbrush">8.3.5 it_brush</a></li>
 
39243
      <li><a name="toc-it_005fcherry-1" href="#it_005fcherry">8.3.6 it_cherry</a></li>
 
39244
      <li><a name="toc-it_005fcoffee-1" href="#it_005fcoffee">8.3.7 it_coffee</a></li>
 
39245
      <li><a name="toc-it_005fcoin-1" href="#it_005fcoin">8.3.8 it_coin</a></li>
 
39246
      <li><a name="toc-it_005fdocument-1" href="#it_005fdocument">8.3.9 it_document</a></li>
 
39247
      <li><a name="toc-it_005fdrop-1" href="#it_005fdrop">8.3.10 it_drop</a></li>
 
39248
      <li><a name="toc-it_005fdynamite-1" href="#it_005fdynamite">8.3.11 it_dynamite</a></li>
 
39249
      <li><a name="toc-it_005fextinguisher-1" href="#it_005fextinguisher">8.3.12 it_extinguisher</a></li>
 
39250
      <li><a name="toc-it_005fextralife-1" href="#it_005fextralife">8.3.13 it_extralife</a></li>
 
39251
      <li><a name="toc-it_005fflag-1" href="#it_005fflag">8.3.14 it_flag</a></li>
 
39252
      <li><a name="toc-it_005ffloppy-1" href="#it_005ffloppy">8.3.15 it_floppy</a></li>
 
39253
      <li><a name="toc-it_005fglasses-1" href="#it_005fglasses">8.3.16 it_glasses</a></li>
 
39254
      <li><a name="toc-it_005fhammer-1" href="#it_005fhammer">8.3.17 it_hammer</a></li>
 
39255
      <li><a name="toc-it_005fkey-1" href="#it_005fkey">8.3.18 it_key</a></li>
 
39256
      <li><a name="toc-it_005fmagicwand-1" href="#it_005fmagicwand">8.3.19 it_magicwand</a></li>
 
39257
      <li><a name="toc-it_005fpencil-1" href="#it_005fpencil">8.3.20 it_pencil</a></li>
 
39258
      <li><a name="toc-it_005fpin-1" href="#it_005fpin">8.3.21 it_pin</a></li>
 
39259
      <li><a name="toc-it_005fpipe-1" href="#it_005fpipe">8.3.22 it_pipe</a></li>
 
39260
      <li><a name="toc-it_005fpuller-1" href="#it_005fpuller">8.3.23 it_puller</a></li>
 
39261
      <li><a name="toc-it_005fring-1" href="#it_005fring">8.3.24 it_ring</a></li>
 
39262
      <li><a name="toc-it_005frubberband-1" href="#it_005frubberband">8.3.25 it_rubberband</a></li>
 
39263
      <li><a name="toc-it_005fseed-1" href="#it_005fseed">8.3.26 it_seed</a></li>
 
39264
      <li><a name="toc-it_005fspade-1" href="#it_005fspade">8.3.27 it_spade</a></li>
 
39265
      <li><a name="toc-it_005fspoon-1" href="#it_005fspoon">8.3.28 it_spoon</a></li>
 
39266
      <li><a name="toc-it_005fspring-1" href="#it_005fspring">8.3.29 it_spring</a></li>
 
39267
      <li><a name="toc-it_005fsurprise-1" href="#it_005fsurprise">8.3.30 it_surprise</a></li>
 
39268
      <li><a name="toc-it_005fsword-1" href="#it_005fsword">8.3.31 it_sword</a></li>
 
39269
      <li><a name="toc-it_005fumbrella-1" href="#it_005fumbrella">8.3.32 it_umbrella</a></li>
 
39270
      <li><a name="toc-it_005fweight-1" href="#it_005fweight">8.3.33 it_weight</a></li>
 
39271
      <li><a name="toc-it_005fwrench-1" href="#it_005fwrench">8.3.34 it_wrench</a></li>
 
39272
      <li><a name="toc-it_005fyinyang-1" href="#it_005fyinyang">8.3.35 it_yinyang</a></li>
 
39273
    </ul></li>
 
39274
    <li><a name="toc-Static-Items-1" href="#Static-Items">8.4 Static Items</a>
 
39275
    <ul class="toc">
 
39276
      <li><a name="toc-it_005fblocker-1" href="#it_005fblocker">8.4.1 it_blocker</a></li>
 
39277
      <li><a name="toc-it_005fbomb-1" href="#it_005fbomb">8.4.2 it_bomb</a></li>
 
39278
      <li><a name="toc-it_005fburnable-1" href="#it_005fburnable">8.4.3 it_burnable</a></li>
 
39279
      <li><a name="toc-it_005fcrack-1" href="#it_005fcrack">8.4.4 it_crack</a></li>
 
39280
      <li><a name="toc-it_005fcross-1" href="#it_005fcross">8.4.5 it_cross</a></li>
 
39281
      <li><a name="toc-it_005fdeath-1" href="#it_005fdeath">8.4.6 it_death</a></li>
 
39282
      <li><a name="toc-it_005fexplosion-1" href="#it_005fexplosion">8.4.7 it_explosion</a></li>
 
39283
      <li><a name="toc-it_005flandmine-1" href="#it_005flandmine">8.4.8 it_landmine</a></li>
 
39284
      <li><a name="toc-it_005flaserbeam-1" href="#it_005flaserbeam">8.4.9 it_laserbeam</a></li>
 
39285
      <li><a name="toc-it_005fmagnet-1" href="#it_005fmagnet">8.4.10 it_magnet</a></li>
 
39286
      <li><a name="toc-it_005fmeditation-1" href="#it_005fmeditation">8.4.11 it_meditation</a></li>
 
39287
      <li><a name="toc-it_005fsensor-1" href="#it_005fsensor">8.4.12 it_sensor</a></li>
 
39288
      <li><a name="toc-it_005fshogun-1" href="#it_005fshogun">8.4.13 it_shogun</a></li>
 
39289
      <li><a name="toc-it_005fspringboard-1" href="#it_005fspringboard">8.4.14 it_springboard</a></li>
 
39290
      <li><a name="toc-it_005fsquashed-1" href="#it_005fsquashed">8.4.15 it_squashed</a></li>
 
39291
      <li><a name="toc-it_005fstrip-1" href="#it_005fstrip">8.4.16 it_strip</a></li>
 
39292
      <li><a name="toc-it_005ftrap-1" href="#it_005ftrap">8.4.17 it_trap</a></li>
 
39293
      <li><a name="toc-it_005ftrigger-1" href="#it_005ftrigger">8.4.18 it_trigger</a></li>
 
39294
      <li><a name="toc-it_005fvortex-1" href="#it_005fvortex">8.4.19 it_vortex</a></li>
 
39295
      <li><a name="toc-it_005fwormhole-1" href="#it_005fwormhole">8.4.20 it_wormhole</a></li>
 
39296
    </ul>
 
39297
</li>
 
39298
  </ul></li>
 
39299
  <li><a name="toc-Stone-Objects-1" href="#Stone-Objects">9. Stone Objects</a>
 
39300
  <ul class="toc">
 
39301
    <li><a name="toc-Stone-Overview-1" href="#Stone-Overview">9.1 Stone Overview</a></li>
 
39302
    <li><a name="toc-Stone-Attributes-1" href="#Stone-Attributes">9.2 Stone Attributes</a>
 
39303
    <ul class="toc">
 
39304
      <li><a name="toc-breakable-1" href="#breakable">9.2.1 breakable</a></li>
 
39305
      <li><a name="toc-freeze_005fcheck-_0028stone_0029-1" href="#freeze_005fcheck-_0028stone_0029">9.2.2 freeze_check (stone)</a></li>
 
39306
      <li><a name="toc-hit_005f_002a-1" href="#hit_005f_002a">9.2.3 hit_*</a></li>
 
39307
      <li><a name="toc-hollow-1" href="#hollow">9.2.4 hollow</a></li>
 
39308
      <li><a name="toc-hovering-1" href="#hovering">9.2.5 hovering</a></li>
 
39309
      <li><a name="toc-movable-1" href="#movable">9.2.6 movable</a></li>
 
39310
      <li><a name="toc-transparent-1" href="#transparent">9.2.7 transparent</a></li>
 
39311
    </ul></li>
 
39312
    <li><a name="toc-Standard-Stones-1" href="#Standard-Stones">9.3 Standard Stones</a>
 
39313
    <ul class="toc">
 
39314
      <li><a name="toc-st_005fancient-1" href="#st_005fancient">9.3.1 st_ancient</a></li>
 
39315
      <li><a name="toc-st_005fbluegray-1" href="#st_005fbluegray">9.3.2 st_bluegray</a></li>
 
39316
      <li><a name="toc-st_005fbrownie-1" href="#st_005fbrownie">9.3.3 st_brownie</a></li>
 
39317
      <li><a name="toc-st_005fbrownmarble-1" href="#st_005fbrownmarble">9.3.4 st_brownmarble</a></li>
 
39318
      <li><a name="toc-st_005fcamouflage-1" href="#st_005fcamouflage">9.3.5 st_camouflage</a></li>
 
39319
      <li><a name="toc-st_005fconcrete-1" href="#st_005fconcrete">9.3.6 st_concrete</a></li>
 
39320
      <li><a name="toc-st_005fdarkgray-1" href="#st_005fdarkgray">9.3.7 st_darkgray</a></li>
 
39321
      <li><a name="toc-st_005fgranite-1" href="#st_005fgranite">9.3.8 st_granite</a></li>
 
39322
      <li><a name="toc-st_005fgreengray-1" href="#st_005fgreengray">9.3.9 st_greengray</a></li>
 
39323
      <li><a name="toc-st_005finvisible-1" href="#st_005finvisible">9.3.10 st_invisible</a></li>
 
39324
      <li><a name="toc-st_005fmetal-1" href="#st_005fmetal">9.3.11 st_metal</a></li>
 
39325
      <li><a name="toc-st_005fpinkbumps-1" href="#st_005fpinkbumps">9.3.12 st_pinkbumps</a></li>
 
39326
      <li><a name="toc-st_005fpurplegray-1" href="#st_005fpurplegray">9.3.13 st_purplegray</a></li>
 
39327
      <li><a name="toc-st_005fpurplemarble-1" href="#st_005fpurplemarble">9.3.14 st_purplemarble</a></li>
 
39328
      <li><a name="toc-st_005fredbrown-1" href="#st_005fredbrown">9.3.15 st_redbrown</a></li>
 
39329
      <li><a name="toc-st_005fredmarble-1" href="#st_005fredmarble">9.3.16 st_redmarble</a></li>
 
39330
      <li><a name="toc-st_005fredrock-1" href="#st_005fredrock">9.3.17 st_redrock</a></li>
 
39331
      <li><a name="toc-st_005ftigris-1" href="#st_005ftigris">9.3.18 st_tigris</a></li>
 
39332
      <li><a name="toc-st_005fwoven-1" href="#st_005fwoven">9.3.19 st_woven</a></li>
 
39333
      <li><a name="toc-st_005fyellow-1" href="#st_005fyellow">9.3.20 st_yellow</a></li>
 
39334
    </ul></li>
 
39335
    <li><a name="toc-Cluster-Stones-1" href="#Cluster-Stones">9.4 Cluster Stones</a>
 
39336
    <ul class="toc">
 
39337
      <li><a name="toc-Cluster-Features-1" href="#Cluster-Features">9.4.1 Cluster Features</a></li>
 
39338
      <li><a name="toc-st_005fbluesand-1" href="#st_005fbluesand">9.4.2 st_bluesand</a></li>
 
39339
      <li><a name="toc-st_005fbrick-1" href="#st_005fbrick">9.4.3 st_brick</a></li>
 
39340
      <li><a name="toc-st_005fpanel-1" href="#st_005fpanel">9.4.4 st_panel</a></li>
 
39341
    </ul></li>
 
39342
    <li><a name="toc-Special-Stones-1" href="#Special-Stones">9.5 Special Stones</a>
 
39343
    <ul class="toc">
 
39344
      <li><a name="toc-st_005factorimpulse-1" href="#st_005factorimpulse">9.5.1 st_actorimpulse</a></li>
 
39345
      <li><a name="toc-st_005fbarrier-1" href="#st_005fbarrier">9.5.2 st_barrier</a></li>
 
39346
      <li><a name="toc-st_005fbeads-1" href="#st_005fbeads">9.5.3 st_beads</a></li>
 
39347
      <li><a name="toc-st_005fblocker-1" href="#st_005fblocker">9.5.4 st_blocker</a></li>
 
39348
      <li><a name="toc-st_005fblur-1" href="#st_005fblur">9.5.5 st_blur</a></li>
 
39349
      <li><a name="toc-st_005fboulder-1" href="#st_005fboulder">9.5.6 st_boulder</a></li>
 
39350
      <li><a name="toc-st_005fbox-1" href="#st_005fbox">9.5.7 st_box</a></li>
 
39351
      <li><a name="toc-st_005fbrake-1" href="#st_005fbrake">9.5.8 st_brake</a></li>
 
39352
      <li><a name="toc-st_005fbreak-1" href="#st_005fbreak">9.5.9 st_break</a></li>
 
39353
      <li><a name="toc-st_005fbrownpyramid-1" href="#st_005fbrownpyramid">9.5.10 st_brownpyramid</a></li>
 
39354
      <li><a name="toc-st_005fchameleon-1" href="#st_005fchameleon">9.5.11 st_chameleon</a></li>
 
39355
      <li><a name="toc-st_005fcharge-1" href="#st_005fcharge">9.5.12 st_charge</a></li>
 
39356
      <li><a name="toc-st_005fchess-1" href="#st_005fchess">9.5.13 st_chess</a></li>
 
39357
      <li><a name="toc-st_005fcoinslot-1" href="#st_005fcoinslot">9.5.14 st_coinslot</a></li>
 
39358
      <li><a name="toc-st_005fdarkglass-1" href="#st_005fdarkglass">9.5.15 st_darkglass</a></li>
 
39359
      <li><a name="toc-st_005fdeath-1" href="#st_005fdeath">9.5.16 st_death</a></li>
 
39360
      <li><a name="toc-st_005fdisco-1" href="#st_005fdisco">9.5.17 st_disco</a></li>
 
39361
      <li><a name="toc-st_005fdispenser-1" href="#st_005fdispenser">9.5.18 st_dispenser</a></li>
 
39362
      <li><a name="toc-st_005fdoor-1" href="#st_005fdoor">9.5.19 st_door</a></li>
 
39363
      <li><a name="toc-st_005ffake-1" href="#st_005ffake">9.5.20 st_fake</a></li>
 
39364
      <li><a name="toc-st_005fflash-1" href="#st_005fflash">9.5.21 st_flash</a></li>
 
39365
      <li><a name="toc-st_005fflat-1" href="#st_005fflat">9.5.22 st_flat</a></li>
 
39366
      <li><a name="toc-st_005ffloppy-1" href="#st_005ffloppy">9.5.23 st_floppy</a></li>
 
39367
      <li><a name="toc-st_005ffourswitch-1" href="#st_005ffourswitch">9.5.24 st_fourswitch</a></li>
 
39368
      <li><a name="toc-st_005fghost-1" href="#st_005fghost">9.5.25 st_ghost</a></li>
 
39369
      <li><a name="toc-st_005fgrate-1" href="#st_005fgrate">9.5.26 st_grate</a></li>
 
39370
      <li><a name="toc-st_005fgreenbrown-1" href="#st_005fgreenbrown">9.5.27 st_greenbrown</a></li>
 
39371
      <li><a name="toc-st_005fice-1" href="#st_005fice">9.5.28 st_ice</a></li>
 
39372
      <li><a name="toc-st_005fjamb-1" href="#st_005fjamb">9.5.29 st_jamb</a></li>
 
39373
      <li><a name="toc-st_005fkey-1" href="#st_005fkey">9.5.30 st_key</a></li>
 
39374
      <li><a name="toc-st_005fknight-1" href="#st_005fknight">9.5.31 st_knight</a></li>
 
39375
      <li><a name="toc-st_005flaser-1" href="#st_005flaser">9.5.32 st_laser</a></li>
 
39376
      <li><a name="toc-st_005flaserflop-1" href="#st_005flaserflop">9.5.33 st_laserflop</a></li>
 
39377
      <li><a name="toc-st_005flaserswitch-1" href="#st_005flaserswitch">9.5.34 st_laserswitch</a></li>
 
39378
      <li><a name="toc-st_005flightglass-1" href="#st_005flightglass">9.5.35 st_lightglass</a></li>
 
39379
      <li><a name="toc-st_005flightpassenger-1" href="#st_005flightpassenger">9.5.36 st_lightpassenger</a></li>
 
39380
      <li><a name="toc-st_005fmagic-1" href="#st_005fmagic">9.5.37 st_magic</a></li>
 
39381
      <li><a name="toc-st_005fmail-1" href="#st_005fmail">9.5.38 st_mail</a></li>
 
39382
      <li><a name="toc-st_005fmirror-1" href="#st_005fmirror">9.5.39 st_mirror</a></li>
 
39383
      <li><a name="toc-st_005fmonoflop-1" href="#st_005fmonoflop">9.5.40 st_monoflop</a></li>
 
39384
      <li><a name="toc-st_005foneway-1" href="#st_005foneway">9.5.41 st_oneway</a></li>
 
39385
      <li><a name="toc-st_005foxyd-1" href="#st_005foxyd">9.5.42 st_oxyd</a></li>
 
39386
      <li><a name="toc-st_005fpassage-1" href="#st_005fpassage">9.5.43 st_passage</a></li>
 
39387
      <li><a name="toc-st_005fplaster-1" href="#st_005fplaster">9.5.44 st_plaster</a></li>
 
39388
      <li><a name="toc-st_005fplop-1" href="#st_005fplop">9.5.45 st_plop</a></li>
 
39389
      <li><a name="toc-st_005fpolarswitch-1" href="#st_005fpolarswitch">9.5.46 st_polarswitch</a></li>
 
39390
      <li><a name="toc-st_005fportal-1" href="#st_005fportal">9.5.47 st_portal</a></li>
 
39391
      <li><a name="toc-st_005fpull-1" href="#st_005fpull">9.5.48 st_pull</a></li>
 
39392
      <li><a name="toc-st_005fpuzzle-1" href="#st_005fpuzzle">9.5.49 st_puzzle</a></li>
 
39393
      <li><a name="toc-st_005fquake-1" href="#st_005fquake">9.5.50 st_quake</a></li>
 
39394
      <li><a name="toc-st_005frawglass-1" href="#st_005frawglass">9.5.51 st_rawglass</a></li>
 
39395
      <li><a name="toc-st_005fredfiber-1" href="#st_005fredfiber">9.5.52 st_redfiber</a></li>
 
39396
      <li><a name="toc-st_005frotator-1" href="#st_005frotator">9.5.53 st_rotator</a></li>
 
39397
      <li><a name="toc-st_005frubberband-1" href="#st_005frubberband">9.5.54 st_rubberband</a></li>
 
39398
      <li><a name="toc-st_005fscissors-1" href="#st_005fscissors">9.5.55 st_scissors</a></li>
 
39399
      <li><a name="toc-st_005fshogun-1" href="#st_005fshogun">9.5.56 st_shogun</a></li>
 
39400
      <li><a name="toc-st_005fspitter-1" href="#st_005fspitter">9.5.57 st_spitter</a></li>
 
39401
      <li><a name="toc-st_005fstoneimpulse-1" href="#st_005fstoneimpulse">9.5.58 st_stoneimpulse</a></li>
 
39402
      <li><a name="toc-st_005fsurprise-1" href="#st_005fsurprise">9.5.59 st_surprise</a></li>
 
39403
      <li><a name="toc-st_005fswap-1" href="#st_005fswap">9.5.60 st_swap</a></li>
 
39404
      <li><a name="toc-st_005fswitch-1" href="#st_005fswitch">9.5.61 st_switch</a></li>
 
39405
      <li><a name="toc-st_005fthief-1" href="#st_005fthief">9.5.62 st_thief</a></li>
 
39406
      <li><a name="toc-st_005ftimer-1" href="#st_005ftimer">9.5.63 st_timer</a></li>
 
39407
      <li><a name="toc-st_005fturnstile-1" href="#st_005fturnstile">9.5.64 st_turnstile</a></li>
 
39408
      <li><a name="toc-st_005fturnstilearm-1" href="#st_005fturnstilearm">9.5.65 st_turnstilearm</a></li>
 
39409
      <li><a name="toc-st_005fvolcano-1" href="#st_005fvolcano">9.5.66 st_volcano</a></li>
 
39410
      <li><a name="toc-st_005fwindow-1" href="#st_005fwindow">9.5.67 st_window</a></li>
 
39411
      <li><a name="toc-st_005fyinyang-1" href="#st_005fyinyang">9.5.68 st_yinyang</a></li>
 
39412
    </ul></li>
 
39413
    <li><a name="toc-Stone-Feature-Summaries-1" href="#Stone-Feature-Summaries">9.6 Stone Feature Summaries</a>
 
39414
    <ul class="toc">
 
39415
      <li><a name="toc-Transparent-Stones-1" href="#Transparent-Stones">9.6.1 Transparent Stones</a></li>
 
39416
      <li><a name="toc-Breakable-Stones-1" href="#Breakable-Stones">9.6.2 Breakable Stones</a></li>
 
39417
    </ul>
 
39418
</li>
 
39419
  </ul></li>
 
39420
  <li><a name="toc-Actor-Objects-1" href="#Actor-Objects">10. Actor Objects</a>
 
39421
  <ul class="toc">
 
39422
    <li><a name="toc-Actor-Attributes-1" href="#Actor-Attributes">10.1 Actor Attributes</a>
 
39423
    <ul class="toc">
 
39424
      <li><a name="toc-adhesion-_0028actor_0029-1" href="#adhesion-_0028actor_0029">10.1.1 adhesion (actor)</a></li>
 
39425
      <li><a name="toc-charge-1" href="#charge">10.1.2 charge</a></li>
 
39426
      <li><a name="toc-controllers-1" href="#controllers">10.1.3 controllers</a></li>
 
39427
      <li><a name="toc-color-1" href="#color">10.1.4 color</a></li>
 
39428
      <li><a name="toc-essential-1" href="#essential">10.1.5 essential</a></li>
 
39429
      <li><a name="toc-essential_005fid-1" href="#essential_005fid">10.1.6 essential_id</a></li>
 
39430
      <li><a name="toc-owner-1" href="#owner">10.1.7 owner</a></li>
 
39431
      <li><a name="toc-velocity_005fx-1" href="#velocity_005fx">10.1.8 velocity_x</a></li>
 
39432
      <li><a name="toc-velocity_005fy-1" href="#velocity_005fy">10.1.9 velocity_y</a></li>
 
39433
    </ul></li>
 
39434
    <li><a name="toc-Actors-1" href="#Actors">10.2 Actors</a>
 
39435
    <ul class="toc">
 
39436
      <li><a name="toc-ac_005fbug-1" href="#ac_005fbug">10.2.1 ac_bug</a></li>
 
39437
      <li><a name="toc-ac_005fhorse-1" href="#ac_005fhorse">10.2.2 ac_horse</a></li>
 
39438
      <li><a name="toc-ac_005fkiller-1" href="#ac_005fkiller">10.2.3 ac_killer</a></li>
 
39439
      <li><a name="toc-ac_005fmarble-1" href="#ac_005fmarble">10.2.4 ac_marble</a></li>
 
39440
      <li><a name="toc-ac_005fpearl-1" href="#ac_005fpearl">10.2.5 ac_pearl</a></li>
 
39441
      <li><a name="toc-ac_005frotor-1" href="#ac_005frotor">10.2.6 ac_rotor</a></li>
 
39442
      <li><a name="toc-ac_005ftop-1" href="#ac_005ftop">10.2.7 ac_top</a></li>
 
39443
    </ul></li>
 
39444
    <li><a name="toc-Actor-Features-1" href="#Actor-Features">10.3 Actor Features</a>
 
39445
    <ul class="toc">
 
39446
      <li><a name="toc-Flying-Actors-1" href="#Flying-Actors">10.3.1 Flying Actors</a></li>
 
39447
    </ul>
 
39448
</li>
 
39449
  </ul></li>
 
39450
  <li><a name="toc-Other-Objects-1" href="#Other-Objects">11. Other Objects</a>
 
39451
  <ul class="toc">
 
39452
    <li><a name="toc-Visible-Others-1" href="#Visible-Others">11.1 Visible Others</a>
 
39453
    <ul class="toc">
 
39454
      <li><a name="toc-ot_005fcannonball-1" href="#ot_005fcannonball">11.1.1 ot_cannonball</a></li>
 
39455
      <li><a name="toc-ot_005frubberband-1" href="#ot_005frubberband">11.1.2 ot_rubberband</a></li>
 
39456
      <li><a name="toc-ot_005fwire-1" href="#ot_005fwire">11.1.3 ot_wire</a></li>
 
39457
    </ul></li>
 
39458
    <li><a name="toc-Gadgets-1" href="#Gadgets">11.2 Gadgets</a>
 
39459
    <ul class="toc">
 
39460
      <li><a name="toc-ot_005fcounter-1" href="#ot_005fcounter">11.2.1 ot_counter</a></li>
 
39461
      <li><a name="toc-ot_005ftimer-1" href="#ot_005ftimer">11.2.2 ot_timer</a></li>
 
39462
    </ul>
 
39463
</li>
 
39464
  </ul></li>
 
39465
  <li><a name="toc-Libraries-1" href="#Libraries">12. Libraries</a>
 
39466
  <ul class="toc">
 
39467
    <li><a name="toc-Basic-Functions-1" href="#Basic-Functions">12.1 Basic Functions</a></li>
 
39468
    <li><a name="toc-liblua-1" href="#liblua">12.2 liblua</a>
 
39469
    <ul class="toc">
 
39470
      <li><a name="toc-lib_002elua_002ecombine_005ftables-1" href="#lib_002elua_002ecombine_005ftables">12.2.1 lib.lua.combine_tables</a></li>
 
39471
      <li><a name="toc-lib_002elua_002edeep_005fcopy-1" href="#lib_002elua_002edeep_005fcopy">12.2.2 lib.lua.deep_copy</a></li>
 
39472
      <li><a name="toc-lib_002elua_002emod-1" href="#lib_002elua_002emod">12.2.3 lib.lua.mod</a></li>
 
39473
      <li><a name="toc-lib_002elua_002eprint_005ftable-1" href="#lib_002elua_002eprint_005ftable">12.2.4 lib.lua.print_table</a></li>
 
39474
      <li><a name="toc-lib_002elua_002eshuffle-1" href="#lib_002elua_002eshuffle">12.2.5 lib.lua.shuffle</a></li>
 
39475
      <li><a name="toc-lib_002elua_002eto_005fstring-1" href="#lib_002elua_002eto_005fstring">12.2.6 lib.lua.to_string</a></li>
 
39476
    </ul></li>
 
39477
    <li><a name="toc-libmath-1" href="#libmath">12.3 libmath</a>
 
39478
    <ul class="toc">
 
39479
      <li><a name="toc-lib_002emath_002ecombinations-1" href="#lib_002emath_002ecombinations">12.3.1 lib.math.combinations</a></li>
 
39480
      <li><a name="toc-lib_002emath_002ecubic_005fpolynomial-1" href="#lib_002emath_002ecubic_005fpolynomial">12.3.2 lib.math.cubic_polynomial</a></li>
 
39481
      <li><a name="toc-lib_002emath_002ecyclic_005fpermutation-1" href="#lib_002emath_002ecyclic_005fpermutation">12.3.3 lib.math.cyclic_permutation</a></li>
 
39482
      <li><a name="toc-lib_002emath_002edigits-1" href="#lib_002emath_002edigits">12.3.4 lib.math.digits</a></li>
 
39483
      <li><a name="toc-lib_002emath_002emanhattan_005fdistance-1" href="#lib_002emath_002emanhattan_005fdistance">12.3.5 lib.math.manhattan_distance</a></li>
 
39484
      <li><a name="toc-lib_002emath_002emark_005fcomponents-1" href="#lib_002emath_002emark_005fcomponents">12.3.6 lib.math.mark_components</a></li>
 
39485
      <li><a name="toc-lib_002emath_002epermutation-1" href="#lib_002emath_002epermutation">12.3.7 lib.math.permutation</a></li>
 
39486
      <li><a name="toc-lib_002emath_002erandom_005fvector-1" href="#lib_002emath_002erandom_005fvector">12.3.8 lib.math.random_vector</a></li>
 
39487
      <li><a name="toc-lib_002emath_002esteps-1" href="#lib_002emath_002esteps">12.3.9 lib.math.steps</a></li>
 
39488
    </ul></li>
 
39489
    <li><a name="toc-libmap-1" href="#libmap">12.4 libmap</a>
 
39490
    <ul class="toc">
 
39491
      <li><a name="toc-Creating-Maps-1" href="#Creating-Maps">12.4.1 Creating Maps</a></li>
 
39492
      <li><a name="toc-Drawing-Maps-1" href="#Drawing-Maps">12.4.2 Drawing Maps</a></li>
 
39493
      <li><a name="toc-Rotating-and-Mirroring-Maps-1" href="#Rotating-and-Mirroring-Maps">12.4.3 Rotating and Mirroring Maps</a></li>
 
39494
      <li><a name="toc-Requesting-and-Changing-Single-Map-Entries-1" href="#Requesting-and-Changing-Single-Map-Entries">12.4.4 Requesting and Changing Single Map Entries</a></li>
 
39495
      <li><a name="toc-Connecting-Two-Maps-1" href="#Connecting-Two-Maps">12.4.5 Connecting Two Maps</a></li>
 
39496
      <li><a name="toc-Other-Map-Tasks-1" href="#Other-Map-Tasks">12.4.6 Other Map Tasks</a></li>
 
39497
      <li><a name="toc-newMap-1" href="#newMap">12.4.7 newMap</a></li>
 
39498
      <li><a name="toc-Map-Entry-Request-1" href="#Map-Entry-Request">12.4.8 Map Entry Request</a></li>
 
39499
      <li><a name="toc-Map-Transformation-1" href="#Map-Transformation">12.4.9 Map Transformation</a></li>
 
39500
      <li><a name="toc-Map-Horizontal-Concatenation-1" href="#Map-Horizontal-Concatenation">12.4.10 Map Horizontal Concatenation</a></li>
 
39501
      <li><a name="toc-Map-Vertical-Concatenation-1" href="#Map-Vertical-Concatenation">12.4.11 Map Vertical Concatenation</a></li>
 
39502
      <li><a name="toc-Map-Fusing-1" href="#Map-Fusing">12.4.12 Map Fusing</a></li>
 
39503
      <li><a name="toc-Map-Default-Keys-1" href="#Map-Default-Keys">12.4.13 Map Default Keys</a></li>
 
39504
      <li><a name="toc-Map-Width-and-Height-1" href="#Map-Width-and-Height">12.4.14 Map Width and Height</a></li>
 
39505
      <li><a name="toc-lib_002emap_002ecovers-1" href="#lib_002emap_002ecovers">12.4.15 lib.map.covers</a></li>
 
39506
      <li><a name="toc-lib_002emap_002edefuse-1" href="#lib_002emap_002edefuse">12.4.16 lib.map.defuse</a></li>
 
39507
      <li><a name="toc-lib_002emap_002eextend-1" href="#lib_002emap_002eextend">12.4.17 lib.map.extend</a></li>
 
39508
      <li><a name="toc-lib_002emap_002ematch-1" href="#lib_002emap_002ematch">12.4.18 lib.map.match</a></li>
 
39509
      <li><a name="toc-lib_002emap_002epaste-1" href="#lib_002emap_002epaste">12.4.19 lib.map.paste</a></li>
 
39510
      <li><a name="toc-lib_002emap_002eprint-1" href="#lib_002emap_002eprint">12.4.20 lib.map.print</a></li>
 
39511
      <li><a name="toc-lib_002emap_002ereplace-1" href="#lib_002emap_002ereplace">12.4.21 lib.map.replace</a></li>
 
39512
      <li><a name="toc-lib_002emap_002ereplace_005foutside-1" href="#lib_002emap_002ereplace_005foutside">12.4.22 lib.map.replace_outside</a></li>
 
39513
      <li><a name="toc-lib_002emap_002esub-1" href="#lib_002emap_002esub">12.4.23 lib.map.sub</a></li>
 
39514
      <li><a name="toc-lib_002emap_002etrim-1" href="#lib_002emap_002etrim">12.4.24 lib.map.trim</a></li>
 
39515
      <li><a name="toc-Map-Transformation-Index-and-MAP_005fALL-1" href="#Map-Transformation-Index-and-MAP_005fALL">12.4.25 Map Transformation Index and MAP_ALL</a></li>
 
39516
      <li><a name="toc-Map-Transformation-Composition-and-Powers-1" href="#Map-Transformation-Composition-and-Powers">12.4.26 Map Transformation Composition and Powers</a></li>
 
39517
      <li><a name="toc-Map-Transformation-Inverse-1" href="#Map-Transformation-Inverse">12.4.27 Map Transformation Inverse</a></li>
 
39518
      <li><a name="toc-Random-Map-Transformations-1" href="#Random-Map-Transformations">12.4.28 Random Map Transformations</a></li>
 
39519
    </ul></li>
 
39520
    <li><a name="toc-libimport-1" href="#libimport">12.5 libimport</a>
 
39521
    <ul class="toc">
 
39522
      <li><a name="toc-lib_002eimport_002eunpack_005fmultilevel-1" href="#lib_002eimport_002eunpack_005fmultilevel">12.5.1 lib.import.unpack_multilevel</a></li>
 
39523
      <li><a name="toc-lib_002eimport_002euncompress_005frle-1" href="#lib_002eimport_002euncompress_005frle">12.5.2 lib.import.uncompress_rle</a></li>
 
39524
      <li><a name="toc-lib_002eimport_002elevel_005fto_005fmap-1" href="#lib_002eimport_002elevel_005fto_005fmap">12.5.3 lib.import.level_to_map</a></li>
 
39525
      <li><a name="toc-lib_002eimport_002emap_005fsokoban-1" href="#lib_002eimport_002emap_005fsokoban">12.5.4 lib.import.map_sokoban</a></li>
 
39526
      <li><a name="toc-lib_002eimport_002emap_005fwanderer-1" href="#lib_002eimport_002emap_005fwanderer">12.5.5 lib.import.map_wanderer</a></li>
 
39527
    </ul></li>
 
39528
    <li><a name="toc-libsoko-1" href="#libsoko">12.6 libsoko</a></li>
 
39529
  </ul></li>
 
39530
  <li><a name="toc-Advanced-Features-1" href="#Advanced-Features">13. Advanced Features</a>
 
39531
  <ul class="toc">
 
39532
    <li><a name="toc-Resolvers-1" href="#Resolvers">13.1 Resolvers</a>
 
39533
    <ul class="toc">
 
39534
      <li><a name="toc-Resolver-Chaining-1" href="#Resolver-Chaining">13.1.1 Resolver Chaining</a></li>
 
39535
      <li><a name="toc-Custom-Resolver-1" href="#Custom-Resolver">13.1.2 Custom Resolver</a></li>
 
39536
      <li><a name="toc-res_002eautotile-1" href="#res_002eautotile">13.1.3 res.autotile</a></li>
 
39537
      <li><a name="toc-res_002ecomposer-1" href="#res_002ecomposer">13.1.4 res.composer</a></li>
 
39538
      <li><a name="toc-res_002emaze-1" href="#res_002emaze">13.1.5 res.maze</a></li>
 
39539
      <li><a name="toc-res_002epuzzle-1" href="#res_002epuzzle">13.1.6 res.puzzle</a></li>
 
39540
      <li><a name="toc-res_002erandom-1" href="#res_002erandom">13.1.7 res.random</a></li>
 
39541
      <li><a name="toc-res_002etrain-1" href="#res_002etrain">13.1.8 res.train</a></li>
 
39542
    </ul></li>
 
39543
    <li><a name="toc-General-Features-1" href="#General-Features">13.2 General Features</a>
 
39544
    <ul class="toc">
 
39545
      <li><a name="toc-Display-Follow-Strategy-1" href="#Display-Follow-Strategy">13.2.1 Display Follow Strategy</a></li>
 
39546
      <li><a name="toc-Flood-Spreading-1" href="#Flood-Spreading">13.2.2 Flood Spreading</a></li>
 
39547
      <li><a name="toc-Fire-Spreading-1" href="#Fire-Spreading">13.2.3 Fire Spreading</a></li>
 
39548
      <li><a name="toc-Heat_002dTransformation-1" href="#Heat_002dTransformation">13.2.4 Heat-Transformation</a></li>
 
39549
      <li><a name="toc-Freeze-Checking-1" href="#Freeze-Checking">13.2.5 Freeze Checking</a></li>
 
39550
    </ul></li>
 
39551
    <li><a name="toc-Tips-and-Tricks-1" href="#Tips-and-Tricks">13.3 Tips and Tricks</a>
 
39552
    <ul class="toc">
 
39553
      <li><a name="toc-Nearest-Object-Clustering-1" href="#Nearest-Object-Clustering">13.3.1 Nearest Object Clustering</a></li>
 
39554
      <li><a name="toc-Orthogonal-Autotiling-1" href="#Orthogonal-Autotiling">13.3.2 Orthogonal Autotiling</a></li>
 
39555
    </ul>
 
39556
</li>
 
39557
  </ul></li>
 
39558
  <li><a name="toc-Extension-Development-1" href="#Extension-Development">14. Extension Development</a>
 
39559
  <ul class="toc">
 
39560
    <li><a name="toc-Resolver-Development-1" href="#Resolver-Development">14.1 Resolver Development</a>
 
39561
    <ul class="toc">
 
39562
      <li><a name="toc-Resolver-Configurator-1" href="#Resolver-Configurator">14.1.1 Resolver Configurator</a></li>
 
39563
      <li><a name="toc-Resolver-Implementation-1" href="#Resolver-Implementation">14.1.2 Resolver Implementation</a></li>
 
39564
      <li><a name="toc-Resolver-Finalizer-1" href="#Resolver-Finalizer">14.1.3 Resolver Finalizer</a></li>
 
39565
    </ul>
 
39566
</li>
 
39567
  </ul></li>
 
39568
  <li><a name="toc-Guidelines-and-Hints-1" href="#Guidelines-and-Hints">15. Guidelines and Hints</a>
 
39569
  <ul class="toc">
 
39570
    <li><a name="toc-Filename-Recommendation-1" href="#Filename-Recommendation">15.1 Filename Recommendation</a></li>
 
39571
    <li><a name="toc-Title-Recommendation-1" href="#Title-Recommendation">15.2 Title Recommendation</a></li>
 
39572
    <li><a name="toc-Tile-Key-Recommendation-1" href="#Tile-Key-Recommendation">15.3 Tile Key Recommendation</a></li>
 
39573
    <li><a name="toc-Easy-Mode-Hints-1" href="#Easy-Mode-Hints">15.4 Easy Mode Hints</a></li>
 
39574
  </ul></li>
 
39575
  <li><a name="toc-Compatibility-1" href="#Compatibility">16. Compatibility</a>
 
39576
  <ul class="toc">
 
39577
    <li><a name="toc-Engine-Compatibility-1" href="#Engine-Compatibility">16.1 Engine Compatibility</a></li>
 
39578
  </ul></li>
 
39579
  <li><a name="toc-Object-Index-1" href="#Object-Index">Object Index</a></li>
 
39580
  <li><a name="toc-Attribute-Index-1" href="#Attribute-Index">Attribute Index</a></li>
 
39581
  <li><a name="toc-Message-Index-1" href="#Message-Index">Message Index</a></li>
 
39582
  <li><a name="toc-Function-Index-1" href="#Function-Index">Function Index</a></li>
 
39583
  <li><a name="toc-Concept-Index-1" href="#Concept-Index">Concept Index</a></li>
 
39584
  <li><a name="toc-Renaming-Index-1" href="#Renaming-Index">Renaming Index</a></li>
 
39585
</ul>
 
39586
</div>
 
39587
<hr size="1">
 
39588
<a name="SEC_About"></a>
 
39589
<table cellpadding="1" cellspacing="1" border="0">
 
39590
<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
 
39591
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
39592
<td valign="middle" align="left">[<a href="#Object-Index" title="Index">Index</a>]</td>
 
39593
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 
39594
</tr></table>
 
39595
<h1>About This Document</h1>
 
39596
<p>
 
39597
  This document was generated by <em>Andreas Lochmann</em> on <em>April 1, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
 
39598
</p>
 
39599
<p>
 
39600
  The buttons in the navigation panels have the following meaning:
 
39601
</p>
 
39602
<table border="1">
 
39603
  <tr>
 
39604
    <th> Button </th>
 
39605
    <th> Name </th>
 
39606
    <th> Go to </th>
 
39607
    <th> From 1.2.3 go to</th>
 
39608
  </tr>
 
39609
  <tr>
 
39610
    <td align="center"> [ &lt; ] </td>
 
39611
    <td align="center">Back</td>
 
39612
    <td>Previous section in reading order</td>
 
39613
    <td>1.2.2</td>
 
39614
  </tr>
 
39615
  <tr>
 
39616
    <td align="center"> [ &gt; ] </td>
 
39617
    <td align="center">Forward</td>
 
39618
    <td>Next section in reading order</td>
 
39619
    <td>1.2.4</td>
 
39620
  </tr>
 
39621
  <tr>
 
39622
    <td align="center"> [ &lt;&lt; ] </td>
 
39623
    <td align="center">FastBack</td>
 
39624
    <td>Beginning of this chapter or previous chapter</td>
 
39625
    <td>1</td>
 
39626
  </tr>
 
39627
  <tr>
 
39628
    <td align="center"> [ Up ] </td>
 
39629
    <td align="center">Up</td>
 
39630
    <td>Up section</td>
 
39631
    <td>1.2</td>
 
39632
  </tr>
 
39633
  <tr>
 
39634
    <td align="center"> [ &gt;&gt; ] </td>
 
39635
    <td align="center">FastForward</td>
 
39636
    <td>Next chapter</td>
 
39637
    <td>2</td>
 
39638
  </tr>
 
39639
  <tr>
 
39640
    <td align="center"> [Top] </td>
 
39641
    <td align="center">Top</td>
 
39642
    <td>Cover (top) of document</td>
 
39643
    <td> &nbsp; </td>
 
39644
  </tr>
 
39645
  <tr>
 
39646
    <td align="center"> [Contents] </td>
 
39647
    <td align="center">Contents</td>
 
39648
    <td>Table of contents</td>
 
39649
    <td> &nbsp; </td>
 
39650
  </tr>
 
39651
  <tr>
 
39652
    <td align="center"> [Index] </td>
 
39653
    <td align="center">Index</td>
 
39654
    <td>Index</td>
 
39655
    <td> &nbsp; </td>
 
39656
  </tr>
 
39657
  <tr>
 
39658
    <td align="center"> [ ? ] </td>
 
39659
    <td align="center">About</td>
 
39660
    <td>About (help)</td>
 
39661
    <td> &nbsp; </td>
 
39662
  </tr>
 
39663
</table>
 
39664
 
 
39665
<p>
 
39666
  where the <strong> Example </strong> assumes that the current position is at <strong> Subsubsection One-Two-Three </strong> of a document of the following structure:
 
39667
</p>
 
39668
 
 
39669
<ul>
 
39670
  <li> 1. Section One
 
39671
    <ul>
 
39672
      <li>1.1 Subsection One-One
 
39673
        <ul>
 
39674
          <li>...</li>
 
39675
        </ul>
 
39676
      </li>
 
39677
      <li>1.2 Subsection One-Two
 
39678
        <ul>
 
39679
          <li>1.2.1 Subsubsection One-Two-One</li>
 
39680
          <li>1.2.2 Subsubsection One-Two-Two</li>
 
39681
          <li>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp;
 
39682
            <strong>&lt;== Current Position </strong></li>
 
39683
          <li>1.2.4 Subsubsection One-Two-Four</li>
 
39684
        </ul>
 
39685
      </li>
 
39686
      <li>1.3 Subsection One-Three
 
39687
        <ul>
 
39688
          <li>...</li>
 
39689
        </ul>
 
39690
      </li>
 
39691
      <li>1.4 Subsection One-Four</li>
 
39692
    </ul>
 
39693
  </li>
 
39694
</ul>
 
39695
 
 
39696
<hr size="1">
 
39697
<p>
 
39698
 <font size="-1">
 
39699
  This document was generated by <em>Andreas Lochmann</em> on <em>April 1, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
 
39700
 </font>
 
39701
 <br>
 
39702
 
 
39703
</p>
 
39704
</body>
 
39705
</html>