<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.zzt.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Quantum</id>
	<title>Wiki of ZZT - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.zzt.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Quantum"/>
	<link rel="alternate" type="text/html" href="https://wiki.zzt.org/wiki/Special:Contributions/Quantum"/>
	<updated>2026-07-16T02:33:25Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=ZZT_file_format&amp;diff=778</id>
		<title>ZZT file format</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=ZZT_file_format&amp;diff=778"/>
		<updated>2026-03-19T05:47:45Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Update some descriptions of how different fields behave&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General Info ==&lt;br /&gt;
&lt;br /&gt;
All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game both on the title screen to display the game name as well as determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded.&lt;br /&gt;
&lt;br /&gt;
There are some unused bytes after the world information that are ignored by the game. While it is safe to put any data whatsoever into this unused space, it is not saved back to disk by the ZZT and will be converted to empty padding. &lt;br /&gt;
&lt;br /&gt;
=== World Header ===&lt;br /&gt;
&lt;br /&gt;
This header is found at the head of all ZZT files. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
Unused values are preserved. Data not listed here is overwritten with zeroes when saving worlds.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world. For regular worlds, this usually matches the stem of the filename (&amp;quot;TOWN&amp;quot; for TOWN.ZZT); for save files, this is how ZZT knows which world the save came from.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0. (An empty string indicates an unused flag slot.)&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|265||0x109||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After this follows the boards. Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== Board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes (excluding the two bytes from this value). Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== Board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board. 0 means no board connects there.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board. 0 means no board connects there.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board. 0 means no board connects there.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board. 0 means no board connects there.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is loaded by ZZT but is usually ignored; it will only be displayed if ZZT&#039;s in-memory play state from the last game played &#039;&#039;also&#039;&#039; had an on-screen message at the time the user quit that game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board. These coordinates only matter when restoring a saved game. When playing a regular world, ZZT ignores the coordinates from the file and uses the player&#039;s actual entry coordinates.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Note that zero is used to indicate that there is no board exit in the given direction. This means it is impossible for a board edge to lead to the [[title screen]], because the title screen always has board index zero.&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader, Follower, and Parameter information, especially in older worlds / the commercial+shareware worlds.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions, or (0, 0) for no direction. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Used for linking centipedes. Editors typically set both indexes to -1, which causes ZZT to link the centipede itself and fill in the correct values.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP. This is typically 0 (object starts at the top of its program), though objects can be pre-[[End|#ended]] by setting this to -1.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If Length is positive, it represents the number of bytes that are in the code block. If Length is negative, the absolute value of Length represents the index of the Status Element the current stat is [[Bind|bound]] to, meaning the two stats share the same code block. (Zero simply means the stat&#039;s code block is empty; it is impossible to be bound to the stat at index 0.)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After this follows 8 bytes of padding (2 unused pointers).  If &amp;quot;Length&amp;quot; is positive, the code is stored after the padding.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element.  They are initialized on startup and used both in-game and in the editor.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ZZT elements===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70|| ||Yes|| ||Yes|| || ||0x0020||-1||0x0000||0x0010||0|| ||Empty|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x3973||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0039||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07|| || || || || || ||0x0020||1||0x4481||0x0010||0|| ||Monitor|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes|| || ||Yes|| ||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:|| || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03|| ||Yes|| || || || ||0x0020||-1||0x0000||0x3289||1||A||Ammo|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06|| || || || ||Yes|| ||0x0020||-1||0x0000||0x37B6||1||T||Torch|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes|| || || || ||0x0020||-1||0x0000||0x3306||1||G||Gem|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)|| ||Yes|| || || || ||0x0020||-1||0x0000||0x3169||1||K||Key|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)|| || || || || || ||0x0020||-1||0x0000||0x33DA||1||D||Door|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F|| ||Yes|| || || || ||0x0020||1||0x2F9F||0x308B||1||S||Scroll|| || || || || || ||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)|| || || || ||Yes|| ||0x0020||0||0x0000||0x3372||1||P||Passage|| || || || ||Room thru passage?|| || ||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F|| || || || || ||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator|| || ||Duplication rate?;SF|| || ||Source direction?|| ||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)|| ||Yes|| || || ||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05|| || || || || || ||0x0020||-1||0x0000||0x2034||1||E||Energizer|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F|| || || || || ||Yes||0x1D5D||1||0x1DE9||0x00F5||0|| ||Star|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)|| || || || || ||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:|| || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)|| || || || || ||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes|| || || || || ||0x0020||1||0x0F65||0x00F5||0|| ||Bullet|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9|| || ||Yes|| || || ||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:|| || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20|| || || || || || ||0x0020||-1||0x0000||0x38D0||3||F||Forest|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:|| || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||3||N||Normal|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||3||B||Breakable|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)|| ||Yes|| || || || ||0x0020||-1||0x0000||0x34E3||3||O||Boulder|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)|| || ||Yes||Yes|| || ||0x0020||-1||0x0000||0x3949||3||A||Fake|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x3848||3||I||Invisible|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)|| || || || || ||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall|| ||Starting time||Period|| || ||Wall direction|| ||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)|| || || || || ||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter|| || || || || ||Direction?|| ||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)|| || || || || ||Yes||0x122A||-1||0x0000||0x0010||0|| ||Line|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A|| || || || || || ||0x0020||-1||0x0000||0x0010||3||R||Ricochet|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes|| || || || ||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?|| || || || || ||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes|| || || || ||0x0020||1||0x0351||0x00F5||2||R||Ruffian|| ||Intelligence?||Resting time?|| || || || ||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)|| || || || || ||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object|| ||Character?|| || || || ||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)|| || || || || || ||0x0020||3||0x20AE||0x2295||2||V||Slime|| || ||Movement speed?;FS|| || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07|| || || || || || ||0x0020||3||0x2321||0x0010||2||Y||Shark|| ||Intelligence?|| || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)|| || || || || ||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun|| ||Intelligence?||Firing rate?||Firing type?|| || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)|| || || || || ||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher|| || || || || ||Push direction?|| ||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes|| || || || ||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?|| || || || || ||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes|| || || || ||0x0020||2||0x022D||0x00F5||2||T||Tiger|| ||Intelligence?||Firing rate?||Firing type?|| || || ||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes|| || || || || ||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?|| || || || ||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes|| || || || || ||0x0020||2||0x0EED||0x00F5||2||S||Segment|| || || || || || || ||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E|| ||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
The ZZT file format was reverse engineered by SaxxonPike, Kev Vance and David Hammond.&lt;br /&gt;
&lt;br /&gt;
This article is based on content written by SaxxonPike as part of [https://moddingwiki.shikadi.net/wiki/ZZT_Format a corresponding article on the ModdingWiki]. Saxxon has given permission to license their edits to that article under CC BY-SA 4.0.&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Bind&amp;diff=773</id>
		<title>Bind</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Bind&amp;diff=773"/>
		<updated>2026-01-30T09:16:09Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Reorganize a bit, add info on what binding actually is and how to pre-bind properly&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:bind}}&lt;br /&gt;
&#039;&#039;&#039;#bind&#039;&#039;&#039; is a [[ZZT-OOP]] command which allows replacing the currently executed [[Object]] code with that of a different Object present on the board.&lt;br /&gt;
&lt;br /&gt;
Binding objects together causes them to share a single copy of the exact same program. This makes #bind useful for saving space when objects need to have the same code. However, this also means that if one of the objects runs a command that alters the code ([[Zap|#zap]] or [[Restore|#restore]]), the other objects will also be affected by that change. &lt;br /&gt;
&lt;br /&gt;
While it is common for objects that use #bind to have it be their only command, that does not need to be the case. Objects can use [[walk|#walk]] before binding to set a different [[flow]] direction, [[cycle|#cycle]] to give themselves a different speed, &amp;lt;code&amp;gt;/i&amp;lt;/code&amp;gt; to delay the start of execution, or whatever else suits one&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
With external editors it is possible to &amp;quot;pre-bind&amp;quot; an object to another without needing to use this command (even if the other object doesn&#039;t have a proper name!). However, care must be taken to make sure the objects are in the correct [[stat order]], or else memory corruption may result. This is because the object that actually contains the code must appear before any bound objects in the stat list; using ZZT&#039;s built-in #bind manages this for you, but authors using pre-bound objects must manage the stat order themselves.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&amp;lt;code&amp;gt;#bind &amp;lt;object name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bugs ==&lt;br /&gt;
&lt;br /&gt;
* In unmodified ZZT, &#039;&#039;&#039;#bind&#039;&#039;&#039; always causes the memory allocated by previously used code to be freed, without checking if the code is also bound to other Objects. As this does not clear the memory or invalidate the pointer to said code, execution can continue as normal. However, any dynamic memory allocation - such as opening text windows - may cause corruption and instability.&lt;br /&gt;
&lt;br /&gt;
{{ZZT-OOP navbox}}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=ZZT_file_format&amp;diff=772</id>
		<title>ZZT file format</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=ZZT_file_format&amp;diff=772"/>
		<updated>2026-01-30T08:40:54Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Clarify meanings of zero when used as board/stat indexes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General Info ==&lt;br /&gt;
&lt;br /&gt;
All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game both on the title screen to display the game name as well as determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded.&lt;br /&gt;
&lt;br /&gt;
There are some unused bytes after the world information that are ignored by the game. While it is safe to put any data whatsoever into this unused space, it is not saved back to disk by the ZZT and will be converted to empty padding. &lt;br /&gt;
&lt;br /&gt;
=== World Header ===&lt;br /&gt;
&lt;br /&gt;
This header is found at the head of all ZZT files. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
Unused values are preserved. Data not listed here is overwritten with zeroes when saving worlds.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|265||0x109||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After this follows the boards. Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== Board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes (excluding the two bytes from this value). Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== Board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board. 0 means no board connects there.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board. 0 means no board connects there.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board. 0 means no board connects there.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board. 0 means no board connects there.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Note that zero is used to indicate that there is no board exit in the given direction. This means it is impossible for a board edge to lead to the [[title screen]], because the title screen always has board index zero.&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader, Follower, and Parameter information, especially in older worlds / the commercial+shareware worlds.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If Length is positive, it represents the number of bytes that are in the code block. If Length is negative, the absolute value of Length represents the index of the Status Element the current stat is [[Bind|bound]] to, meaning the two stats share the same code block. (Zero simply means the stat&#039;s code block is empty; it is impossible to be bound to the stat at index 0.)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After this follows 8 bytes of padding (2 unused pointers).  If &amp;quot;Length&amp;quot; is positive, the code is stored after the padding.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element.  They are initialized on startup and used both in-game and in the editor.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ZZT elements===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70|| ||Yes|| ||Yes|| || ||0x0020||-1||0x0000||0x0010||0|| ||Empty|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x3973||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0039||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07|| || || || || || ||0x0020||1||0x4481||0x0010||0|| ||Monitor|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes|| || ||Yes|| ||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:|| || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03|| ||Yes|| || || || ||0x0020||-1||0x0000||0x3289||1||A||Ammo|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06|| || || || ||Yes|| ||0x0020||-1||0x0000||0x37B6||1||T||Torch|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes|| || || || ||0x0020||-1||0x0000||0x3306||1||G||Gem|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)|| ||Yes|| || || || ||0x0020||-1||0x0000||0x3169||1||K||Key|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)|| || || || || || ||0x0020||-1||0x0000||0x33DA||1||D||Door|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F|| ||Yes|| || || || ||0x0020||1||0x2F9F||0x308B||1||S||Scroll|| || || || || || ||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)|| || || || ||Yes|| ||0x0020||0||0x0000||0x3372||1||P||Passage|| || || || ||Room thru passage?|| || ||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F|| || || || || ||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator|| || ||Duplication rate?;SF|| || ||Source direction?|| ||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)|| ||Yes|| || || ||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05|| || || || || || ||0x0020||-1||0x0000||0x2034||1||E||Energizer|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F|| || || || || ||Yes||0x1D5D||1||0x1DE9||0x00F5||0|| ||Star|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)|| || || || || ||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:|| || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)|| || || || || ||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes|| || || || || ||0x0020||1||0x0F65||0x00F5||0|| ||Bullet|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9|| || ||Yes|| || || ||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:|| || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20|| || || || || || ||0x0020||-1||0x0000||0x38D0||3||F||Forest|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:|| || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||3||N||Normal|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||3||B||Breakable|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)|| ||Yes|| || || || ||0x0020||-1||0x0000||0x34E3||3||O||Boulder|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)|| || ||Yes||Yes|| || ||0x0020||-1||0x0000||0x3949||3||A||Fake|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x3848||3||I||Invisible|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)|| || || || || ||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall|| ||Starting time||Period|| || ||Wall direction|| ||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)|| || || || || ||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter|| || || || || ||Direction?|| ||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)|| || || || || ||Yes||0x122A||-1||0x0000||0x0010||0|| ||Line|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A|| || || || || || ||0x0020||-1||0x0000||0x0010||3||R||Ricochet|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes|| || || || ||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?|| || || || || ||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes|| || || || ||0x0020||1||0x0351||0x00F5||2||R||Ruffian|| ||Intelligence?||Resting time?|| || || || ||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)|| || || || || ||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object|| ||Character?|| || || || ||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)|| || || || || || ||0x0020||3||0x20AE||0x2295||2||V||Slime|| || ||Movement speed?;FS|| || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07|| || || || || || ||0x0020||3||0x2321||0x0010||2||Y||Shark|| ||Intelligence?|| || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)|| || || || || ||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun|| ||Intelligence?||Firing rate?||Firing type?|| || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)|| || || || || ||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher|| || || || || ||Push direction?|| ||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes|| || || || ||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?|| || || || || ||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes|| || || || ||0x0020||2||0x022D||0x00F5||2||T||Tiger|| ||Intelligence?||Firing rate?||Firing type?|| || || ||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes|| || || || || ||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?|| || || || ||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes|| || || || || ||0x0020||2||0x0EED||0x00F5||2||S||Segment|| || || || || || || ||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E|| ||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
The ZZT file format was reverse engineered by SaxxonPike, Kev Vance and David Hammond.&lt;br /&gt;
&lt;br /&gt;
This article is based on content written by SaxxonPike as part of [https://moddingwiki.shikadi.net/wiki/ZZT_Format a corresponding article on the ModdingWiki]. Saxxon has given permission to license their edits to that article under CC BY-SA 4.0.&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Size_limits&amp;diff=768</id>
		<title>Size limits</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Size_limits&amp;diff=768"/>
		<updated>2026-01-12T03:25:24Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Redirect to Memory limits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Memory limits]]&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Main_Page&amp;diff=536</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Main_Page&amp;diff=536"/>
		<updated>2025-08-08T08:03:45Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Redo front page, add Museum links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the Wiki of ZZT!&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ZZT is a text-mode game creation system written in 1991 by Tim Sweeney. This wiki documents various ZZT-related topics, such as its scripting language [[ZZT-OOP]], its built-in [[:Category:Elements|elements]], and technical information such as its [[ZZT file format|file formats]]. Contributions are welcome! See the [[Wiki:Contributing|contributing guide]] for details.&lt;br /&gt;
&lt;br /&gt;
For more community-related stuff, hop on over here:&lt;br /&gt;
&lt;br /&gt;
* [https://museumofzzt.com/ &#039;&#039;&#039;The Museum of ZZT&#039;&#039;&#039;] is the primary archive of ZZT games. They also host resources for [[Super ZZT]], as well as for community forks/clones of ZZT.&lt;br /&gt;
* [https://museumofzzt.com/discord/ &#039;&#039;&#039;The Discord of ZZT&#039;&#039;&#039;] is the Museum-affiliated community chat.&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=User:Quantum&amp;diff=499</id>
		<title>User:Quantum</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=User:Quantum&amp;diff=499"/>
		<updated>2024-02-05T00:55:51Z</updated>

		<summary type="html">&lt;p&gt;Quantum: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m Quantum. I administer this wiki, so if you encounter technical issues, let me know.&lt;br /&gt;
&lt;br /&gt;
Hop on the [https://discordapp.com/invite/Nar4Upf Discord of ZZT] and ask for QP.&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Module:CharSwatch&amp;diff=495</id>
		<title>Module:CharSwatch</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Module:CharSwatch&amp;diff=495"/>
		<updated>2023-06-26T08:01:41Z</updated>

		<summary type="html">&lt;p&gt;Quantum: attempt to fix scroll char&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.swatch(frame)&lt;br /&gt;
	local char = tonumber(frame.args[1])&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&amp;quot;[[char|#char]] %d %s (0x%02X)&amp;quot;,&lt;br /&gt;
		char, tostring(html_swatch(char)), char&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function html_swatch(i)&lt;br /&gt;
	local span = mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
	span:css({&lt;br /&gt;
		[&amp;quot;background-color&amp;quot;] = &amp;quot;#555&amp;quot;,&lt;br /&gt;
		[&amp;quot;box-shadow&amp;quot;] = &amp;quot;0 0 1px #808080&amp;quot;,&lt;br /&gt;
		color = &amp;quot;#fff&amp;quot;,&lt;br /&gt;
		display = &amp;quot;inline-block&amp;quot;,&lt;br /&gt;
		font = &amp;quot;14px EGA8&amp;quot;,&lt;br /&gt;
		height = &amp;quot;1em&amp;quot;,&lt;br /&gt;
		[&amp;quot;line-height&amp;quot;] = &amp;quot;100%&amp;quot;,&lt;br /&gt;
		[&amp;quot;min-height&amp;quot;] = &amp;quot;14px&amp;quot;,&lt;br /&gt;
		[&amp;quot;min-width&amp;quot;] = &amp;quot;8px&amp;quot;,&lt;br /&gt;
		padding = &amp;quot;2px&amp;quot;,&lt;br /&gt;
		[&amp;quot;vertical-align&amp;quot;] = &amp;quot;middle&amp;quot;&lt;br /&gt;
	})&lt;br /&gt;
	span:wikitext(char_to_unicode(i))&lt;br /&gt;
	return span&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local unicode_table = {&lt;br /&gt;
	[0] = &amp;quot; &amp;quot;, -- should be null, display as space&lt;br /&gt;
	[1] = &amp;quot;☺&amp;quot;,&lt;br /&gt;
	[2] = &amp;quot;☻&amp;quot;,&lt;br /&gt;
	[3] = &amp;quot;♥&amp;quot;,&lt;br /&gt;
	[4] = &amp;quot;♦&amp;quot;,&lt;br /&gt;
	[5] = &amp;quot;♣&amp;quot;,&lt;br /&gt;
	[6] = &amp;quot;♠&amp;quot;,&lt;br /&gt;
	[7] = &amp;quot;•&amp;quot;,&lt;br /&gt;
	[8] = &amp;quot;◘&amp;quot;,&lt;br /&gt;
	[9] = &amp;quot;○&amp;quot;,&lt;br /&gt;
	[10] = &amp;quot;◙&amp;quot;,&lt;br /&gt;
	[11] = &amp;quot;♂&amp;quot;,&lt;br /&gt;
	[12] = &amp;quot;♀&amp;quot;,&lt;br /&gt;
	[13] = &amp;quot;♪&amp;quot;,&lt;br /&gt;
	[14] = &amp;quot;♫&amp;quot;,&lt;br /&gt;
	[15] = &amp;quot;☼&amp;quot;,&lt;br /&gt;
	[16] = &amp;quot;►&amp;quot;,&lt;br /&gt;
	[17] = &amp;quot;◄&amp;quot;,&lt;br /&gt;
	[18] = &amp;quot;↕&amp;quot;,&lt;br /&gt;
	[19] = &amp;quot;‼&amp;quot;,&lt;br /&gt;
	[20] = &amp;quot;¶&amp;quot;,&lt;br /&gt;
	[21] = &amp;quot;§&amp;quot;,&lt;br /&gt;
	[22] = &amp;quot;▬&amp;quot;,&lt;br /&gt;
	[23] = &amp;quot;↨&amp;quot;,&lt;br /&gt;
	[24] = &amp;quot;↑&amp;quot;,&lt;br /&gt;
	[25] = &amp;quot;↓&amp;quot;,&lt;br /&gt;
	[26] = &amp;quot;→&amp;quot;,&lt;br /&gt;
	[27] = &amp;quot;←&amp;quot;,&lt;br /&gt;
	[28] = &amp;quot;∟&amp;quot;,&lt;br /&gt;
	[29] = &amp;quot;↔&amp;quot;,&lt;br /&gt;
	[30] = &amp;quot;▲&amp;quot;,&lt;br /&gt;
	[31] = &amp;quot;▼&amp;quot;,&lt;br /&gt;
	[127] = &amp;quot;⌂&amp;quot;,&lt;br /&gt;
	[128] = &amp;quot;Ç&amp;quot;,&lt;br /&gt;
	[129] = &amp;quot;ü&amp;quot;,&lt;br /&gt;
	[130] = &amp;quot;é&amp;quot;,&lt;br /&gt;
	[131] = &amp;quot;â&amp;quot;,&lt;br /&gt;
	[132] = &amp;quot;ä&amp;quot;,&lt;br /&gt;
	[133] = &amp;quot;à&amp;quot;,&lt;br /&gt;
	[134] = &amp;quot;å&amp;quot;,&lt;br /&gt;
	[135] = &amp;quot;ç&amp;quot;,&lt;br /&gt;
	[136] = &amp;quot;ê&amp;quot;,&lt;br /&gt;
	[137] = &amp;quot;ë&amp;quot;,&lt;br /&gt;
	[138] = &amp;quot;è&amp;quot;,&lt;br /&gt;
	[139] = &amp;quot;ï&amp;quot;,&lt;br /&gt;
	[140] = &amp;quot;î&amp;quot;,&lt;br /&gt;
	[141] = &amp;quot;ì&amp;quot;,&lt;br /&gt;
	[142] = &amp;quot;Ä&amp;quot;,&lt;br /&gt;
	[143] = &amp;quot;Å&amp;quot;,&lt;br /&gt;
	[144] = &amp;quot;É&amp;quot;,&lt;br /&gt;
	[145] = &amp;quot;æ&amp;quot;,&lt;br /&gt;
	[146] = &amp;quot;Æ&amp;quot;,&lt;br /&gt;
	[147] = &amp;quot;ô&amp;quot;,&lt;br /&gt;
	[148] = &amp;quot;ö&amp;quot;,&lt;br /&gt;
	[149] = &amp;quot;ò&amp;quot;,&lt;br /&gt;
	[150] = &amp;quot;û&amp;quot;,&lt;br /&gt;
	[151] = &amp;quot;ù&amp;quot;,&lt;br /&gt;
	[152] = &amp;quot;ÿ&amp;quot;,&lt;br /&gt;
	[153] = &amp;quot;Ö&amp;quot;,&lt;br /&gt;
	[154] = &amp;quot;Ü&amp;quot;,&lt;br /&gt;
	[155] = &amp;quot;¢&amp;quot;,&lt;br /&gt;
	[156] = &amp;quot;£&amp;quot;,&lt;br /&gt;
	[157] = &amp;quot;¥&amp;quot;,&lt;br /&gt;
	[158] = &amp;quot;₧&amp;quot;,&lt;br /&gt;
	[159] = &amp;quot;ƒ&amp;quot;,&lt;br /&gt;
	[160] = &amp;quot;á&amp;quot;,&lt;br /&gt;
	[161] = &amp;quot;í&amp;quot;,&lt;br /&gt;
	[162] = &amp;quot;ó&amp;quot;,&lt;br /&gt;
	[163] = &amp;quot;ú&amp;quot;,&lt;br /&gt;
	[164] = &amp;quot;ñ&amp;quot;,&lt;br /&gt;
	[165] = &amp;quot;Ñ&amp;quot;,&lt;br /&gt;
	[166] = &amp;quot;ª&amp;quot;,&lt;br /&gt;
	[167] = &amp;quot;º&amp;quot;,&lt;br /&gt;
	[168] = &amp;quot;¿&amp;quot;,&lt;br /&gt;
	[169] = &amp;quot;⌐&amp;quot;,&lt;br /&gt;
	[170] = &amp;quot;¬&amp;quot;,&lt;br /&gt;
	[171] = &amp;quot;½&amp;quot;,&lt;br /&gt;
	[172] = &amp;quot;¼&amp;quot;,&lt;br /&gt;
	[173] = &amp;quot;¡&amp;quot;,&lt;br /&gt;
	[174] = &amp;quot;«&amp;quot;,&lt;br /&gt;
	[175] = &amp;quot;»&amp;quot;,&lt;br /&gt;
	[176] = &amp;quot;░&amp;quot;,&lt;br /&gt;
	[177] = &amp;quot;▒&amp;quot;,&lt;br /&gt;
	[178] = &amp;quot;▓&amp;quot;,&lt;br /&gt;
	[179] = &amp;quot;│&amp;quot;,&lt;br /&gt;
	[180] = &amp;quot;┤&amp;quot;,&lt;br /&gt;
	[181] = &amp;quot;╡&amp;quot;,&lt;br /&gt;
	[182] = &amp;quot;╢&amp;quot;,&lt;br /&gt;
	[183] = &amp;quot;╖&amp;quot;,&lt;br /&gt;
	[184] = &amp;quot;╕&amp;quot;,&lt;br /&gt;
	[185] = &amp;quot;╣&amp;quot;,&lt;br /&gt;
	[186] = &amp;quot;║&amp;quot;,&lt;br /&gt;
	[187] = &amp;quot;╗&amp;quot;,&lt;br /&gt;
	[188] = &amp;quot;╝&amp;quot;,&lt;br /&gt;
	[189] = &amp;quot;╜&amp;quot;,&lt;br /&gt;
	[190] = &amp;quot;╛&amp;quot;,&lt;br /&gt;
	[191] = &amp;quot;┐&amp;quot;,&lt;br /&gt;
	[192] = &amp;quot;└&amp;quot;,&lt;br /&gt;
	[193] = &amp;quot;┴&amp;quot;,&lt;br /&gt;
	[194] = &amp;quot;┬&amp;quot;,&lt;br /&gt;
	[195] = &amp;quot;├&amp;quot;,&lt;br /&gt;
	[196] = &amp;quot;─&amp;quot;,&lt;br /&gt;
	[197] = &amp;quot;┼&amp;quot;,&lt;br /&gt;
	[198] = &amp;quot;╞&amp;quot;,&lt;br /&gt;
	[199] = &amp;quot;╟&amp;quot;,&lt;br /&gt;
	[200] = &amp;quot;╚&amp;quot;,&lt;br /&gt;
	[201] = &amp;quot;╔&amp;quot;,&lt;br /&gt;
	[202] = &amp;quot;╩&amp;quot;,&lt;br /&gt;
	[203] = &amp;quot;╦&amp;quot;,&lt;br /&gt;
	[204] = &amp;quot;╠&amp;quot;,&lt;br /&gt;
	[205] = &amp;quot;═&amp;quot;,&lt;br /&gt;
	[206] = &amp;quot;╬&amp;quot;,&lt;br /&gt;
	[207] = &amp;quot;╧&amp;quot;,&lt;br /&gt;
	[208] = &amp;quot;╨&amp;quot;,&lt;br /&gt;
	[209] = &amp;quot;╤&amp;quot;,&lt;br /&gt;
	[210] = &amp;quot;╥&amp;quot;,&lt;br /&gt;
	[211] = &amp;quot;╙&amp;quot;,&lt;br /&gt;
	[212] = &amp;quot;╘&amp;quot;,&lt;br /&gt;
	[213] = &amp;quot;╒&amp;quot;,&lt;br /&gt;
	[214] = &amp;quot;╓&amp;quot;,&lt;br /&gt;
	[215] = &amp;quot;╫&amp;quot;,&lt;br /&gt;
	[216] = &amp;quot;╪&amp;quot;,&lt;br /&gt;
	[217] = &amp;quot;┘&amp;quot;,&lt;br /&gt;
	[218] = &amp;quot;┌&amp;quot;,&lt;br /&gt;
	[219] = &amp;quot;█&amp;quot;,&lt;br /&gt;
	[220] = &amp;quot;▄&amp;quot;,&lt;br /&gt;
	[221] = &amp;quot;▌&amp;quot;,&lt;br /&gt;
	[222] = &amp;quot;▐&amp;quot;,&lt;br /&gt;
	[223] = &amp;quot;▀&amp;quot;,&lt;br /&gt;
	[224] = &amp;quot;ɑ&amp;quot;,&lt;br /&gt;
	[225] = &amp;quot;ϐ&amp;quot;,&lt;br /&gt;
	[226] = &amp;quot;ᴦ&amp;quot;,&lt;br /&gt;
	[227] = &amp;quot;π&amp;quot;,&lt;br /&gt;
	[228] = &amp;quot;∑&amp;quot;,&lt;br /&gt;
	[229] = &amp;quot;ơ&amp;quot;,&lt;br /&gt;
	[230] = &amp;quot;µ&amp;quot;,&lt;br /&gt;
	[231] = &amp;quot;ᴛ&amp;quot;,&lt;br /&gt;
	[232] = &amp;quot;Φ&amp;quot;,&lt;br /&gt;
	[233] = &amp;quot;ϴ&amp;quot;,&lt;br /&gt;
	[234] = &amp;quot;Ω&amp;quot;,&lt;br /&gt;
	[235] = &amp;quot;ẟ&amp;quot;,&lt;br /&gt;
	[236] = &amp;quot;∞&amp;quot;,&lt;br /&gt;
	[237] = &amp;quot;∅&amp;quot;,&lt;br /&gt;
	[238] = &amp;quot;∈&amp;quot;,&lt;br /&gt;
	[239] = &amp;quot;∩&amp;quot;,&lt;br /&gt;
	[240] = &amp;quot;≡&amp;quot;,&lt;br /&gt;
	[241] = &amp;quot;±&amp;quot;,&lt;br /&gt;
	[242] = &amp;quot;≥&amp;quot;,&lt;br /&gt;
	[243] = &amp;quot;≤&amp;quot;,&lt;br /&gt;
	[244] = &amp;quot;⌠&amp;quot;,&lt;br /&gt;
	[245] = &amp;quot;⌡&amp;quot;,&lt;br /&gt;
	[246] = &amp;quot;÷&amp;quot;,&lt;br /&gt;
	[247] = &amp;quot;≈&amp;quot;,&lt;br /&gt;
	[248] = &amp;quot;°&amp;quot;,&lt;br /&gt;
	[249] = &amp;quot;∙&amp;quot;,&lt;br /&gt;
	[250] = &amp;quot;·&amp;quot;,&lt;br /&gt;
	[251] = &amp;quot;√&amp;quot;,&lt;br /&gt;
	[252] = &amp;quot;ⁿ&amp;quot;,&lt;br /&gt;
	[253] = &amp;quot;²&amp;quot;,&lt;br /&gt;
	[254] = &amp;quot;■&amp;quot;,&lt;br /&gt;
	[255] = &amp;quot; &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function char_to_unicode(i)&lt;br /&gt;
	if i &amp;lt; 0 or i &amp;gt; 255 then&lt;br /&gt;
		error(&amp;quot;char index out of range: &amp;quot; .. i)&lt;br /&gt;
	end&lt;br /&gt;
	if i &amp;gt;= 32 and i &amp;lt;= 126 then&lt;br /&gt;
		-- Handle regular ASCII characters&lt;br /&gt;
		return string.char(i)&lt;br /&gt;
	end&lt;br /&gt;
	return unicode_table[i]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=ZZT_file_format&amp;diff=465</id>
		<title>ZZT file format</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=ZZT_file_format&amp;diff=465"/>
		<updated>2021-12-06T00:12:08Z</updated>

		<summary type="html">&lt;p&gt;Quantum: /* Credits */ I messaged Saxxon over Discord and got explicit okay to license their edits to the ModdingWiki article under CC BY-SA 4.0.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General Info ==&lt;br /&gt;
&lt;br /&gt;
All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game both on the title screen to display the game name as well as determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded.&lt;br /&gt;
&lt;br /&gt;
There are some unused bytes after the world information that are ignored by the game. While it is safe to put any data whatsoever into this unused space, it is not saved back to disk by the ZZT and will be converted to empty padding. &lt;br /&gt;
&lt;br /&gt;
=== World Header ===&lt;br /&gt;
&lt;br /&gt;
This header is found at the head of all ZZT files. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
Unused values are preserved. Data not listed here is overwritten with zeroes when saving worlds.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|265||0x109||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After this follows the boards. Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== Board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes (excluding the two bytes from this value). Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== Board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader, Follower, and Parameter information, especially in older worlds / the commercial+shareware worlds.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After this follows 8 bytes of padding (2 unused pointers).  If &amp;quot;Length&amp;quot; is positive, the code is stored after the padding.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element.  They are initialized on startup and used both in-game and in the editor.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ZZT elements===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70|| ||Yes|| ||Yes|| || ||0x0020||-1||0x0000||0x0010||0|| ||Empty|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x3973||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0039||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07|| || || || || || ||0x0020||1||0x4481||0x0010||0|| ||Monitor|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes|| || ||Yes|| ||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:|| || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03|| ||Yes|| || || || ||0x0020||-1||0x0000||0x3289||1||A||Ammo|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06|| || || || ||Yes|| ||0x0020||-1||0x0000||0x37B6||1||T||Torch|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes|| || || || ||0x0020||-1||0x0000||0x3306||1||G||Gem|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)|| ||Yes|| || || || ||0x0020||-1||0x0000||0x3169||1||K||Key|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)|| || || || || || ||0x0020||-1||0x0000||0x33DA||1||D||Door|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F|| ||Yes|| || || || ||0x0020||1||0x2F9F||0x308B||1||S||Scroll|| || || || || || ||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)|| || || || ||Yes|| ||0x0020||0||0x0000||0x3372||1||P||Passage|| || || || ||Room thru passage?|| || ||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F|| || || || || ||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator|| || ||Duplication rate?;SF|| || ||Source direction?|| ||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)|| ||Yes|| || || ||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05|| || || || || || ||0x0020||-1||0x0000||0x2034||1||E||Energizer|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F|| || || || || ||Yes||0x1D5D||1||0x1DE9||0x00F5||0|| ||Star|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)|| || || || || ||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:|| || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)|| || || || || ||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes|| || || || || ||0x0020||1||0x0F65||0x00F5||0|| ||Bullet|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9|| || ||Yes|| || || ||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:|| || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20|| || || || || || ||0x0020||-1||0x0000||0x38D0||3||F||Forest|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:|| || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||3||N||Normal|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||3||B||Breakable|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)|| ||Yes|| || || || ||0x0020||-1||0x0000||0x34E3||3||O||Boulder|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)|| || ||Yes||Yes|| || ||0x0020||-1||0x0000||0x3949||3||A||Fake|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x3848||3||I||Invisible|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)|| || || || || ||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall|| ||Starting time||Period|| || ||Wall direction|| ||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)|| || || || || ||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter|| || || || || ||Direction?|| ||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)|| || || || || ||Yes||0x122A||-1||0x0000||0x0010||0|| ||Line|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A|| || || || || || ||0x0020||-1||0x0000||0x0010||3||R||Ricochet|| || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes|| || || || ||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?|| || || || || ||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes|| || || || ||0x0020||1||0x0351||0x00F5||2||R||Ruffian|| ||Intelligence?||Resting time?|| || || || ||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)|| || || || || ||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object|| ||Character?|| || || || ||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)|| || || || || || ||0x0020||3||0x20AE||0x2295||2||V||Slime|| || ||Movement speed?;FS|| || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07|| || || || || || ||0x0020||3||0x2321||0x0010||2||Y||Shark|| ||Intelligence?|| || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)|| || || || || ||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun|| ||Intelligence?||Firing rate?||Firing type?|| || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)|| || || || || ||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher|| || || || || ||Push direction?|| ||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes|| || || || ||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?|| || || || || ||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes|| || || || ||0x0020||2||0x022D||0x00F5||2||T||Tiger|| ||Intelligence?||Firing rate?||Firing type?|| || || ||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes|| || || || || ||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?|| || || || ||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes|| || || || || ||0x0020||2||0x0EED||0x00F5||2||S||Segment|| || || || || || || ||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E|| ||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)|| || || || || || ||0x0020||-1||0x0000||0x0010||0|| || || || || || || || || ||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
The ZZT file format was reverse engineered by SaxxonPike, Kev Vance and David Hammond.&lt;br /&gt;
&lt;br /&gt;
This article is based on content written by SaxxonPike as part of [https://moddingwiki.shikadi.net/wiki/ZZT_Format a corresponding article on the ModdingWiki]. Saxxon has given permission to license their edits to that article under CC BY-SA 4.0.&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=MediaWiki:Common.css&amp;diff=424</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=MediaWiki:Common.css&amp;diff=424"/>
		<updated>2021-02-15T07:55:17Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Add WIP styles for byte layout diagram&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
@font-face {&lt;br /&gt;
	font-family: &amp;quot;EGA8&amp;quot;;&lt;br /&gt;
	src: url(&amp;quot;/w/images/a/ae/Web437_IBM_EGA_8x14.woff&amp;quot;) format(&amp;quot;woff&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.blinking {&lt;br /&gt;
	animation: 2.5s linear infinite blinking_text;&lt;br /&gt;
}&lt;br /&gt;
@keyframes blinking_text {&lt;br /&gt;
	35% {&lt;br /&gt;
		opacity: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	45% {&lt;br /&gt;
		opacity: 0%;&lt;br /&gt;
	}&lt;br /&gt;
	55% {&lt;br /&gt;
		opacity: 0%;&lt;br /&gt;
	}&lt;br /&gt;
	65% {&lt;br /&gt;
		opacity: 100%;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Navbox CSS */&lt;br /&gt;
.navbox {&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	border: 1px solid #aaa;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	margin: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
.navbox .title th {&lt;br /&gt;
	background: #B6CEE7;&lt;br /&gt;
}&lt;br /&gt;
.navbox .group th {&lt;br /&gt;
	background: #DBE7F3;&lt;br /&gt;
	padding-left: 1em;&lt;br /&gt;
	padding-right: 1em;&lt;br /&gt;
}&lt;br /&gt;
.navbox .group td {&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	padding-right: 0.5em;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.navbox .group:nth-child(2n+1) td {&lt;br /&gt;
	background: #f5f5f5;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Style lists as dot-separated items */&lt;br /&gt;
.navbox ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.navbox li {&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.navbox li:nth-child(n+2):before {&lt;br /&gt;
	content: &amp;quot; · &amp;quot;;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Experimental: styles for a future byte layout diagram*/&lt;br /&gt;
table.byte-layout {&lt;br /&gt;
  border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
table.byte-layout th, table.byte-layout td {&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
}&lt;br /&gt;
table.byte-layout tr:first-child th {&lt;br /&gt;
  width: 50px;&lt;br /&gt;
}&lt;br /&gt;
table.byte-layout tr:nth-child(n+2) td {&lt;br /&gt;
  border: 1px solid black;&lt;br /&gt;
}&lt;br /&gt;
table.byte-layout .integer {&lt;br /&gt;
  background-color: #fcc;&lt;br /&gt;
}&lt;br /&gt;
table.byte-layout .byte {&lt;br /&gt;
  background-color: #f3e2d8;&lt;br /&gt;
}&lt;br /&gt;
table.byte-layout .literal {&lt;br /&gt;
  background-color: #cedbf5;&lt;br /&gt;
}&lt;br /&gt;
table.byte-layout .boolean {&lt;br /&gt;
  background-color: #def2dc;&lt;br /&gt;
}&lt;br /&gt;
table.byte-layout .pointer {&lt;br /&gt;
  background-color: #f4dcf2;&lt;br /&gt;
}&lt;br /&gt;
table.byte-layout .string {&lt;br /&gt;
  background: linear-gradient(90deg, #b9dce4 0 50px, #dff1f0 50px 100%);&lt;br /&gt;
}&lt;br /&gt;
table.byte-layout .string-continued {&lt;br /&gt;
  background-color: #dff1f0;&lt;br /&gt;
}&lt;br /&gt;
table.byte-layout .padding {&lt;br /&gt;
  background-color: #c3c3c3;&lt;br /&gt;
}&lt;br /&gt;
table.byte-layout tr td.skip {&lt;br /&gt;
  background-color: inherit;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  border: 0px;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=User:Quantum/Byte_layout&amp;diff=421</id>
		<title>User:Quantum/Byte layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=User:Quantum/Byte_layout&amp;diff=421"/>
		<updated>2021-02-14T19:18:29Z</updated>

		<summary type="html">&lt;p&gt;Quantum: WIP: Half of a mockup for a byte layout diagram. Not an actual file format.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table class=&amp;quot;byte-layout&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;th&amp;gt;0&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;1&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;2&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;3&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;4&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;5&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;6&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;7&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;8&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;9&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;A&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;B&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;C&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;D&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;E&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;F&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;0x0&amp;lt;/th&amp;gt;&amp;lt;td class=&amp;quot;literal&amp;quot; colspan=2&amp;gt;FF FF&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;boolean&amp;quot;&amp;gt;save&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;byte&amp;quot;&amp;gt;# boards&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;integer&amp;quot; colspan=2&amp;gt;health&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;integer&amp;quot; colspan=2&amp;gt;torches&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;string&amp;quot; colspan=8&amp;gt;Flag 1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;0x10&amp;lt;/th&amp;gt;&amp;lt;td class=&amp;quot;string-continued&amp;quot; colspan=12&amp;gt;Flag 1&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;pointer&amp;quot; colspan=4&amp;gt;data pointer&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;0x20&amp;lt;/th&amp;gt;&amp;lt;td class=&amp;quot;integer&amp;quot; colspan=2&amp;gt;something&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;literal&amp;quot;&amp;gt;00&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;integer&amp;quot; colspan=2&amp;gt;another thing&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;padding&amp;quot; colspan=11&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td class=&amp;quot;skip&amp;quot; colspan=17&amp;gt;…&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;0x40&amp;lt;/th&amp;gt;&amp;lt;td class=&amp;quot;padding&amp;quot; colspan=15&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;byte&amp;quot;&amp;gt;blue key&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Line&amp;diff=416</id>
		<title>Line</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Line&amp;diff=416"/>
		<updated>2021-02-14T06:16:19Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Add visual demonstration of the line wall display glitch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Element&lt;br /&gt;
|zzt-oop name=line&lt;br /&gt;
|id={{Byte|31}}&lt;br /&gt;
|char={{CharSwatch|206}}&lt;br /&gt;
|stats=no&lt;br /&gt;
|category=terrain&lt;br /&gt;
|effect on movement=wall&lt;br /&gt;
|destructible=no&lt;br /&gt;
|uses zzt-oop color=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;line&#039;&#039;&#039; element (or more colloquially, &amp;quot;linewall&amp;quot;) is one of the built-in wall elements in [[ZZT]]. It cannot be moved and is impervious to all damage. It is functionally identical to the [[solid]] and [[normal]], except with a sophisticated drawing procedure. Lines can be placed in all of the default [[ZZT-OOP]] colors and can be placed in any of the available colors with an external editor.&lt;br /&gt;
&lt;br /&gt;
== Draw Procedure ==&lt;br /&gt;
&lt;br /&gt;
When linewalls are drawn they check if each of the four tiles surrounding them are either another line or a [[edge|board edge]], and then pick the corresponding tile from the following table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ Line Neighbor Chart&lt;br /&gt;
|-&lt;br /&gt;
! Character !! E !! W !! S !! N&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|249}} || N || N || N || N&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|208}} || N || N || N || Y&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|210}} || N || N || Y || N&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|186}} || N || N || Y || Y&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|181}} || N || Y || N || N&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|188}} || N || Y || N || Y&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|187}} || N || Y || Y || N&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|185}} || N || Y || Y || Y&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|198}} || Y || N || N || N&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|200}} || Y || N || N || Y&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|201}} || Y || N || Y || N&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|204}} || Y || N || Y || Y&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|205}} || Y || Y || N || N&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|202}} || Y || Y || N || Y&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|203}} || Y || Y || Y || N&lt;br /&gt;
|-&lt;br /&gt;
| {{CharSwatch|206}} || Y || Y || Y || Y&lt;br /&gt;
|}&lt;br /&gt;
[[File:Line-display-glitch.png|thumb|96x96px|An object places line walls from left to right, creating a temporary visual glitch.]]&lt;br /&gt;
If a portion of a linewall is removed from the board, then the surrounding linewalls will not update their graphics accordingly unless something forces them to redraw. The simplest way to do this is to have an object run the code &amp;lt;code&amp;gt;#change line line&amp;lt;/code&amp;gt;. Other events, such as re-entering the board, reloading from a save, having a text window disappear, or having the tile be revealed by a torch can also have the same effect.&lt;br /&gt;
&lt;br /&gt;
[[Category:Elements]]&lt;br /&gt;
{{ElementsNavbox}}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=File:Line-display-glitch.png&amp;diff=415</id>
		<title>File:Line-display-glitch.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=File:Line-display-glitch.png&amp;diff=415"/>
		<updated>2021-02-14T06:04:15Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Demonstration of the line wall display glitch when they are placed tile-by-tile&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Demonstration of the line wall display glitch when they are placed tile-by-tile&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Not&amp;diff=414</id>
		<title>Not</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Not&amp;diff=414"/>
		<updated>2021-02-14T05:36:37Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Making description a little more precise&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:not}}&lt;br /&gt;
&#039;&#039;&#039;not&#039;&#039;&#039; is a condition modifier in [[ZZT-OOP]]. It negates the result of the condition check which follow it within an [[if|#if]] statement. For example, &amp;lt;code&amp;gt;#if not foo give torches 1&amp;lt;/code&amp;gt; will add 1 to the [[torches]] counter if no [[flag]] named &amp;quot;foo&amp;quot; is set.&lt;br /&gt;
&lt;br /&gt;
{{ZZT-OOP navbox}}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Module:CharSwatch&amp;diff=413</id>
		<title>Module:CharSwatch</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Module:CharSwatch&amp;diff=413"/>
		<updated>2021-02-14T05:32:35Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Fix: make pi lowercase&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.swatch(frame)&lt;br /&gt;
	local char = tonumber(frame.args[1])&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&amp;quot;[[char|#char]] %d %s (0x%02X)&amp;quot;,&lt;br /&gt;
		char, tostring(html_swatch(char)), char&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function html_swatch(i)&lt;br /&gt;
	local span = mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
	span:css({&lt;br /&gt;
		[&amp;quot;background-color&amp;quot;] = &amp;quot;#555&amp;quot;,&lt;br /&gt;
		[&amp;quot;box-shadow&amp;quot;] = &amp;quot;0 0 1px #808080&amp;quot;,&lt;br /&gt;
		color = &amp;quot;#fff&amp;quot;,&lt;br /&gt;
		display = &amp;quot;inline-block&amp;quot;,&lt;br /&gt;
		font = &amp;quot;14px EGA8&amp;quot;,&lt;br /&gt;
		height = &amp;quot;1em&amp;quot;,&lt;br /&gt;
		[&amp;quot;line-height&amp;quot;] = &amp;quot;100%&amp;quot;,&lt;br /&gt;
		[&amp;quot;min-height&amp;quot;] = &amp;quot;14px&amp;quot;,&lt;br /&gt;
		[&amp;quot;min-width&amp;quot;] = &amp;quot;8px&amp;quot;,&lt;br /&gt;
		padding = &amp;quot;2px&amp;quot;,&lt;br /&gt;
		[&amp;quot;vertical-align&amp;quot;] = &amp;quot;middle&amp;quot;&lt;br /&gt;
	})&lt;br /&gt;
	span:wikitext(char_to_unicode(i))&lt;br /&gt;
	return span&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local unicode_table = {&lt;br /&gt;
	[0] = &amp;quot; &amp;quot;, -- should be null, display as space&lt;br /&gt;
	[1] = &amp;quot;☺&amp;quot;,&lt;br /&gt;
	[2] = &amp;quot;☻&amp;quot;,&lt;br /&gt;
	[3] = &amp;quot;♥&amp;quot;,&lt;br /&gt;
	[4] = &amp;quot;♦&amp;quot;,&lt;br /&gt;
	[5] = &amp;quot;♣&amp;quot;,&lt;br /&gt;
	[6] = &amp;quot;♠&amp;quot;,&lt;br /&gt;
	[7] = &amp;quot;•&amp;quot;,&lt;br /&gt;
	[8] = &amp;quot;◘&amp;quot;,&lt;br /&gt;
	[9] = &amp;quot;○&amp;quot;,&lt;br /&gt;
	[10] = &amp;quot;◙&amp;quot;,&lt;br /&gt;
	[11] = &amp;quot;♂&amp;quot;,&lt;br /&gt;
	[12] = &amp;quot;♀&amp;quot;,&lt;br /&gt;
	[13] = &amp;quot;♪&amp;quot;,&lt;br /&gt;
	[14] = &amp;quot;♫&amp;quot;,&lt;br /&gt;
	[15] = &amp;quot;☼&amp;quot;,&lt;br /&gt;
	[16] = &amp;quot;►&amp;quot;,&lt;br /&gt;
	[17] = &amp;quot;◄&amp;quot;,&lt;br /&gt;
	[18] = &amp;quot;↕&amp;quot;,&lt;br /&gt;
	[19] = &amp;quot;‼&amp;quot;,&lt;br /&gt;
	[20] = &amp;quot;¶&amp;quot;,&lt;br /&gt;
	[21] = &amp;quot;§&amp;quot;,&lt;br /&gt;
	[22] = &amp;quot;▬&amp;quot;,&lt;br /&gt;
	[23] = &amp;quot;↨&amp;quot;,&lt;br /&gt;
	[24] = &amp;quot;↑&amp;quot;,&lt;br /&gt;
	[25] = &amp;quot;↓&amp;quot;,&lt;br /&gt;
	[26] = &amp;quot;→&amp;quot;,&lt;br /&gt;
	[27] = &amp;quot;←&amp;quot;,&lt;br /&gt;
	[28] = &amp;quot;∟&amp;quot;,&lt;br /&gt;
	[29] = &amp;quot;↔&amp;quot;,&lt;br /&gt;
	[30] = &amp;quot;▲&amp;quot;,&lt;br /&gt;
	[31] = &amp;quot;▼&amp;quot;,&lt;br /&gt;
	[127] = &amp;quot;⌂&amp;quot;,&lt;br /&gt;
	[128] = &amp;quot;Ç&amp;quot;,&lt;br /&gt;
	[129] = &amp;quot;ü&amp;quot;,&lt;br /&gt;
	[130] = &amp;quot;é&amp;quot;,&lt;br /&gt;
	[131] = &amp;quot;â&amp;quot;,&lt;br /&gt;
	[132] = &amp;quot;ä&amp;quot;,&lt;br /&gt;
	[133] = &amp;quot;à&amp;quot;,&lt;br /&gt;
	[134] = &amp;quot;å&amp;quot;,&lt;br /&gt;
	[135] = &amp;quot;ç&amp;quot;,&lt;br /&gt;
	[136] = &amp;quot;ê&amp;quot;,&lt;br /&gt;
	[137] = &amp;quot;ë&amp;quot;,&lt;br /&gt;
	[138] = &amp;quot;è&amp;quot;,&lt;br /&gt;
	[139] = &amp;quot;ï&amp;quot;,&lt;br /&gt;
	[140] = &amp;quot;î&amp;quot;,&lt;br /&gt;
	[141] = &amp;quot;ì&amp;quot;,&lt;br /&gt;
	[142] = &amp;quot;Ä&amp;quot;,&lt;br /&gt;
	[143] = &amp;quot;Å&amp;quot;,&lt;br /&gt;
	[144] = &amp;quot;É&amp;quot;,&lt;br /&gt;
	[145] = &amp;quot;æ&amp;quot;,&lt;br /&gt;
	[146] = &amp;quot;Æ&amp;quot;,&lt;br /&gt;
	[147] = &amp;quot;ô&amp;quot;,&lt;br /&gt;
	[148] = &amp;quot;ö&amp;quot;,&lt;br /&gt;
	[149] = &amp;quot;ò&amp;quot;,&lt;br /&gt;
	[150] = &amp;quot;û&amp;quot;,&lt;br /&gt;
	[151] = &amp;quot;ù&amp;quot;,&lt;br /&gt;
	[152] = &amp;quot;ÿ&amp;quot;,&lt;br /&gt;
	[153] = &amp;quot;Ö&amp;quot;,&lt;br /&gt;
	[154] = &amp;quot;Ü&amp;quot;,&lt;br /&gt;
	[155] = &amp;quot;¢&amp;quot;,&lt;br /&gt;
	[156] = &amp;quot;£&amp;quot;,&lt;br /&gt;
	[157] = &amp;quot;¥&amp;quot;,&lt;br /&gt;
	[158] = &amp;quot;₧&amp;quot;,&lt;br /&gt;
	[159] = &amp;quot;ƒ&amp;quot;,&lt;br /&gt;
	[160] = &amp;quot;á&amp;quot;,&lt;br /&gt;
	[161] = &amp;quot;í&amp;quot;,&lt;br /&gt;
	[162] = &amp;quot;ó&amp;quot;,&lt;br /&gt;
	[163] = &amp;quot;ú&amp;quot;,&lt;br /&gt;
	[164] = &amp;quot;ñ&amp;quot;,&lt;br /&gt;
	[165] = &amp;quot;Ñ&amp;quot;,&lt;br /&gt;
	[166] = &amp;quot;ª&amp;quot;,&lt;br /&gt;
	[167] = &amp;quot;º&amp;quot;,&lt;br /&gt;
	[168] = &amp;quot;¿&amp;quot;,&lt;br /&gt;
	[169] = &amp;quot;⌐&amp;quot;,&lt;br /&gt;
	[170] = &amp;quot;¬&amp;quot;,&lt;br /&gt;
	[171] = &amp;quot;½&amp;quot;,&lt;br /&gt;
	[172] = &amp;quot;¼&amp;quot;,&lt;br /&gt;
	[173] = &amp;quot;¡&amp;quot;,&lt;br /&gt;
	[174] = &amp;quot;«&amp;quot;,&lt;br /&gt;
	[175] = &amp;quot;»&amp;quot;,&lt;br /&gt;
	[176] = &amp;quot;░&amp;quot;,&lt;br /&gt;
	[177] = &amp;quot;▒&amp;quot;,&lt;br /&gt;
	[178] = &amp;quot;▓&amp;quot;,&lt;br /&gt;
	[179] = &amp;quot;│&amp;quot;,&lt;br /&gt;
	[180] = &amp;quot;┤&amp;quot;,&lt;br /&gt;
	[181] = &amp;quot;╡&amp;quot;,&lt;br /&gt;
	[182] = &amp;quot;╢&amp;quot;,&lt;br /&gt;
	[183] = &amp;quot;╖&amp;quot;,&lt;br /&gt;
	[184] = &amp;quot;╕&amp;quot;,&lt;br /&gt;
	[185] = &amp;quot;╣&amp;quot;,&lt;br /&gt;
	[186] = &amp;quot;║&amp;quot;,&lt;br /&gt;
	[187] = &amp;quot;╗&amp;quot;,&lt;br /&gt;
	[188] = &amp;quot;╝&amp;quot;,&lt;br /&gt;
	[189] = &amp;quot;╜&amp;quot;,&lt;br /&gt;
	[190] = &amp;quot;╛&amp;quot;,&lt;br /&gt;
	[191] = &amp;quot;┐&amp;quot;,&lt;br /&gt;
	[192] = &amp;quot;└&amp;quot;,&lt;br /&gt;
	[193] = &amp;quot;┴&amp;quot;,&lt;br /&gt;
	[194] = &amp;quot;┬&amp;quot;,&lt;br /&gt;
	[195] = &amp;quot;├&amp;quot;,&lt;br /&gt;
	[196] = &amp;quot;─&amp;quot;,&lt;br /&gt;
	[197] = &amp;quot;┼&amp;quot;,&lt;br /&gt;
	[198] = &amp;quot;╞&amp;quot;,&lt;br /&gt;
	[199] = &amp;quot;╟&amp;quot;,&lt;br /&gt;
	[200] = &amp;quot;╚&amp;quot;,&lt;br /&gt;
	[201] = &amp;quot;╔&amp;quot;,&lt;br /&gt;
	[202] = &amp;quot;╩&amp;quot;,&lt;br /&gt;
	[203] = &amp;quot;╦&amp;quot;,&lt;br /&gt;
	[204] = &amp;quot;╠&amp;quot;,&lt;br /&gt;
	[205] = &amp;quot;═&amp;quot;,&lt;br /&gt;
	[206] = &amp;quot;╬&amp;quot;,&lt;br /&gt;
	[207] = &amp;quot;╧&amp;quot;,&lt;br /&gt;
	[208] = &amp;quot;╨&amp;quot;,&lt;br /&gt;
	[209] = &amp;quot;╤&amp;quot;,&lt;br /&gt;
	[210] = &amp;quot;╥&amp;quot;,&lt;br /&gt;
	[211] = &amp;quot;╙&amp;quot;,&lt;br /&gt;
	[212] = &amp;quot;╘&amp;quot;,&lt;br /&gt;
	[213] = &amp;quot;╒&amp;quot;,&lt;br /&gt;
	[214] = &amp;quot;╓&amp;quot;,&lt;br /&gt;
	[215] = &amp;quot;╫&amp;quot;,&lt;br /&gt;
	[216] = &amp;quot;╪&amp;quot;,&lt;br /&gt;
	[217] = &amp;quot;┘&amp;quot;,&lt;br /&gt;
	[218] = &amp;quot;┌&amp;quot;,&lt;br /&gt;
	[219] = &amp;quot;█&amp;quot;,&lt;br /&gt;
	[220] = &amp;quot;▄&amp;quot;,&lt;br /&gt;
	[221] = &amp;quot;▌&amp;quot;,&lt;br /&gt;
	[222] = &amp;quot;▐&amp;quot;,&lt;br /&gt;
	[223] = &amp;quot;▀&amp;quot;,&lt;br /&gt;
	[224] = &amp;quot;ɑ&amp;quot;,&lt;br /&gt;
	[225] = &amp;quot;ϐ&amp;quot;,&lt;br /&gt;
	[226] = &amp;quot;ᴦ&amp;quot;,&lt;br /&gt;
	[227] = &amp;quot;π&amp;quot;,&lt;br /&gt;
	[228] = &amp;quot;∑&amp;quot;,&lt;br /&gt;
	[229] = &amp;quot;ơ&amp;quot;,&lt;br /&gt;
	[230] = &amp;quot;µ&amp;quot;,&lt;br /&gt;
	[231] = &amp;quot;ᴛ&amp;quot;,&lt;br /&gt;
	[232] = &amp;quot;ɸ&amp;quot;,&lt;br /&gt;
	[233] = &amp;quot;ϴ&amp;quot;,&lt;br /&gt;
	[234] = &amp;quot;Ω&amp;quot;,&lt;br /&gt;
	[235] = &amp;quot;ẟ&amp;quot;,&lt;br /&gt;
	[236] = &amp;quot;∞&amp;quot;,&lt;br /&gt;
	[237] = &amp;quot;∅&amp;quot;,&lt;br /&gt;
	[238] = &amp;quot;∈&amp;quot;,&lt;br /&gt;
	[239] = &amp;quot;∩&amp;quot;,&lt;br /&gt;
	[240] = &amp;quot;≡&amp;quot;,&lt;br /&gt;
	[241] = &amp;quot;±&amp;quot;,&lt;br /&gt;
	[242] = &amp;quot;≥&amp;quot;,&lt;br /&gt;
	[243] = &amp;quot;≤&amp;quot;,&lt;br /&gt;
	[244] = &amp;quot;⌠&amp;quot;,&lt;br /&gt;
	[245] = &amp;quot;⌡&amp;quot;,&lt;br /&gt;
	[246] = &amp;quot;÷&amp;quot;,&lt;br /&gt;
	[247] = &amp;quot;≈&amp;quot;,&lt;br /&gt;
	[248] = &amp;quot;°&amp;quot;,&lt;br /&gt;
	[249] = &amp;quot;∙&amp;quot;,&lt;br /&gt;
	[250] = &amp;quot;·&amp;quot;,&lt;br /&gt;
	[251] = &amp;quot;√&amp;quot;,&lt;br /&gt;
	[252] = &amp;quot;ⁿ&amp;quot;,&lt;br /&gt;
	[253] = &amp;quot;²&amp;quot;,&lt;br /&gt;
	[254] = &amp;quot;■&amp;quot;,&lt;br /&gt;
	[255] = &amp;quot; &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function char_to_unicode(i)&lt;br /&gt;
	if i &amp;lt; 0 or i &amp;gt; 255 then&lt;br /&gt;
		error(&amp;quot;char index out of range: &amp;quot; .. i)&lt;br /&gt;
	end&lt;br /&gt;
	if i &amp;gt;= 32 and i &amp;lt;= 126 then&lt;br /&gt;
		-- Handle regular ASCII characters&lt;br /&gt;
		return string.char(i)&lt;br /&gt;
	end&lt;br /&gt;
	return unicode_table[i]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Spinning_gun&amp;diff=412</id>
		<title>Spinning gun</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Spinning_gun&amp;diff=412"/>
		<updated>2021-02-14T05:28:33Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Formatting, add link, add an elaboration on character to the infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Element&lt;br /&gt;
|zzt-oop name=spinninggun&lt;br /&gt;
|id={{Byte|39}}&lt;br /&gt;
|char=animates using the arrow characters {{CharSwatch|24}} through {{CharSwatch|27}}, rotating clockwise&lt;br /&gt;
|category=creature&lt;br /&gt;
|stats=yes&lt;br /&gt;
|cycle=2&lt;br /&gt;
|p1=intelligence&lt;br /&gt;
|p2=firing rate/type&lt;br /&gt;
|effect on movement=wall&lt;br /&gt;
|destructible=no&lt;br /&gt;
|uses zzt-oop color=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;spinning gun&#039;&#039;&#039; is a built-in creature in ZZT that acts as an indestructible turret. It can configured to shoot either [[bullet|bullets]] or [[star|stars]].&lt;br /&gt;
&lt;br /&gt;
The chance of a spinning gun shooting on a given [[tick]] is &amp;lt;code&amp;gt;P2/9&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;P2&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;Firing Rate - 1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The direction that the spinning gun shoots is determined semi-randomly depending on the gun&#039;s intelligence and the [[player|player&#039;s]] position. The chance of the gun firing intelligently on a given tick is &amp;lt;code&amp;gt;P1/9&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;P1&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;Intelligence - 1&amp;lt;/code&amp;gt;. If it chooses to fire intelligently, it will fire vertically if the player is within 2 tiles on the x axis and the gun is not blocked vertically. Otherwise, it will shoot horizontally if the player is within two tiles on the y axis. If neither condition is met, it will not make an intelligent shot. If the spinning gun decides to make a non-intelligent shot instead, then it will randomly fire in one of the [[cardinal directions]].&lt;br /&gt;
&lt;br /&gt;
The spinning gun cycles between {{CharSwatch|24}}, {{CharSwatch|26}}, {{CharSwatch|25}}, and {{CharSwatch|27}}, however the direction it fires is completely unrelated to the direction it is visibly pointing.&lt;br /&gt;
&lt;br /&gt;
[[Category:Elements]]&lt;br /&gt;
{{ElementsNavbox}}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Walk&amp;diff=411</id>
		<title>Walk</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Walk&amp;diff=411"/>
		<updated>2021-02-14T05:22:08Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Formatting, links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:walk}}&lt;br /&gt;
&#039;&#039;&#039;#walk&#039;&#039;&#039; is a [[ZZT-OOP]] command that makes an [[object]] move automatically, independent of conventional [[movement]] commands (&amp;lt;code&amp;gt;[[go|#go]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[try|#try]]&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Once &amp;lt;code&amp;gt;#walk&amp;lt;/code&amp;gt; is executed, the object will move in the specified direction on every cycle [[tick]]. If a walking object is blocked by an obstacle, it will send a [[thud]] message to itself, unless it&#039;s [[lock|locked]].&lt;br /&gt;
&lt;br /&gt;
To stop walking, use &amp;lt;code&amp;gt;#walk [[idle]]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;#walk [[idle|i]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&amp;lt;code&amp;gt;#walk &amp;lt;direction&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Objects will not push other entities as a result of walking.&lt;br /&gt;
* &amp;lt;code&amp;gt;#walk&amp;lt;/code&amp;gt; operates independently of other movement commands, so an object can appear to move diagonally by walking along one axis and using &amp;lt;code&amp;gt;#go&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;#try&amp;lt;/code&amp;gt; on the other.&lt;br /&gt;
* [[flow]] refers to an object&#039;s current walking direction, and can be used in conjunction with [[direction modifiers]] to steer it. For example, &amp;lt;code&amp;gt;#walk cw flow&amp;lt;/code&amp;gt; will make an object turn clockwise.&lt;br /&gt;
* Internally, ZZT object walking is implemented with two delta variables. Modifying these variables with an enhanced editor beyond the ranges of -1 to +1 will cause the object to skip across terrain.&lt;br /&gt;
&lt;br /&gt;
{{ZZT-OOP navbox}}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Module:Byte_layout&amp;diff=261</id>
		<title>Module:Byte layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Module:Byte_layout&amp;diff=261"/>
		<updated>2021-02-08T06:21:54Z</updated>

		<summary type="html">&lt;p&gt;Quantum: WIP: Add doc comments, parse unquoted values into numbers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Parse a string of key-value pairs into a Lua table.&lt;br /&gt;
    Examples:&lt;br /&gt;
&lt;br /&gt;
    parse_string(&amp;quot;foo: 123, bar: 456&amp;quot;) -- returns {foo=123, bar=456}&lt;br /&gt;
    parse_string(&amp;quot;foo, bar: named value, baz&amp;quot;) -- returns {&amp;quot;foo&amp;quot;, bar=&amp;quot;named value&amp;quot;, &amp;quot;baz&amp;quot;}&lt;br /&gt;
    parse_string(&amp;quot;foo: (A:B:C), bar: (1,2,3)&amp;quot;) -- returns {foo=&amp;quot;A:B:C&amp;quot;, bar=&amp;quot;1,2,3&amp;quot;}&lt;br /&gt;
]]&lt;br /&gt;
function p.parse_string(s)&lt;br /&gt;
    local result = {}&lt;br /&gt;
&lt;br /&gt;
    -- Strip leading whitespace&lt;br /&gt;
    local i = 1&lt;br /&gt;
    local token = &amp;quot;&amp;quot;&lt;br /&gt;
    token, i = match_whitespace(s, i)&lt;br /&gt;
&lt;br /&gt;
    -- Parse each key-value pair&lt;br /&gt;
    while i &amp;lt;= #s do&lt;br /&gt;
        local key = nil&lt;br /&gt;
        local value = nil&lt;br /&gt;
&lt;br /&gt;
        -- optional key, if present&lt;br /&gt;
        token, i = match_key(s, i)&lt;br /&gt;
        if token ~= nil then&lt;br /&gt;
            key = token&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- value&lt;br /&gt;
        token, i = match_unquoted_value(s, i)&lt;br /&gt;
        if token == nil then&lt;br /&gt;
            token, i = match_quoted_value(s, i)&lt;br /&gt;
        end&lt;br /&gt;
        if token == nil then&lt;br /&gt;
            error(&amp;quot;Parse error: expected a value at position &amp;quot; .. i .. &amp;quot; of: &amp;quot; .. s)&lt;br /&gt;
        end&lt;br /&gt;
        value = token&lt;br /&gt;
&lt;br /&gt;
        -- Save key:value pair&lt;br /&gt;
        -- No key means append to end of table&lt;br /&gt;
        if key == nil then&lt;br /&gt;
            table.insert(result, value)&lt;br /&gt;
        else&lt;br /&gt;
            result[key] = value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Consume separator between key-value pairs&lt;br /&gt;
        token, i = match_separator(s, i)&lt;br /&gt;
        if token == nil and i &amp;lt;= #s then &lt;br /&gt;
            error(&amp;quot;Parse error: expected comma at position &amp;quot; .. i .. &amp;quot; of: &amp;quot; .. s)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Attempt to consume a key name, e.g., the &amp;quot;foo&amp;quot; in &amp;quot;foo: bar&amp;quot;&lt;br /&gt;
function match_key(s, init)&lt;br /&gt;
    return match_pattern(s, &amp;quot;^(([%a_][%w_]*)%s*:%s*)&amp;quot;, init)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Attempt to consume an unquoted value, e.g., the &amp;quot;bar&amp;quot; in &amp;quot;foo: bar&amp;quot;&lt;br /&gt;
function match_unquoted_value(s, init)&lt;br /&gt;
    local value, i = match_pattern(s, &amp;quot;^(([^,:()]+)%s*)&amp;quot;, init)&lt;br /&gt;
    local numeric = tonumber(value)&lt;br /&gt;
    if numeric then&lt;br /&gt;
        value = numeric&lt;br /&gt;
    end&lt;br /&gt;
    return value, i&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Attempt to consume a quoted value, e.g., the &amp;quot;:::&amp;quot; in &amp;quot;dots: (:::)&amp;quot;&lt;br /&gt;
function match_quoted_value(s, init)&lt;br /&gt;
    local quoted, i = match_pattern(s, &amp;quot;^((%b())%s*)&amp;quot;, init)&lt;br /&gt;
    local unquoted = string.sub(quoted, 2, -2)&lt;br /&gt;
    return unquoted, i&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Attempt to match a comma, e.g., the &amp;quot;,&amp;quot; in &amp;quot;foo: 1, bar: 2&amp;quot;&lt;br /&gt;
function match_separator(s, init)&lt;br /&gt;
    return match_pattern(s, &amp;quot;^((,)%s*)&amp;quot;, init)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Attempt to match leading whitespace, e.g., the &amp;quot;  &amp;quot; in &amp;quot;  foo:bar&amp;quot;&lt;br /&gt;
function match_whitespace(s, init)&lt;br /&gt;
    return match_pattern(s, &amp;quot;^((%s*))&amp;quot;, init)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Attempts to &amp;quot;consume&amp;quot; a pattern from a string. Example:&lt;br /&gt;
&lt;br /&gt;
    s = &amp;quot;foo bar baz&amp;quot;&lt;br /&gt;
    offset = 1&lt;br /&gt;
    word, offset = match_pattern(s, &amp;quot;((foo)%s*)&amp;quot;, offset)&lt;br /&gt;
    -- word = &amp;quot;foo&amp;quot;, offset = 5&lt;br /&gt;
    word, offset = match_pattern(s, &amp;quot;((bar)%s*)&amp;quot;, offset)&lt;br /&gt;
    -- word = &amp;quot;bar&amp;quot;, offset = 9&lt;br /&gt;
    word, offset = match_pattern(s, &amp;quot;((whoops!)%s*)&amp;quot;, offset)&lt;br /&gt;
    -- word = nil, offset = 9&lt;br /&gt;
    -- (offset doesn&#039;t change on failure)&lt;br /&gt;
&lt;br /&gt;
    Pattern must have two capture groups: the entire string, and the portion&lt;br /&gt;
    of interest (the thing that is returned along with the new offset).&lt;br /&gt;
]]&lt;br /&gt;
function match_pattern(s, pattern, init)&lt;br /&gt;
    full, content = string.match(s, pattern, init)&lt;br /&gt;
    if full == nil then&lt;br /&gt;
        return nil, init&lt;br /&gt;
    end&lt;br /&gt;
    return content, init + #full&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Module:Byte_layout&amp;diff=259</id>
		<title>Module:Byte layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Module:Byte_layout&amp;diff=259"/>
		<updated>2021-02-08T05:47:17Z</updated>

		<summary type="html">&lt;p&gt;Quantum: WIP: Parser for a simple data-structure DSL, because templates only let you pass in strings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.parse_string(s)&lt;br /&gt;
    local result = {}&lt;br /&gt;
&lt;br /&gt;
    -- Strip leading whitespace&lt;br /&gt;
    local i = 1&lt;br /&gt;
    local token = &amp;quot;&amp;quot;&lt;br /&gt;
    token, i = match_whitespace(s, i)&lt;br /&gt;
&lt;br /&gt;
    -- Parse each key-value pair&lt;br /&gt;
    while i &amp;lt;= #s do&lt;br /&gt;
        local key = nil&lt;br /&gt;
        local value = nil&lt;br /&gt;
&lt;br /&gt;
        -- optional key, if present&lt;br /&gt;
        token, i = match_key(s, i)&lt;br /&gt;
        if token ~= nil then&lt;br /&gt;
            key = token&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- value&lt;br /&gt;
        token, i = match_unquoted_value(s, i)&lt;br /&gt;
        if token == nil then&lt;br /&gt;
            token, i = match_quoted_value(s, i)&lt;br /&gt;
        end&lt;br /&gt;
        if token == nil then&lt;br /&gt;
            error(&amp;quot;Parse error: expected a value at position &amp;quot; .. i .. &amp;quot; of: &amp;quot; .. s)&lt;br /&gt;
        end&lt;br /&gt;
        value = token&lt;br /&gt;
&lt;br /&gt;
        -- Save key:value pair&lt;br /&gt;
        -- No key means append to end of table&lt;br /&gt;
        if key == nil then&lt;br /&gt;
            table.insert(result, value)&lt;br /&gt;
        else&lt;br /&gt;
            result[key] = value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Consume separator between key-value pairs&lt;br /&gt;
        token, i = match_separator(s, i)&lt;br /&gt;
        if token == nil and i &amp;lt;= #s then &lt;br /&gt;
            error(&amp;quot;Parse error: expected comma at position &amp;quot; .. i .. &amp;quot; of: &amp;quot; .. s)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Attempts to &amp;quot;consume&amp;quot; a pattern from a string. Example:&lt;br /&gt;
&lt;br /&gt;
    s = &amp;quot;foo bar baz&amp;quot;&lt;br /&gt;
    offset = 1&lt;br /&gt;
    word, offset = match_pattern(s, &amp;quot;((foo)%s*)&amp;quot;, offset)&lt;br /&gt;
    -- word = &amp;quot;foo&amp;quot;, offset = 5&lt;br /&gt;
    word, offset = match_pattern(s, &amp;quot;((bar)%s*)&amp;quot;, offset)&lt;br /&gt;
    -- word = &amp;quot;bar&amp;quot;, offset = 9&lt;br /&gt;
    word, offset = match_pattern(s, &amp;quot;((whoops!)%s*)&amp;quot;, offset)&lt;br /&gt;
    -- word = nil, offset = 9&lt;br /&gt;
    -- (offset doesn&#039;t change on failure)&lt;br /&gt;
&lt;br /&gt;
    Pattern must have two capture groups: the entire string, and the portion&lt;br /&gt;
    of interest (the thing that is returned along with the new offset).&lt;br /&gt;
]]&lt;br /&gt;
function match_pattern(s, pattern, init)&lt;br /&gt;
    full, content = string.match(s, pattern, init)&lt;br /&gt;
    if full == nil then&lt;br /&gt;
        return nil, init&lt;br /&gt;
    end&lt;br /&gt;
    return content, init + #full&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Attempt to consume a key name, e.g., the &amp;quot;foo&amp;quot; in &amp;quot;foo: bar&amp;quot;&lt;br /&gt;
function match_key(s, init)&lt;br /&gt;
    return match_pattern(s, &amp;quot;^(([%a_][%w_]*)%s*:%s*)&amp;quot;, init)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Attempt to consume an unquoted value, e.g., the &amp;quot;bar&amp;quot; in &amp;quot;foo: bar&amp;quot;&lt;br /&gt;
function match_unquoted_value(s, init)&lt;br /&gt;
    return match_pattern(s, &amp;quot;^(([^,:()]+)%s*)&amp;quot;, init)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Attempt to consume a quoted value, e.g., the &amp;quot;:::&amp;quot; in &amp;quot;dots: (:::)&amp;quot;&lt;br /&gt;
function match_quoted_value(s, init)&lt;br /&gt;
    local quoted, i = match_pattern(s, &amp;quot;^((%b())%s*)&amp;quot;, init)&lt;br /&gt;
    local unquoted = string.sub(quoted, 2, -2)&lt;br /&gt;
    return unquoted, i&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Attempt to match a comma, e.g., the &amp;quot;,&amp;quot; in &amp;quot;foo: 1, bar: 2&amp;quot;&lt;br /&gt;
function match_separator(s, init)&lt;br /&gt;
    return match_pattern(s, &amp;quot;^((,)%s*)&amp;quot;, init)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Attempt to match leading whitespace, e.g., the &amp;quot;  &amp;quot; in &amp;quot;  foo:bar&amp;quot;&lt;br /&gt;
function match_whitespace(s, init)&lt;br /&gt;
    return match_pattern(s, &amp;quot;^((%s*))&amp;quot;, init)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=MediaWiki:Common.css&amp;diff=206</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=MediaWiki:Common.css&amp;diff=206"/>
		<updated>2021-02-01T04:58:14Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Add a little space between article content and navbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
@font-face {&lt;br /&gt;
	font-family: &amp;quot;EGA8&amp;quot;;&lt;br /&gt;
	src: url(&amp;quot;/w/images/a/ae/Web437_IBM_EGA_8x14.woff&amp;quot;) format(&amp;quot;woff&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.blinking {&lt;br /&gt;
	animation: 2.5s linear infinite blinking_text;&lt;br /&gt;
}&lt;br /&gt;
@keyframes blinking_text {&lt;br /&gt;
	35% {&lt;br /&gt;
		opacity: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	45% {&lt;br /&gt;
		opacity: 0%;&lt;br /&gt;
	}&lt;br /&gt;
	55% {&lt;br /&gt;
		opacity: 0%;&lt;br /&gt;
	}&lt;br /&gt;
	65% {&lt;br /&gt;
		opacity: 100%;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Navbox CSS */&lt;br /&gt;
.navbox {&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	border: 1px solid #aaa;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	margin: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
.navbox .title th {&lt;br /&gt;
	background: #B6CEE7;&lt;br /&gt;
}&lt;br /&gt;
.navbox .group th {&lt;br /&gt;
	background: #DBE7F3;&lt;br /&gt;
	padding-left: 1em;&lt;br /&gt;
	padding-right: 1em;&lt;br /&gt;
}&lt;br /&gt;
.navbox .group td {&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	padding-right: 0.5em;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.navbox .group:nth-child(2n+1) td {&lt;br /&gt;
	background: #f5f5f5;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Style lists as dot-separated items */&lt;br /&gt;
.navbox ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.navbox li {&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.navbox li:nth-child(n+2):before {&lt;br /&gt;
	content: &amp;quot; · &amp;quot;;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Wiki:Requested_articles&amp;diff=205</id>
		<title>Wiki:Requested articles</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Wiki:Requested_articles&amp;diff=205"/>
		<updated>2021-02-01T03:20:55Z</updated>

		<summary type="html">&lt;p&gt;Quantum: /* Techniques */ Bombs as pushable text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note that some of these links should probably be the same article: for example, we probably don&#039;t need separate articles for NORTH and SOUTH, but we should have redirects to a shared article.&lt;br /&gt;
&lt;br /&gt;
Also, see [[Special:WantedPages]] for an automatically-generated list of linked-to but non-existent pages.&lt;br /&gt;
&lt;br /&gt;
== Categories to add ==&lt;br /&gt;
* Colors&lt;br /&gt;
* Fake labels (:endgame, :zapped) that are rumored to exist but don&#039;t&lt;br /&gt;
* Output stuff: Sound? Charsets? Colors?&lt;br /&gt;
* World, board, stat&lt;br /&gt;
* Special elements/redirects: Player Clone, Dummy, Black Hole&lt;br /&gt;
* ZZT itself: versions, Super ZZT&lt;br /&gt;
* Cheats&lt;br /&gt;
* Locks, especially those integrated with ZZT like the SECRET flag&lt;br /&gt;
&lt;br /&gt;
== ZZT behavior ==&lt;br /&gt;
Some of the categorization here is fuzzy (is X a bug or a technique?). You can help by writing the corresponding article, so we can get rid of the offending line on this page. :-)&lt;br /&gt;
&lt;br /&gt;
=== Techniques ===&lt;br /&gt;
&lt;br /&gt;
* [[Kangaroo effect]]&lt;br /&gt;
* Using [[Player clone|player clones]] for teleportation&lt;br /&gt;
* Using [[Statless player|statless players]] and board [[Edge|edges]] to control teleportation&lt;br /&gt;
* [[Colors accessible from ZZT]]&lt;br /&gt;
* Detecting [[game speed]]&lt;br /&gt;
* Using [[Medusa bug|Medusa bugs]] (transporters, text, etc) to prevent anti-dark cheats&lt;br /&gt;
* [[Board illusion]] triggered by crossing to another board and immediately hitting a passage&lt;br /&gt;
* Sticking non-[[segment]] entities onto a [[centipede]]&lt;br /&gt;
* Using non-unit [[step values]] to, e.g., move diagonally&lt;br /&gt;
* [[Stat]] stacking&lt;br /&gt;
* Transferring data between worlds by overwriting board edges&lt;br /&gt;
* #cycle 0 [[Bomb]]s as pushable text&lt;br /&gt;
&lt;br /&gt;
=== Internals ===&lt;br /&gt;
&lt;br /&gt;
* [[Stat order]]&lt;br /&gt;
* [[Tick]]&amp;lt;nowiki/&amp;gt;s modulo 420&lt;br /&gt;
* [[32-command limit]]&lt;br /&gt;
* [[Pascal string]]&amp;lt;nowiki/&amp;gt;s hold partial previous contents in memory/on disk&lt;br /&gt;
&lt;br /&gt;
=== Bugs and limits ===&lt;br /&gt;
&lt;br /&gt;
*[[Counter]] behavior when [[Give|#giving]] very large numbers (32 bits in size and beyond)&lt;br /&gt;
*[[Counter]] display bug: some digits left behind when counter goes from big to small&lt;br /&gt;
*[[Label]] behavior with numerals&lt;br /&gt;
*[[Restore|#restore]] sometimes doesn&#039;t restore all labels&lt;br /&gt;
* Black [[Key|keys]] and [[Door|doors]]&lt;br /&gt;
* Inaccuracies in frequencies used by [[Play|#play]]&lt;br /&gt;
* [[Conveyor]] bugs (ability to delete player, etc)&lt;br /&gt;
* 1000-line maximum for all [[text dialog]]&amp;lt;nowiki/&amp;gt;s (including world selector)&lt;br /&gt;
* Shooting changes [[step value]] of 150th stat&lt;br /&gt;
* Moving while paused via [[mouse movement]]&lt;br /&gt;
* Vertical [[blink wall]] can toss the player east on top of a wall/obstruction&lt;br /&gt;
* Blank lines in [[text dialog]]&amp;lt;nowiki/&amp;gt;s sometimes appear as hyperlinks&lt;br /&gt;
* [[Put|#put]] doesn&#039;t work on bottom row&lt;br /&gt;
* [[Built-in editor]] and stat deletion bugs, if we ever figure out why that one happens&lt;br /&gt;
* Dependencies on CPU speed (e.g., [[sound effects]])&lt;br /&gt;
* [[Koopo bug]]&lt;br /&gt;
* Can&#039;t [[Send|#send]] to a [[label]] on the first line&lt;br /&gt;
* [[Passage]]&amp;lt;nowiki/&amp;gt;s have the potential to delete each other if they are adjacent&lt;br /&gt;
&lt;br /&gt;
== ZZT itself ==&lt;br /&gt;
&lt;br /&gt;
=== File formats ===&lt;br /&gt;
&lt;br /&gt;
* [[World]]&lt;br /&gt;
* [[Board]]&lt;br /&gt;
* [[ZZT.DAT]]&lt;br /&gt;
* [[High score files]]&lt;br /&gt;
* Help files&lt;br /&gt;
&lt;br /&gt;
=== Tile types ===&lt;br /&gt;
* [[Empty]]&lt;br /&gt;
* [[Edge]]&lt;br /&gt;
* [[Monitor]]&lt;br /&gt;
* [[Player]]&lt;br /&gt;
* [[Ammo]]&lt;br /&gt;
* [[Torch]]&lt;br /&gt;
* [[Gem]]&lt;br /&gt;
* [[Key]]&lt;br /&gt;
* [[Door]]&lt;br /&gt;
* [[Scroll]]&lt;br /&gt;
* [[Passage]]&lt;br /&gt;
* [[Duplicator]]&lt;br /&gt;
* [[Bomb]]&lt;br /&gt;
* [[Energizer]]&lt;br /&gt;
* [[Star]]&lt;br /&gt;
* [[Conveyor]]&lt;br /&gt;
* [[Bullet]]&lt;br /&gt;
* [[Water]]&lt;br /&gt;
* [[Forest]]&lt;br /&gt;
* [[Solid]]&lt;br /&gt;
* [[Normal]]&lt;br /&gt;
* [[Breakable]]&lt;br /&gt;
* [[Boulder]]&lt;br /&gt;
* [[Slider]]&lt;br /&gt;
* [[Fake]]&lt;br /&gt;
* [[Invisible]]&lt;br /&gt;
* [[Blink wall]]&lt;br /&gt;
* [[Transporter]]&lt;br /&gt;
* [[Line]]&lt;br /&gt;
* [[Ricochet]]&lt;br /&gt;
* [[Blink wall ray]]&lt;br /&gt;
* [[Bear]]&lt;br /&gt;
* [[Ruffian]]&lt;br /&gt;
* [[Object]]&lt;br /&gt;
* [[Slime]]&lt;br /&gt;
* [[Shark]]&lt;br /&gt;
* [[Spinning gun]]&lt;br /&gt;
* [[Pusher]]&lt;br /&gt;
* [[Lion]]&lt;br /&gt;
* [[Tiger]]&lt;br /&gt;
* [[Head]]&lt;br /&gt;
* [[Segment]]&lt;br /&gt;
* [[Text]]&lt;br /&gt;
=== [[ZZT-OOP]] ===&lt;br /&gt;
==== Prefixes/statement types ====&lt;br /&gt;
* [[Centered text]] ($)&lt;br /&gt;
* [[Object name]] (@)&lt;br /&gt;
* [[Command]] (#)&lt;br /&gt;
* [[Slash move]] (/) (Should this be combined with #[[GO]]?)&lt;br /&gt;
* [[Question move]] (?)&lt;br /&gt;
* [[Label]] (:)&lt;br /&gt;
* [[Comment]]/[[Zapped label]] (&#039;)&lt;br /&gt;
* [[Hyperlink]] (!)&lt;br /&gt;
==== Built-in [[Message]]s ====&lt;br /&gt;
* [[Touch]]&lt;br /&gt;
* [[Shot]]&lt;br /&gt;
* [[Bombed]]&lt;br /&gt;
* [[Thud]]&lt;br /&gt;
* [[Energize]]&lt;br /&gt;
==== Directions ====&lt;br /&gt;
* [[North]], [[South]], [[East]], [[West]]&lt;br /&gt;
* [[Idle (direction)]]&lt;br /&gt;
* [[Seek]]&lt;br /&gt;
* [[Flow]]&lt;br /&gt;
* [[Rndns]], [[Rndne]], [[Rnd]], [[Rndp]]&lt;br /&gt;
* [[Cw]], [[Ccw]], [[Opp]]&lt;br /&gt;
==== Built-in [[flag]]s ====&lt;br /&gt;
* [[Alligned]]&lt;br /&gt;
* [[Any]]&lt;br /&gt;
* [[Contact]]&lt;br /&gt;
* [[Blocked]]&lt;br /&gt;
* [[Energized]]&lt;br /&gt;
==== Commands ====&lt;br /&gt;
* [[Become]]&lt;br /&gt;
* [[Bind]]&lt;br /&gt;
* [[Change]]&lt;br /&gt;
* [[Char]]&lt;br /&gt;
* [[Clear]]&lt;br /&gt;
* [[Cycle]]&lt;br /&gt;
* [[Die]]&lt;br /&gt;
* [[End]]&lt;br /&gt;
* [[Endgame]]&lt;br /&gt;
* [[Give]]&lt;br /&gt;
* [[Go]]&lt;br /&gt;
* [[Idle]]&lt;br /&gt;
* [[If]]&lt;br /&gt;
* [[Lock]]&lt;br /&gt;
* [[Play]]&lt;br /&gt;
* [[Put]]&lt;br /&gt;
* [[Restart]]&lt;br /&gt;
* [[Restore]]&lt;br /&gt;
* [[Send]]&lt;br /&gt;
* [[Shoot]]&lt;br /&gt;
* [[Take]]&lt;br /&gt;
* [[Throwstar]]&lt;br /&gt;
* [[Try]]&lt;br /&gt;
* [[Unlock]]&lt;br /&gt;
* [[Walk]]&lt;br /&gt;
* [[Zap]]&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Wiki:Requested_articles&amp;diff=204</id>
		<title>Wiki:Requested articles</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Wiki:Requested_articles&amp;diff=204"/>
		<updated>2021-01-31T10:01:54Z</updated>

		<summary type="html">&lt;p&gt;Quantum: /* Bugs and limits */ Clarify a couple of items&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note that some of these links should probably be the same article: for example, we probably don&#039;t need separate articles for NORTH and SOUTH, but we should have redirects to a shared article.&lt;br /&gt;
&lt;br /&gt;
Also, see [[Special:WantedPages]] for an automatically-generated list of linked-to but non-existent pages.&lt;br /&gt;
&lt;br /&gt;
== Categories to add ==&lt;br /&gt;
* Colors&lt;br /&gt;
* Fake labels (:endgame, :zapped) that are rumored to exist but don&#039;t&lt;br /&gt;
* Output stuff: Sound? Charsets? Colors?&lt;br /&gt;
* World, board, stat&lt;br /&gt;
* Special elements/redirects: Player Clone, Dummy, Black Hole&lt;br /&gt;
* ZZT itself: versions, Super ZZT&lt;br /&gt;
* Cheats&lt;br /&gt;
* Locks, especially those integrated with ZZT like the SECRET flag&lt;br /&gt;
&lt;br /&gt;
== ZZT behavior ==&lt;br /&gt;
Some of the categorization here is fuzzy (is X a bug or a technique?). You can help by writing the corresponding article, so we can get rid of the offending line on this page. :-)&lt;br /&gt;
&lt;br /&gt;
=== Techniques ===&lt;br /&gt;
&lt;br /&gt;
* [[Kangaroo effect]]&lt;br /&gt;
* Using [[Player clone|player clones]] for teleportation&lt;br /&gt;
* Using [[Statless player|statless players]] and board [[Edge|edges]] to control teleportation&lt;br /&gt;
* [[Colors accessible from ZZT]]&lt;br /&gt;
* Detecting [[game speed]]&lt;br /&gt;
* Using [[Medusa bug|Medusa bugs]] (transporters, text, etc) to prevent anti-dark cheats&lt;br /&gt;
* [[Board illusion]] triggered by crossing to another board and immediately hitting a passage&lt;br /&gt;
* Sticking non-[[segment]] entities onto a [[centipede]]&lt;br /&gt;
* Using non-unit [[step values]] to, e.g., move diagonally&lt;br /&gt;
* [[Stat]] stacking&lt;br /&gt;
* Transferring data between worlds by overwriting board edges&lt;br /&gt;
&lt;br /&gt;
=== Internals ===&lt;br /&gt;
&lt;br /&gt;
* [[Stat order]]&lt;br /&gt;
* [[Tick]]&amp;lt;nowiki/&amp;gt;s modulo 420&lt;br /&gt;
* [[32-command limit]]&lt;br /&gt;
* [[Pascal string]]&amp;lt;nowiki/&amp;gt;s hold partial previous contents in memory/on disk&lt;br /&gt;
&lt;br /&gt;
=== Bugs and limits ===&lt;br /&gt;
&lt;br /&gt;
*[[Counter]] behavior when [[Give|#giving]] very large numbers (32 bits in size and beyond)&lt;br /&gt;
*[[Counter]] display bug: some digits left behind when counter goes from big to small&lt;br /&gt;
*[[Label]] behavior with numerals&lt;br /&gt;
*[[Restore|#restore]] sometimes doesn&#039;t restore all labels&lt;br /&gt;
* Black [[Key|keys]] and [[Door|doors]]&lt;br /&gt;
* Inaccuracies in frequencies used by [[Play|#play]]&lt;br /&gt;
* [[Conveyor]] bugs (ability to delete player, etc)&lt;br /&gt;
* 1000-line maximum for all [[text dialog]]&amp;lt;nowiki/&amp;gt;s (including world selector)&lt;br /&gt;
* Shooting changes [[step value]] of 150th stat&lt;br /&gt;
* Moving while paused via [[mouse movement]]&lt;br /&gt;
* Vertical [[blink wall]] can toss the player east on top of a wall/obstruction&lt;br /&gt;
* Blank lines in [[text dialog]]&amp;lt;nowiki/&amp;gt;s sometimes appear as hyperlinks&lt;br /&gt;
* [[Put|#put]] doesn&#039;t work on bottom row&lt;br /&gt;
* [[Built-in editor]] and stat deletion bugs, if we ever figure out why that one happens&lt;br /&gt;
* Dependencies on CPU speed (e.g., [[sound effects]])&lt;br /&gt;
* [[Koopo bug]]&lt;br /&gt;
* Can&#039;t [[Send|#send]] to a [[label]] on the first line&lt;br /&gt;
* [[Passage]]&amp;lt;nowiki/&amp;gt;s have the potential to delete each other if they are adjacent&lt;br /&gt;
&lt;br /&gt;
== ZZT itself ==&lt;br /&gt;
&lt;br /&gt;
=== File formats ===&lt;br /&gt;
&lt;br /&gt;
* [[World]]&lt;br /&gt;
* [[Board]]&lt;br /&gt;
* [[ZZT.DAT]]&lt;br /&gt;
* [[High score files]]&lt;br /&gt;
* Help files&lt;br /&gt;
&lt;br /&gt;
=== Tile types ===&lt;br /&gt;
* [[Empty]]&lt;br /&gt;
* [[Edge]]&lt;br /&gt;
* [[Monitor]]&lt;br /&gt;
* [[Player]]&lt;br /&gt;
* [[Ammo]]&lt;br /&gt;
* [[Torch]]&lt;br /&gt;
* [[Gem]]&lt;br /&gt;
* [[Key]]&lt;br /&gt;
* [[Door]]&lt;br /&gt;
* [[Scroll]]&lt;br /&gt;
* [[Passage]]&lt;br /&gt;
* [[Duplicator]]&lt;br /&gt;
* [[Bomb]]&lt;br /&gt;
* [[Energizer]]&lt;br /&gt;
* [[Star]]&lt;br /&gt;
* [[Conveyor]]&lt;br /&gt;
* [[Bullet]]&lt;br /&gt;
* [[Water]]&lt;br /&gt;
* [[Forest]]&lt;br /&gt;
* [[Solid]]&lt;br /&gt;
* [[Normal]]&lt;br /&gt;
* [[Breakable]]&lt;br /&gt;
* [[Boulder]]&lt;br /&gt;
* [[Slider]]&lt;br /&gt;
* [[Fake]]&lt;br /&gt;
* [[Invisible]]&lt;br /&gt;
* [[Blink wall]]&lt;br /&gt;
* [[Transporter]]&lt;br /&gt;
* [[Line]]&lt;br /&gt;
* [[Ricochet]]&lt;br /&gt;
* [[Blink wall ray]]&lt;br /&gt;
* [[Bear]]&lt;br /&gt;
* [[Ruffian]]&lt;br /&gt;
* [[Object]]&lt;br /&gt;
* [[Slime]]&lt;br /&gt;
* [[Shark]]&lt;br /&gt;
* [[Spinning gun]]&lt;br /&gt;
* [[Pusher]]&lt;br /&gt;
* [[Lion]]&lt;br /&gt;
* [[Tiger]]&lt;br /&gt;
* [[Head]]&lt;br /&gt;
* [[Segment]]&lt;br /&gt;
* [[Text]]&lt;br /&gt;
=== [[ZZT-OOP]] ===&lt;br /&gt;
==== Prefixes/statement types ====&lt;br /&gt;
* [[Centered text]] ($)&lt;br /&gt;
* [[Object name]] (@)&lt;br /&gt;
* [[Command]] (#)&lt;br /&gt;
* [[Slash move]] (/) (Should this be combined with #[[GO]]?)&lt;br /&gt;
* [[Question move]] (?)&lt;br /&gt;
* [[Label]] (:)&lt;br /&gt;
* [[Comment]]/[[Zapped label]] (&#039;)&lt;br /&gt;
* [[Hyperlink]] (!)&lt;br /&gt;
==== Built-in [[Message]]s ====&lt;br /&gt;
* [[Touch]]&lt;br /&gt;
* [[Shot]]&lt;br /&gt;
* [[Bombed]]&lt;br /&gt;
* [[Thud]]&lt;br /&gt;
* [[Energize]]&lt;br /&gt;
==== Directions ====&lt;br /&gt;
* [[North]], [[South]], [[East]], [[West]]&lt;br /&gt;
* [[Idle (direction)]]&lt;br /&gt;
* [[Seek]]&lt;br /&gt;
* [[Flow]]&lt;br /&gt;
* [[Rndns]], [[Rndne]], [[Rnd]], [[Rndp]]&lt;br /&gt;
* [[Cw]], [[Ccw]], [[Opp]]&lt;br /&gt;
==== Built-in [[flag]]s ====&lt;br /&gt;
* [[Alligned]]&lt;br /&gt;
* [[Any]]&lt;br /&gt;
* [[Contact]]&lt;br /&gt;
* [[Blocked]]&lt;br /&gt;
* [[Energized]]&lt;br /&gt;
==== Commands ====&lt;br /&gt;
* [[Become]]&lt;br /&gt;
* [[Bind]]&lt;br /&gt;
* [[Change]]&lt;br /&gt;
* [[Char]]&lt;br /&gt;
* [[Clear]]&lt;br /&gt;
* [[Cycle]]&lt;br /&gt;
* [[Die]]&lt;br /&gt;
* [[End]]&lt;br /&gt;
* [[Endgame]]&lt;br /&gt;
* [[Give]]&lt;br /&gt;
* [[Go]]&lt;br /&gt;
* [[Idle]]&lt;br /&gt;
* [[If]]&lt;br /&gt;
* [[Lock]]&lt;br /&gt;
* [[Play]]&lt;br /&gt;
* [[Put]]&lt;br /&gt;
* [[Restart]]&lt;br /&gt;
* [[Restore]]&lt;br /&gt;
* [[Send]]&lt;br /&gt;
* [[Shoot]]&lt;br /&gt;
* [[Take]]&lt;br /&gt;
* [[Throwstar]]&lt;br /&gt;
* [[Try]]&lt;br /&gt;
* [[Unlock]]&lt;br /&gt;
* [[Walk]]&lt;br /&gt;
* [[Zap]]&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=World&amp;diff=203</id>
		<title>World</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=World&amp;diff=203"/>
		<updated>2021-01-31T01:29:29Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Typo: bad syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A ZZT &#039;&#039;&#039;world&#039;&#039;&#039; is a playable ZZT file. It is composed of one or more [[board]]s, which may be linked together in various ways, as well as the world&#039;s starting state: [[counter]] values, [[flag]]s, and so on.&lt;br /&gt;
&lt;br /&gt;
ZZT limits a world to a maximum of 101 boards: 1 [[title screen]] and 100 other boards. To get around this limit, some large ZZT games are composed of multiple world files, to be played and completed in sequence.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[ZZT file format]]&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=World&amp;diff=202</id>
		<title>World</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=World&amp;diff=202"/>
		<updated>2021-01-31T01:29:05Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Created page with &amp;quot;A ZZT &amp;#039;&amp;#039;&amp;#039;world&amp;#039;&amp;#039;&amp;#039; is a playable ZZT file. It is composed of one or more boards, which may be linked together in various ways, as well as the world&amp;#039;s starting state: coun...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A ZZT &#039;&#039;&#039;world&#039;&#039;&#039; is a playable ZZT file. It is composed of one or more [[board]]s, which may be linked together in various ways, as well as the world&#039;s starting state: [[counter]] values, [[flag]s, and so on.&lt;br /&gt;
&lt;br /&gt;
ZZT limits a world to a maximum of 101 boards: 1 [[title screen]] and 100 other boards. To get around this limit, some large ZZT games are composed of multiple world files, to be played and completed in sequence.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[ZZT file format]]&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Char&amp;diff=201</id>
		<title>Char</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Char&amp;diff=201"/>
		<updated>2021-01-19T04:02:58Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Add navbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:char}}&lt;br /&gt;
&#039;&#039;&#039;#char&#039;&#039;&#039; is a [[ZZT-OOP]] command for changing an object&#039;s display character. It takes a single parameter, a decimal number from 1 to 255, representing the desired extended ASCII character.&lt;br /&gt;
&lt;br /&gt;
Note that #char does not allow character 0 as a parameter, even though it is a valid extended ASCII character. Running &amp;lt;code&amp;gt;#char 0&amp;lt;/code&amp;gt; will silently fail without changing the object&#039;s character. This restriction does not typically matter in practice because characters 32 and 255 are usually visually identical to character 0.&lt;br /&gt;
&lt;br /&gt;
{{ZZT-OOP navbox}}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Template:ZZT-OOP_navbox&amp;diff=200</id>
		<title>Template:ZZT-OOP navbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Template:ZZT-OOP_navbox&amp;diff=200"/>
		<updated>2021-01-19T04:02:11Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Initial ZZT-OOP navbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:Navbox|navbox|title=[[ZZT-OOP]]&lt;br /&gt;
|groupName1=Prefixes&lt;br /&gt;
|group1=&lt;br /&gt;
* &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; [[Object name]]&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt; [[Message text]]&lt;br /&gt;
* &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; [[Command]]&lt;br /&gt;
* &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt; [[Movement]]&lt;br /&gt;
* &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; [[Label]]&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&amp;lt;/code&amp;gt; [[Comment]]&lt;br /&gt;
* &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;!-&amp;lt;/code&amp;gt; [[Hyperlink]]&lt;br /&gt;
|groupName2=Messages&lt;br /&gt;
|group2=&lt;br /&gt;
* [[bombed]]&lt;br /&gt;
* [[energize]]&lt;br /&gt;
* [[shot]]&lt;br /&gt;
* [[thud]]&lt;br /&gt;
* [[touch]]&lt;br /&gt;
|groupName3=Directions&lt;br /&gt;
|group3=&lt;br /&gt;
* [[Cardinal directions]]&lt;br /&gt;
* [[idle]]&lt;br /&gt;
* [[seek]]&lt;br /&gt;
* [[flow]]&lt;br /&gt;
* [[Direction modifiers]]&lt;br /&gt;
* [[Random directions]]&lt;br /&gt;
|groupName4=Flags&lt;br /&gt;
|group4=&lt;br /&gt;
* [[alligned]]&lt;br /&gt;
* [[any]]&lt;br /&gt;
* [[blocked]]&lt;br /&gt;
* [[contact]]&lt;br /&gt;
* [[energized]]&lt;br /&gt;
* [[not]]&lt;br /&gt;
|groupName5=Commands&lt;br /&gt;
|group5=&lt;br /&gt;
* [[become]]&lt;br /&gt;
* [[bind]]&lt;br /&gt;
* [[change]]&lt;br /&gt;
* [[char]]&lt;br /&gt;
* [[clear]]&lt;br /&gt;
* [[cycle]]&lt;br /&gt;
* [[die]]&lt;br /&gt;
* [[end]]&lt;br /&gt;
* [[endgame]]&lt;br /&gt;
* [[give]]&lt;br /&gt;
* [[go]]&lt;br /&gt;
* [[idle]]&lt;br /&gt;
* [[if]]&lt;br /&gt;
* [[lock]]&lt;br /&gt;
* [[play]]&lt;br /&gt;
* [[put]]&lt;br /&gt;
* [[restart]]&lt;br /&gt;
* [[restore]]&lt;br /&gt;
* [[send]]&lt;br /&gt;
* [[shoot]]&lt;br /&gt;
* [[take]]&lt;br /&gt;
* [[throwstar]]&lt;br /&gt;
* [[try]]&lt;br /&gt;
* [[unlock]]&lt;br /&gt;
* [[walk]]&lt;br /&gt;
* [[zap]]&lt;br /&gt;
}}&amp;lt;includeonly&amp;gt;[[Category:ZZT-OOP]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Wiki:Requested_articles&amp;diff=199</id>
		<title>Wiki:Requested articles</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Wiki:Requested_articles&amp;diff=199"/>
		<updated>2021-01-18T23:15:57Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Add a bunch more items with brief commentary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note that some of these links should probably be the same article: for example, we probably don&#039;t need separate articles for NORTH and SOUTH, but we should have redirects to a shared article.&lt;br /&gt;
&lt;br /&gt;
Also, see [[Special:WantedPages]] for an automatically-generated list of linked-to but non-existent pages.&lt;br /&gt;
&lt;br /&gt;
== Categories to add ==&lt;br /&gt;
* Colors&lt;br /&gt;
* Fake labels (:endgame, :zapped) that are rumored to exist but don&#039;t&lt;br /&gt;
* Output stuff: Sound? Charsets? Colors?&lt;br /&gt;
* World, board, stat&lt;br /&gt;
* Special elements/redirects: Player Clone, Dummy, Black Hole&lt;br /&gt;
* ZZT itself: versions, Super ZZT&lt;br /&gt;
* Cheats&lt;br /&gt;
* Locks, especially those integrated with ZZT like the SECRET flag&lt;br /&gt;
&lt;br /&gt;
== ZZT behavior ==&lt;br /&gt;
Some of the categorization here is fuzzy (is X a bug or a technique?). You can help by writing the corresponding article, so we can get rid of the offending line on this page. :-)&lt;br /&gt;
&lt;br /&gt;
=== Techniques ===&lt;br /&gt;
&lt;br /&gt;
* [[Kangaroo effect]]&lt;br /&gt;
* Using [[Player clone|player clones]] for teleportation&lt;br /&gt;
* Using [[Statless player|statless players]] and board [[Edge|edges]] to control teleportation&lt;br /&gt;
* [[Colors accessible from ZZT]]&lt;br /&gt;
* Detecting [[game speed]]&lt;br /&gt;
* Using [[Medusa bug|Medusa bugs]] (transporters, text, etc) to prevent anti-dark cheats&lt;br /&gt;
* [[Board illusion]] triggered by crossing to another board and immediately hitting a passage&lt;br /&gt;
* Sticking non-[[segment]] entities onto a [[centipede]]&lt;br /&gt;
* Using non-unit [[step values]] to, e.g., move diagonally&lt;br /&gt;
* [[Stat]] stacking&lt;br /&gt;
* Transferring data between worlds by overwriting board edges&lt;br /&gt;
&lt;br /&gt;
=== Internals ===&lt;br /&gt;
&lt;br /&gt;
* [[Stat order]]&lt;br /&gt;
* [[Tick]]&amp;lt;nowiki/&amp;gt;s modulo 420&lt;br /&gt;
* [[32-command limit]]&lt;br /&gt;
* [[Pascal string]]&amp;lt;nowiki/&amp;gt;s hold partial previous contents in memory/on disk&lt;br /&gt;
&lt;br /&gt;
=== Bugs and limits ===&lt;br /&gt;
&lt;br /&gt;
*[[Counter]] behavior when [[Give|#giving]] very large numbers&lt;br /&gt;
*[[Counter]] display bug&lt;br /&gt;
*[[Label]] behavior with numerals&lt;br /&gt;
*[[Restore|#restore]] sometimes doesn&#039;t restore all labels&lt;br /&gt;
* Black [[Key|keys]] and [[Door|doors]]&lt;br /&gt;
* Inaccuracies in frequencies used by [[Play|#play]]&lt;br /&gt;
* [[Conveyor]] bugs (ability to delete player, etc)&lt;br /&gt;
* 1000-line maximum for all [[text dialog]]&amp;lt;nowiki/&amp;gt;s (including world selector)&lt;br /&gt;
* Shooting changes [[step value]] of 150th stat&lt;br /&gt;
* Moving while paused via [[mouse movement]]&lt;br /&gt;
* Vertical [[blink wall]] can toss the player east on top of a wall/obstruction&lt;br /&gt;
* Blank lines in [[text dialog]]&amp;lt;nowiki/&amp;gt;s sometimes appear as hyperlinks&lt;br /&gt;
* [[Put|#put]] doesn&#039;t work on bottom row&lt;br /&gt;
* [[Built-in editor]] and stat deletion bugs, if we ever figure out why that one happens&lt;br /&gt;
* Dependencies on CPU speed (e.g., [[sound effects]])&lt;br /&gt;
* [[Koopo bug]]&lt;br /&gt;
* Can&#039;t [[Send|#send]] to a [[label]] on the first line&lt;br /&gt;
* [[Passage]]&amp;lt;nowiki/&amp;gt;s have the potential to delete each other if they are adjacent&lt;br /&gt;
&lt;br /&gt;
== ZZT itself ==&lt;br /&gt;
&lt;br /&gt;
=== File formats ===&lt;br /&gt;
&lt;br /&gt;
* [[World]]&lt;br /&gt;
* [[Board]]&lt;br /&gt;
* [[ZZT.DAT]]&lt;br /&gt;
* [[High score files]]&lt;br /&gt;
* Help files&lt;br /&gt;
&lt;br /&gt;
=== Tile types ===&lt;br /&gt;
* [[Empty]]&lt;br /&gt;
* [[Edge]]&lt;br /&gt;
* [[Monitor]]&lt;br /&gt;
* [[Player]]&lt;br /&gt;
* [[Ammo]]&lt;br /&gt;
* [[Torch]]&lt;br /&gt;
* [[Gem]]&lt;br /&gt;
* [[Key]]&lt;br /&gt;
* [[Door]]&lt;br /&gt;
* [[Scroll]]&lt;br /&gt;
* [[Passage]]&lt;br /&gt;
* [[Duplicator]]&lt;br /&gt;
* [[Bomb]]&lt;br /&gt;
* [[Energizer]]&lt;br /&gt;
* [[Star]]&lt;br /&gt;
* [[Conveyor]]&lt;br /&gt;
* [[Bullet]]&lt;br /&gt;
* [[Water]]&lt;br /&gt;
* [[Forest]]&lt;br /&gt;
* [[Solid]]&lt;br /&gt;
* [[Normal]]&lt;br /&gt;
* [[Breakable]]&lt;br /&gt;
* [[Boulder]]&lt;br /&gt;
* [[Slider]]&lt;br /&gt;
* [[Fake]]&lt;br /&gt;
* [[Invisible]]&lt;br /&gt;
* [[Blink wall]]&lt;br /&gt;
* [[Transporter]]&lt;br /&gt;
* [[Line]]&lt;br /&gt;
* [[Ricochet]]&lt;br /&gt;
* [[Blink wall ray]]&lt;br /&gt;
* [[Bear]]&lt;br /&gt;
* [[Ruffian]]&lt;br /&gt;
* [[Object]]&lt;br /&gt;
* [[Slime]]&lt;br /&gt;
* [[Shark]]&lt;br /&gt;
* [[Spinning gun]]&lt;br /&gt;
* [[Pusher]]&lt;br /&gt;
* [[Lion]]&lt;br /&gt;
* [[Tiger]]&lt;br /&gt;
* [[Head]]&lt;br /&gt;
* [[Segment]]&lt;br /&gt;
* [[Text]]&lt;br /&gt;
=== [[ZZT-OOP]] ===&lt;br /&gt;
==== Prefixes/statement types ====&lt;br /&gt;
* [[Centered text]] ($)&lt;br /&gt;
* [[Object name]] (@)&lt;br /&gt;
* [[Command]] (#)&lt;br /&gt;
* [[Slash move]] (/) (Should this be combined with #[[GO]]?)&lt;br /&gt;
* [[Question move]] (?)&lt;br /&gt;
* [[Label]] (:)&lt;br /&gt;
* [[Comment]]/[[Zapped label]] (&#039;)&lt;br /&gt;
* [[Hyperlink]] (!)&lt;br /&gt;
==== Built-in [[Message]]s ====&lt;br /&gt;
* [[Touch]]&lt;br /&gt;
* [[Shot]]&lt;br /&gt;
* [[Bombed]]&lt;br /&gt;
* [[Thud]]&lt;br /&gt;
* [[Energize]]&lt;br /&gt;
==== Directions ====&lt;br /&gt;
* [[North]], [[South]], [[East]], [[West]]&lt;br /&gt;
* [[Idle (direction)]]&lt;br /&gt;
* [[Seek]]&lt;br /&gt;
* [[Flow]]&lt;br /&gt;
* [[Rndns]], [[Rndne]], [[Rnd]], [[Rndp]]&lt;br /&gt;
* [[Cw]], [[Ccw]], [[Opp]]&lt;br /&gt;
==== Built-in [[flag]]s ====&lt;br /&gt;
* [[Alligned]]&lt;br /&gt;
* [[Any]]&lt;br /&gt;
* [[Contact]]&lt;br /&gt;
* [[Blocked]]&lt;br /&gt;
* [[Energized]]&lt;br /&gt;
==== Commands ====&lt;br /&gt;
* [[Become]]&lt;br /&gt;
* [[Bind]]&lt;br /&gt;
* [[Change]]&lt;br /&gt;
* [[Char]]&lt;br /&gt;
* [[Clear]]&lt;br /&gt;
* [[Cycle]]&lt;br /&gt;
* [[Die]]&lt;br /&gt;
* [[End]]&lt;br /&gt;
* [[Endgame]]&lt;br /&gt;
* [[Give]]&lt;br /&gt;
* [[Go]]&lt;br /&gt;
* [[Idle]]&lt;br /&gt;
* [[If]]&lt;br /&gt;
* [[Lock]]&lt;br /&gt;
* [[Play]]&lt;br /&gt;
* [[Put]]&lt;br /&gt;
* [[Restart]]&lt;br /&gt;
* [[Restore]]&lt;br /&gt;
* [[Send]]&lt;br /&gt;
* [[Shoot]]&lt;br /&gt;
* [[Take]]&lt;br /&gt;
* [[Throwstar]]&lt;br /&gt;
* [[Try]]&lt;br /&gt;
* [[Unlock]]&lt;br /&gt;
* [[Walk]]&lt;br /&gt;
* [[Zap]]&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Wiki:Requested_articles&amp;diff=198</id>
		<title>Wiki:Requested articles</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Wiki:Requested_articles&amp;diff=198"/>
		<updated>2021-01-18T22:37:16Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Add some items under new &amp;quot;ZZT behavior&amp;quot; section, add link to Special:WantedPages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note that some of these links should probably be the same article: for example, we probably don&#039;t need separate articles for NORTH and SOUTH, but we should have redirects to a shared article.&lt;br /&gt;
&lt;br /&gt;
Also, see [[Special:WantedPages]] for an automatically-generated list of linked-to but non-existent pages.&lt;br /&gt;
&lt;br /&gt;
== Categories to add ==&lt;br /&gt;
* Colors&lt;br /&gt;
* Fake labels (:endgame, :zapped) that are rumored to exist but don&#039;t&lt;br /&gt;
* Output stuff: Sound? Charsets? Colors?&lt;br /&gt;
* World, board, stat&lt;br /&gt;
* Special elements/redirects: Player Clone, Dummy, Black Hole&lt;br /&gt;
* ZZT itself: versions, Super ZZT&lt;br /&gt;
* Cheats&lt;br /&gt;
* Locks, especially those integrated with ZZT like the SECRET flag&lt;br /&gt;
&lt;br /&gt;
== ZZT behavior ==&lt;br /&gt;
&lt;br /&gt;
=== Techniques ===&lt;br /&gt;
&lt;br /&gt;
* [[Kangaroo effect]]&lt;br /&gt;
* Using [[Player clone|player clones]] for teleportation&lt;br /&gt;
* Using [[Statless player|statless players]] and board [[Edge|edges]] to control teleportation&lt;br /&gt;
* [[Colors accessible from ZZT]]&lt;br /&gt;
* Detecting [[game speed]]&lt;br /&gt;
* Using [[Medusa bug|Medusa bugs]] (transporters, text, etc) to prevent anti-dark cheats&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
* [[Counter]] behavior when [[Give|#giving]] very large numbers&lt;br /&gt;
* [[Counter]] display bug&lt;br /&gt;
* [[Label]] behavior with numerals&lt;br /&gt;
* [[Restore|#restore]] sometimes doesn&#039;t restore all labels&lt;br /&gt;
* Black [[Key|keys]] and [[Door|doors]]&lt;br /&gt;
* Inaccuracies in frequencies used by [[Play|#play]]&lt;br /&gt;
&lt;br /&gt;
== ZZT itself ==&lt;br /&gt;
&lt;br /&gt;
=== File formats ===&lt;br /&gt;
&lt;br /&gt;
* [[World]]&lt;br /&gt;
* [[Board]]&lt;br /&gt;
* [[ZZT.DAT]]&lt;br /&gt;
* [[High score files]]&lt;br /&gt;
* Help files&lt;br /&gt;
&lt;br /&gt;
=== Tile types ===&lt;br /&gt;
* [[Empty]]&lt;br /&gt;
* [[Edge]]&lt;br /&gt;
* [[Monitor]]&lt;br /&gt;
* [[Player]]&lt;br /&gt;
* [[Ammo]]&lt;br /&gt;
* [[Torch]]&lt;br /&gt;
* [[Gem]]&lt;br /&gt;
* [[Key]]&lt;br /&gt;
* [[Door]]&lt;br /&gt;
* [[Scroll]]&lt;br /&gt;
* [[Passage]]&lt;br /&gt;
* [[Duplicator]]&lt;br /&gt;
* [[Bomb]]&lt;br /&gt;
* [[Energizer]]&lt;br /&gt;
* [[Star]]&lt;br /&gt;
* [[Conveyor]]&lt;br /&gt;
* [[Bullet]]&lt;br /&gt;
* [[Water]]&lt;br /&gt;
* [[Forest]]&lt;br /&gt;
* [[Solid]]&lt;br /&gt;
* [[Normal]]&lt;br /&gt;
* [[Breakable]]&lt;br /&gt;
* [[Boulder]]&lt;br /&gt;
* [[Slider]]&lt;br /&gt;
* [[Fake]]&lt;br /&gt;
* [[Invisible]]&lt;br /&gt;
* [[Blink wall]]&lt;br /&gt;
* [[Transporter]]&lt;br /&gt;
* [[Line]]&lt;br /&gt;
* [[Ricochet]]&lt;br /&gt;
* [[Blink wall ray]]&lt;br /&gt;
* [[Bear]]&lt;br /&gt;
* [[Ruffian]]&lt;br /&gt;
* [[Object]]&lt;br /&gt;
* [[Slime]]&lt;br /&gt;
* [[Shark]]&lt;br /&gt;
* [[Spinning gun]]&lt;br /&gt;
* [[Pusher]]&lt;br /&gt;
* [[Lion]]&lt;br /&gt;
* [[Tiger]]&lt;br /&gt;
* [[Head]]&lt;br /&gt;
* [[Segment]]&lt;br /&gt;
* [[Text]]&lt;br /&gt;
=== [[ZZT-OOP]] ===&lt;br /&gt;
==== Prefixes/statement types ====&lt;br /&gt;
* [[Centered text]] ($)&lt;br /&gt;
* [[Object name]] (@)&lt;br /&gt;
* [[Command]] (#)&lt;br /&gt;
* [[Slash move]] (/) (Should this be combined with #[[GO]]?)&lt;br /&gt;
* [[Question move]] (?)&lt;br /&gt;
* [[Label]] (:)&lt;br /&gt;
* [[Comment]]/[[Zapped label]] (&#039;)&lt;br /&gt;
* [[Hyperlink]] (!)&lt;br /&gt;
==== Built-in [[Message]]s ====&lt;br /&gt;
* [[Touch]]&lt;br /&gt;
* [[Shot]]&lt;br /&gt;
* [[Bombed]]&lt;br /&gt;
* [[Thud]]&lt;br /&gt;
* [[Energize]]&lt;br /&gt;
==== Directions ====&lt;br /&gt;
* [[North]], [[South]], [[East]], [[West]]&lt;br /&gt;
* [[Idle (direction)]]&lt;br /&gt;
* [[Seek]]&lt;br /&gt;
* [[Flow]]&lt;br /&gt;
* [[Rndns]], [[Rndne]], [[Rnd]], [[Rndp]]&lt;br /&gt;
* [[Cw]], [[Ccw]], [[Opp]]&lt;br /&gt;
==== Built-in [[flag]]s ====&lt;br /&gt;
* [[Alligned]]&lt;br /&gt;
* [[Any]]&lt;br /&gt;
* [[Contact]]&lt;br /&gt;
* [[Blocked]]&lt;br /&gt;
* [[Energized]]&lt;br /&gt;
==== Commands ====&lt;br /&gt;
* [[Become]]&lt;br /&gt;
* [[Bind]]&lt;br /&gt;
* [[Change]]&lt;br /&gt;
* [[Char]]&lt;br /&gt;
* [[Clear]]&lt;br /&gt;
* [[Cycle]]&lt;br /&gt;
* [[Die]]&lt;br /&gt;
* [[End]]&lt;br /&gt;
* [[Endgame]]&lt;br /&gt;
* [[Give]]&lt;br /&gt;
* [[Go]]&lt;br /&gt;
* [[Idle]]&lt;br /&gt;
* [[If]]&lt;br /&gt;
* [[Lock]]&lt;br /&gt;
* [[Play]]&lt;br /&gt;
* [[Put]]&lt;br /&gt;
* [[Restart]]&lt;br /&gt;
* [[Restore]]&lt;br /&gt;
* [[Send]]&lt;br /&gt;
* [[Shoot]]&lt;br /&gt;
* [[Take]]&lt;br /&gt;
* [[Throwstar]]&lt;br /&gt;
* [[Try]]&lt;br /&gt;
* [[Unlock]]&lt;br /&gt;
* [[Walk]]&lt;br /&gt;
* [[Zap]]&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Wiki:Requested_articles&amp;diff=197</id>
		<title>Wiki:Requested articles</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Wiki:Requested_articles&amp;diff=197"/>
		<updated>2021-01-18T09:34:19Z</updated>

		<summary type="html">&lt;p&gt;Quantum: /* File formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note that some of these links should probably be the same article: for example, we probably don&#039;t need separate articles for NORTH and SOUTH, but we should have redirects to a shared article.&lt;br /&gt;
&lt;br /&gt;
== Categories to add ==&lt;br /&gt;
* Colors&lt;br /&gt;
* Fake labels (:endgame, :zapped) that are rumored to exist but don&#039;t&lt;br /&gt;
* Output stuff: Sound? Charsets? Colors?&lt;br /&gt;
* World, board, stat&lt;br /&gt;
* Special elements/redirects: Player Clone, Dummy, Black Hole&lt;br /&gt;
* ZZT itself: versions, Super ZZT&lt;br /&gt;
* Cheats&lt;br /&gt;
* Locks, especially those integrated with ZZT like the SECRET flag&lt;br /&gt;
&lt;br /&gt;
== ZZT itself ==&lt;br /&gt;
&lt;br /&gt;
=== File formats ===&lt;br /&gt;
&lt;br /&gt;
* [[World]]&lt;br /&gt;
* [[Board]]&lt;br /&gt;
* [[ZZT.DAT]]&lt;br /&gt;
* [[High score files]]&lt;br /&gt;
* Help files&lt;br /&gt;
&lt;br /&gt;
=== Tile types ===&lt;br /&gt;
* [[Empty]]&lt;br /&gt;
* [[Edge]]&lt;br /&gt;
* [[Monitor]]&lt;br /&gt;
* [[Player]]&lt;br /&gt;
* [[Ammo]]&lt;br /&gt;
* [[Torch]]&lt;br /&gt;
* [[Gem]]&lt;br /&gt;
* [[Key]]&lt;br /&gt;
* [[Door]]&lt;br /&gt;
* [[Scroll]]&lt;br /&gt;
* [[Passage]]&lt;br /&gt;
* [[Duplicator]]&lt;br /&gt;
* [[Bomb]]&lt;br /&gt;
* [[Energizer]]&lt;br /&gt;
* [[Star]]&lt;br /&gt;
* [[Conveyor]]&lt;br /&gt;
* [[Bullet]]&lt;br /&gt;
* [[Water]]&lt;br /&gt;
* [[Forest]]&lt;br /&gt;
* [[Solid]]&lt;br /&gt;
* [[Normal]]&lt;br /&gt;
* [[Breakable]]&lt;br /&gt;
* [[Boulder]]&lt;br /&gt;
* [[Slider]]&lt;br /&gt;
* [[Fake]]&lt;br /&gt;
* [[Invisible]]&lt;br /&gt;
* [[Blink wall]]&lt;br /&gt;
* [[Transporter]]&lt;br /&gt;
* [[Line]]&lt;br /&gt;
* [[Ricochet]]&lt;br /&gt;
* [[Blink wall ray]]&lt;br /&gt;
* [[Bear]]&lt;br /&gt;
* [[Ruffian]]&lt;br /&gt;
* [[Object]]&lt;br /&gt;
* [[Slime]]&lt;br /&gt;
* [[Shark]]&lt;br /&gt;
* [[Spinning gun]]&lt;br /&gt;
* [[Pusher]]&lt;br /&gt;
* [[Lion]]&lt;br /&gt;
* [[Tiger]]&lt;br /&gt;
* [[Head]]&lt;br /&gt;
* [[Segment]]&lt;br /&gt;
* [[Text]]&lt;br /&gt;
=== [[ZZT-OOP]] ===&lt;br /&gt;
==== Prefixes/statement types ====&lt;br /&gt;
* [[Centered text]] ($)&lt;br /&gt;
* [[Object name]] (@)&lt;br /&gt;
* [[Command]] (#)&lt;br /&gt;
* [[Slash move]] (/) (Should this be combined with #[[GO]]?)&lt;br /&gt;
* [[Question move]] (?)&lt;br /&gt;
* [[Label]] (:)&lt;br /&gt;
* [[Comment]]/[[Zapped label]] (&#039;)&lt;br /&gt;
* [[Hyperlink]] (!)&lt;br /&gt;
==== Built-in [[Message]]s ====&lt;br /&gt;
* [[Touch]]&lt;br /&gt;
* [[Shot]]&lt;br /&gt;
* [[Bombed]]&lt;br /&gt;
* [[Thud]]&lt;br /&gt;
* [[Energize]]&lt;br /&gt;
==== Directions ====&lt;br /&gt;
* [[North]], [[South]], [[East]], [[West]]&lt;br /&gt;
* [[Idle (direction)]]&lt;br /&gt;
* [[Seek]]&lt;br /&gt;
* [[Flow]]&lt;br /&gt;
* [[Rndns]], [[Rndne]], [[Rnd]], [[Rndp]]&lt;br /&gt;
* [[Cw]], [[Ccw]], [[Opp]]&lt;br /&gt;
==== Built-in [[flag]]s ====&lt;br /&gt;
* [[Alligned]]&lt;br /&gt;
* [[Any]]&lt;br /&gt;
* [[Contact]]&lt;br /&gt;
* [[Blocked]]&lt;br /&gt;
* [[Energized]]&lt;br /&gt;
==== Commands ====&lt;br /&gt;
* [[Become]]&lt;br /&gt;
* [[Bind]]&lt;br /&gt;
* [[Change]]&lt;br /&gt;
* [[Char]]&lt;br /&gt;
* [[Clear]]&lt;br /&gt;
* [[Cycle]]&lt;br /&gt;
* [[Die]]&lt;br /&gt;
* [[End]]&lt;br /&gt;
* [[Endgame]]&lt;br /&gt;
* [[Give]]&lt;br /&gt;
* [[Go]]&lt;br /&gt;
* [[Idle]]&lt;br /&gt;
* [[If]]&lt;br /&gt;
* [[Lock]]&lt;br /&gt;
* [[Play]]&lt;br /&gt;
* [[Put]]&lt;br /&gt;
* [[Restart]]&lt;br /&gt;
* [[Restore]]&lt;br /&gt;
* [[Send]]&lt;br /&gt;
* [[Shoot]]&lt;br /&gt;
* [[Take]]&lt;br /&gt;
* [[Throwstar]]&lt;br /&gt;
* [[Try]]&lt;br /&gt;
* [[Unlock]]&lt;br /&gt;
* [[Walk]]&lt;br /&gt;
* [[Zap]]&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Boulder&amp;diff=196</id>
		<title>Boulder</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Boulder&amp;diff=196"/>
		<updated>2021-01-18T08:34:01Z</updated>

		<summary type="html">&lt;p&gt;Quantum: /* Erasure of fake walls */ Link to other statless pushables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Element&lt;br /&gt;
|zzt-oop name=boulder&lt;br /&gt;
|category=terrain&lt;br /&gt;
|id=24 (18h)&lt;br /&gt;
|char={{CharSwatch|254}}&lt;br /&gt;
|stats=no&lt;br /&gt;
|effect on movement=pushable&lt;br /&gt;
|destructible=no&lt;br /&gt;
|uses zzt-oop color=yes&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Boulders&#039;&#039;&#039; are a [[pushable]] terrain element.&lt;br /&gt;
&lt;br /&gt;
Boulders can be pushed in any direction and are an important element in [[slider]] puzzles. However, they cannot be &#039;&#039;pulled&#039;&#039; by the player, meaning that it is easy for boulders to become stuck in a corner or against a wall. Boulders cannot be destroyed by the player, so a stuck boulder in a game can often lead to a softlock.&lt;br /&gt;
&lt;br /&gt;
Boulders keep their background color when they move, although this is not noticeable unless STK colors are in use. This behavior disappears if the boulder is given stats.&lt;br /&gt;
&lt;br /&gt;
== Erasure of fake walls ==&lt;br /&gt;
Boulders leave [[empties]] behind them when they are moved. This can be an issue for games that use [[Fake|fake walls]] as floors, as pushing a boulder across a colorful floor will erase a black trail across the floor. This erasing behavior happens because boulders lack [[stats]] by default, and thus lack a way to track their under tile. Other statless pushables ([[ammo]], [[gems]], [[keys]], and [[sliders]]) also exhibit this erasing behavior, though it is more noticeable with boulders because boulders are more easily manipulated into areas of a board that have fake walls.&lt;br /&gt;
&lt;br /&gt;
This erasing behavior can be eliminated by giving the boulder stats, though the number of boulders that can be treated this way is limited by the board&#039;s [[Stat limit|stat limit]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Elements]]&lt;br /&gt;
{{ElementsNavbox}}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Ammo&amp;diff=195</id>
		<title>Ammo</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Ammo&amp;diff=195"/>
		<updated>2021-01-18T08:24:40Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Flesh out ammo article a bit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Element&lt;br /&gt;
|zzt-oop name=ammo&lt;br /&gt;
|id={{Byte|5}}&lt;br /&gt;
|char={{CharSwatch|132}}&lt;br /&gt;
|color={{ColorSwatch|fg=dark cyan|bg=black}}&lt;br /&gt;
|category=item&lt;br /&gt;
|stats=no&lt;br /&gt;
|destructible=no&lt;br /&gt;
|effect on movement=pushable&lt;br /&gt;
|uses zzt-oop color=no&lt;br /&gt;
}}&lt;br /&gt;
The &#039;&#039;&#039;ammo&#039;&#039;&#039; element is ZZT&#039;s built-in method for giving the player ammunition.&lt;br /&gt;
&lt;br /&gt;
Picking up an instance of ammo increments the player&#039;s [[Ammo (counter)|ammo counter]] by 5 shots. The amount is not configurable, making it a pain for the player to pick up a large quantity of it. For this reason, many modern ZZT worlds do not use ammo for its intended purpose, and instead substitute an [[object]] that [[Give|#gives]] ammo, or initialize the [[world]] with a non-zero ammo counter.&lt;br /&gt;
&lt;br /&gt;
Ammo is useful as a means of programmatically obtaining dark cyan, e.g., by [[Change|#changing]] another item to ammo and back.&lt;br /&gt;
&lt;br /&gt;
{{ElementsNavbox}}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Ammo&amp;diff=194</id>
		<title>Ammo</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Ammo&amp;diff=194"/>
		<updated>2021-01-18T08:03:34Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Stub page: populate templates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Element&lt;br /&gt;
|zzt-oop name=ammo&lt;br /&gt;
|id={{Byte|5}}&lt;br /&gt;
|char={{CharSwatch|132}}&lt;br /&gt;
|color={{ColorSwatch|fg=dark cyan|bg=black}}&lt;br /&gt;
|category=item&lt;br /&gt;
|stats=no&lt;br /&gt;
|destructible=no&lt;br /&gt;
|effect on movement=pushable&lt;br /&gt;
|uses zzt-oop color=no&lt;br /&gt;
}}&lt;br /&gt;
{{ElementsNavbox}}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Template:Byte&amp;diff=193</id>
		<title>Template:Byte</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Template:Byte&amp;diff=193"/>
		<updated>2021-01-18T07:58:10Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Template wrapper for Module:Byte&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&#039;&#039;&#039;Byte&#039;&#039;&#039; is a template for displaying a byte value (unsigned, as in Pascal) in both decimal and hexadecimal. Example:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;Tigers have element ID {{Byte|42}}.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Displays as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Tigers have element ID {{Byte|42}}.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The input can be either hex or decimal: in the case of hex, the &amp;quot;0x&amp;quot; prefix must be present.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that if you&#039;re talking about a color or an ASCII character, [[Template:ColorSwatch]] or [[Template:CharSwatch]] might be more appropriate, depending on what you want to do.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#invoke:Byte|byte|{{{1}}}}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Module:Byte&amp;diff=192</id>
		<title>Module:Byte</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Module:Byte&amp;diff=192"/>
		<updated>2021-01-18T07:50:12Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Module for displaying an unsigned byte value in decimal and hex&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.byte(frame)&lt;br /&gt;
	local i = tonumber(frame.args[1])&lt;br /&gt;
	return string.format(&amp;quot;%d (0x%02X)&amp;quot;, i, i)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Char&amp;diff=191</id>
		<title>Char</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Char&amp;diff=191"/>
		<updated>2021-01-18T06:28:48Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Remove extra whitespace&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:char}}&lt;br /&gt;
&#039;&#039;&#039;#char&#039;&#039;&#039; is a [[ZZT-OOP]] command for changing an object&#039;s display character. It takes a single parameter, a decimal number from 1 to 255, representing the desired extended ASCII character.&lt;br /&gt;
&lt;br /&gt;
Note that #char does not allow character 0 as a parameter, even though it is a valid extended ASCII character. Running &amp;lt;code&amp;gt;#char 0&amp;lt;/code&amp;gt; will silently fail without changing the object&#039;s character. This restriction does not typically matter in practice because characters 32 and 255 are usually visually identical to character 0.&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Template:ElementsNavbox&amp;diff=190</id>
		<title>Template:ElementsNavbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Template:ElementsNavbox&amp;diff=190"/>
		<updated>2021-01-18T06:19:55Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Moved some items not available in ZZT&amp;#039;s default editor into Special category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:Navbox|navbox|title=[[Element|Elements]]&lt;br /&gt;
|groupName1=Special&lt;br /&gt;
|group1=&lt;br /&gt;
* [[Empty]]&lt;br /&gt;
* [[Edge]]&lt;br /&gt;
* [[Message timer]]&lt;br /&gt;
* [[Monitor]]&lt;br /&gt;
* [[Star]]&lt;br /&gt;
* [[Bullet]]&lt;br /&gt;
* [[Blink wall ray]]&lt;br /&gt;
|groupName2=Items&lt;br /&gt;
|group2=&lt;br /&gt;
* [[Player]]&lt;br /&gt;
* [[Ammo]]&lt;br /&gt;
* [[Torch]]&lt;br /&gt;
* [[Gem]]&lt;br /&gt;
* [[Key]]&lt;br /&gt;
* [[Door]]&lt;br /&gt;
* [[Scroll]]&lt;br /&gt;
* [[Passage]]&lt;br /&gt;
* [[Duplicator]]&lt;br /&gt;
* [[Bomb]]&lt;br /&gt;
* [[Energizer]]&lt;br /&gt;
* [[Conveyor]]&lt;br /&gt;
|groupName3=Terrain&lt;br /&gt;
|group3=&lt;br /&gt;
* [[Water]]&lt;br /&gt;
* [[Forest]]&lt;br /&gt;
* [[Solid]]&lt;br /&gt;
* [[Normal]]&lt;br /&gt;
* [[Breakable]]&lt;br /&gt;
* [[Boulder]]&lt;br /&gt;
* [[Slider]]&lt;br /&gt;
* [[Fake]]&lt;br /&gt;
* [[Invisible]]&lt;br /&gt;
* [[Blink wall]]&lt;br /&gt;
* [[Transporter]]&lt;br /&gt;
* [[Line]]&lt;br /&gt;
* [[Ricochet]]&lt;br /&gt;
|groupName4=Creatures&lt;br /&gt;
|group4=&lt;br /&gt;
* [[Bear]]&lt;br /&gt;
* [[Ruffian]]&lt;br /&gt;
* [[Object]]&lt;br /&gt;
* [[Slime]]&lt;br /&gt;
* [[Shark]]&lt;br /&gt;
* [[Spinning gun]]&lt;br /&gt;
* [[Pusher]]&lt;br /&gt;
* [[Lion]]&lt;br /&gt;
* [[Tiger]]&lt;br /&gt;
* [[Head]]&lt;br /&gt;
* [[Segment]]&lt;br /&gt;
|groupName5=Text&lt;br /&gt;
|group5=&lt;br /&gt;
* [[Text]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category:Elements]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Lion&amp;diff=189</id>
		<title>Lion</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Lion&amp;diff=189"/>
		<updated>2021-01-18T06:15:32Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Add navbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Element&lt;br /&gt;
|name=Lion&lt;br /&gt;
|zzt-oop name=lion&lt;br /&gt;
|category=creature&lt;br /&gt;
|id=29h&lt;br /&gt;
|color={{ColorSwatch|fg=red|bg=black}}&lt;br /&gt;
|char={{CharSwatch|234}}&lt;br /&gt;
|stats=yes&lt;br /&gt;
|cycle=2&lt;br /&gt;
|p1=Intelligence&lt;br /&gt;
|score=1&lt;br /&gt;
|destructible=yes&lt;br /&gt;
|effect on movement=pushable, squishable&lt;br /&gt;
|uses zzt-oop color=no&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Lions&#039;&#039;&#039; are a type of built-in enemy in ZZT. They move around semi-randomly, tending to seek out the player (depending on the lion&#039;s intelligence). They can only do damage on contact, which destroys the lion as well.&lt;br /&gt;
&lt;br /&gt;
[[Category:Elements]]&lt;br /&gt;
{{ElementsNavbox}}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Boulder&amp;diff=188</id>
		<title>Boulder</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Boulder&amp;diff=188"/>
		<updated>2021-01-18T06:15:20Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Add navbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Element&lt;br /&gt;
|zzt-oop name=boulder&lt;br /&gt;
|category=terrain&lt;br /&gt;
|id=24 (18h)&lt;br /&gt;
|char={{CharSwatch|254}}&lt;br /&gt;
|stats=no&lt;br /&gt;
|effect on movement=pushable&lt;br /&gt;
|destructible=no&lt;br /&gt;
|uses zzt-oop color=yes&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Boulders&#039;&#039;&#039; are a [[pushable]] terrain element.&lt;br /&gt;
&lt;br /&gt;
Boulders can be pushed in any direction and are an important element in [[slider]] puzzles. However, they cannot be &#039;&#039;pulled&#039;&#039; by the player, meaning that it is easy for boulders to become stuck in a corner or against a wall. Boulders cannot be destroyed by the player, so a stuck boulder in a game can often lead to a softlock.&lt;br /&gt;
&lt;br /&gt;
Boulders keep their background color when they move, although this is not noticeable unless STK colors are in use. This behavior disappears if the boulder is given stats.&lt;br /&gt;
&lt;br /&gt;
== Erasure of fake walls ==&lt;br /&gt;
Boulders leave [[empties]] behind them when they are moved. This can be an issue for games that use [[Fake|fake walls]] as floors, as pushing a boulder across a colorful floor will erase a black trail across the floor. This erasing behavior happens because boulders lack [[stats]] by default, and thus lack a way to track their under tile. In fact, all statless pushables exhibit this erasing behavior, though it is more noticeable with boulders because boulders are more easily manipulated into areas of a board that have fake walls.&lt;br /&gt;
&lt;br /&gt;
This erasing behavior can be eliminated by giving the boulder stats, though the number of boulders that can be treated this way is limited by the board&#039;s [[Stat limit|stat limit]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Elements]]&lt;br /&gt;
{{ElementsNavbox}}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Passage&amp;diff=187</id>
		<title>Passage</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Passage&amp;diff=187"/>
		<updated>2021-01-18T06:15:08Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Add navbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Element&lt;br /&gt;
|id=0x0B&lt;br /&gt;
|zzt-oop name=passage&lt;br /&gt;
|category=item&lt;br /&gt;
|char={{CharSwatch|0xF0}}&lt;br /&gt;
|stats=yes&lt;br /&gt;
|cycle=0&lt;br /&gt;
|p3=index of destination board (title screen is 0)&lt;br /&gt;
|destructible=no&lt;br /&gt;
|effect on movement=wall; blocks movement of most entities but causes the player to teleport on touch&lt;br /&gt;
|uses zzt-oop color=yes, but named color affects background only; foreground is always white&lt;br /&gt;
}}&lt;br /&gt;
The &#039;&#039;&#039;passage&#039;&#039;&#039; element allows the player to switch the active board. They are one of the two ways to switch boards, the other being board [[edge|edges]].&lt;br /&gt;
&lt;br /&gt;
By default, traveling via passage does not modify the destination board. However, if the destination contains a second passage with the same color, ZZT will reposition the player on top of that second passage, so that the two passage tiles appear to be two ends of the same passageway: the player steps in one and out the other.&lt;br /&gt;
&lt;br /&gt;
Traveling through a passage will pause the game immediately after switching boards. This allows the player to examine the new board before play begins, so as not to be caught too off guard. However, this can lead to soft-locks if a passage is blocked off: a player can still enter a blocked passageway, but they won&#039;t be able to do anything, including returning to the previous board.&lt;br /&gt;
&lt;br /&gt;
==Tile repositioning bug==&lt;br /&gt;
Players traveling between identically-colored passages can disturb the surrounding tiles. Specifically, when ZZT repositions the player on top of the destination board&#039;s passage, it does so without updating the player [[stat]]&#039;s under type/color. In other words, ZZT relocates not just the player, but also the tile the player was previously standing on, leaving an [[empty]] in its place.&lt;br /&gt;
&lt;br /&gt;
This bug mainly matters for passages adjacent to [[fake]] walls or to other passages, as these tiles can be overwritten when the player is repositioned. The bug can be avoided by making sure that passages are only surrounded by walls and empties, and by making sure that the player is placed on top of an empty tile when the board is created.&lt;br /&gt;
[[Category:Elements]]&lt;br /&gt;
{{ElementsNavbox}}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Empty&amp;diff=186</id>
		<title>Empty</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Empty&amp;diff=186"/>
		<updated>2021-01-18T06:14:56Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Add navbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Element&lt;br /&gt;
|name=Empty&lt;br /&gt;
|zzt-oop name=empty&lt;br /&gt;
|id=0 (00h)&lt;br /&gt;
|char={{CharSwatch|0}}&lt;br /&gt;
|color={{ColorSwatch|bg=light gray|fg=black}}&lt;br /&gt;
|stats=no&lt;br /&gt;
|effect on movement=floor&lt;br /&gt;
|uses zzt-oop color=no&lt;br /&gt;
}}&lt;br /&gt;
An &#039;&#039;&#039;empty&#039;&#039;&#039; behaves like empty space. Empties are the default material for floors in ZZT, and alongside [[Fake|fakes]], are the only two elements that permit free movement of all creatures.&lt;br /&gt;
&lt;br /&gt;
Because they are the default floor material, empties are often produced by behavior within ZZT. For example, the [[Die|#die]] command turns the current object into an empty, and many [[stat]]-less elements (such as [[Key|keys]] and [[Door|doors]]) are replaced with empties when they disappear from the board.&lt;br /&gt;
&lt;br /&gt;
Empties always appear blank on screen and do not show their color. This makes it possible to conceal non-[[STK colors]]: e.g., a game might simulate dark red blood by [[Putting|#putting]] a fake over a dark red empty.&lt;br /&gt;
&lt;br /&gt;
==Black holes==&lt;br /&gt;
A &#039;&#039;&#039;black hole&#039;&#039;&#039; is an empty that has been artificially given a stat.&lt;br /&gt;
&lt;br /&gt;
Black holes affect [[player]] movement by giving the player an extra move when stepped on. A player stepping onto a black hole will cause the black hole&#039;s stat to behave like a player stat, usually resulting in the user&#039;s movement command being executed again in the same [[cycle]]. The effect is that the player seems to &amp;quot;jump over&amp;quot; the black hole tile.&lt;br /&gt;
[[Category:Elements]]&lt;br /&gt;
{{ElementsNavbox}}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Text&amp;diff=185</id>
		<title>Text</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Text&amp;diff=185"/>
		<updated>2021-01-18T06:12:53Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Add navbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Element&lt;br /&gt;
|name=Text&lt;br /&gt;
|picture=[[File:text-example.png]]&lt;br /&gt;
|caption=Text can display any character, but color choices are limited&lt;br /&gt;
|zzt-oop name=N/A&lt;br /&gt;
|id=Multiple, used to encode background color:&lt;br /&gt;
* 0x2F: Blue&lt;br /&gt;
* 0x30: Green&lt;br /&gt;
* 0x31: Cyan&lt;br /&gt;
* 0x32: Red&lt;br /&gt;
* 0x33: Purple&lt;br /&gt;
* 0x34: Brown&lt;br /&gt;
* 0x35: Black&lt;br /&gt;
|color=White foreground; element ID determines background&lt;br /&gt;
|char=Any (determined by tile&#039;s color byte)&lt;br /&gt;
|stats=no&lt;br /&gt;
|effect on movement=wall&lt;br /&gt;
|uses zzt-oop color=N/A&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Text&#039;&#039;&#039; is a terrain type that can have any of the 256 characters. Its intended use is for putting text labels on a board&#039;s terrain.&lt;br /&gt;
&lt;br /&gt;
Text is the only element that can display any character without the overhead of using a [[stat]], which makes them useful for ZZT art. However, artistic usage is somewhat hampered by the fact that text can only use a fixed set of color combinations: if you want to write a sentence on the screen in a custom color (e.g., black on light gray), the only way to do it is to use [[object|objects]].&lt;br /&gt;
&lt;br /&gt;
Text is also the only element supported by the built-in editor that has no ZZT-OOP name: e.g., there is no way to change all text tiles to another element type.&lt;br /&gt;
&lt;br /&gt;
==Usage of terrain color byte==&lt;br /&gt;
Text is stored differently than any other element. Internally, ZZT repurposes the element&#039;s color byte to store character data instead: this allows the full range of characters to be encoded without having to allocate extra space (in the form of [[stats]]) for each tile. Since the color byte is occupied with other data, the actual color info is encoded by having different element IDs for each color. The result is that text is technically not just one element, but several.&lt;br /&gt;
&lt;br /&gt;
Side effects from this roundabout encoding are apparent in a couple of places: &lt;br /&gt;
&lt;br /&gt;
*Overwriting text (using [[Put|#put]] or [[Become|#become]]) will sometimes result in [[STK]]-colored elements. This is because those commands always interpret the color byte as a color: if you #put a gem onto a blue text &amp;quot;Z&amp;quot; (ASCII code 0x5A), you will get a green-on-dark-purple gem (color code 0x5A).&lt;br /&gt;
*Unlike most elements, it is impossible to get arbitrary text colors from [[Toolkit|toolkits]] or [[External editor|external editors]]. This is not a matter of ZZT&#039;s internal editor being restrictive, but rather a limit imposed by the file format and the in-memory representation.&lt;br /&gt;
&lt;br /&gt;
Text is also the only element supported by the built-in editor that has no ZZT-OOP name: e.g., there is no way to change all text tiles to another element type. This may also be a side effect of text having a unique encoding.&lt;br /&gt;
&lt;br /&gt;
==Unassigned element IDs==&lt;br /&gt;
ZZT only officially supports the seven text colors which have assigned element IDs. However, it is possible to get a few additional colors by using IDs beyond the assigned range, as ZZT interprets all element IDs greater than 0x2E as text. The problem is that all these IDs are buggy because they cause ZZT to read past the end of its table of elements. Touching tiles with these IDs will crash ZZT, and many unassigned IDs will crash ZZT immediately, on the first [[tick]].&lt;br /&gt;
&lt;br /&gt;
Some known unassigned IDs and their text colors:&lt;br /&gt;
&lt;br /&gt;
*0x36: {{ColorSwatch|blinking|fg=white|bg=black}}&lt;br /&gt;
*0x37: {{ColorSwatch|blinking|fg=white|bg=dark blue}}&lt;br /&gt;
*0x38: {{ColorSwatch|blinking|fg=white|bg=dark green}}&lt;br /&gt;
*0x39: {{ColorSwatch|blinking|fg=white|bg=dark cyan}}&lt;br /&gt;
*0x3A: {{ColorSwatch|blinking|fg=white|bg=dark red}}&lt;br /&gt;
*0x3B: {{ColorSwatch|blinking|fg=white|bg=dark purple}}&lt;br /&gt;
*0x3C: {{ColorSwatch|blinking|fg=white|bg=dark brown}}&lt;br /&gt;
*0x3D: {{ColorSwatch|blinking|fg=white|bg=light gray}}&lt;br /&gt;
*0x45: {{ColorSwatch|fg=white|bg=light gray}}&lt;br /&gt;
&lt;br /&gt;
It is impossible to choose the text foreground color because ZZT hard-codes it to be white. This means there are only 16 possible color combinations: the 7 text colors built into ZZT, and the 9 produced by the unassigned IDs above.&lt;br /&gt;
&lt;br /&gt;
{{ElementsNavbox}}&lt;br /&gt;
[[Category:Elements]]&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Template:ElementsNavbox&amp;diff=184</id>
		<title>Template:ElementsNavbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Template:ElementsNavbox&amp;diff=184"/>
		<updated>2021-01-18T06:11:38Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Create initial elements navbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:Navbox|navbox|title=[[Element|Elements]]&lt;br /&gt;
|groupName1=Special&lt;br /&gt;
|group1=&lt;br /&gt;
* [[Empty]]&lt;br /&gt;
* [[Edge]]&lt;br /&gt;
* [[Message timer]]&lt;br /&gt;
* [[Monitor]]&lt;br /&gt;
|groupName2=Items&lt;br /&gt;
|group2=&lt;br /&gt;
* [[Player]]&lt;br /&gt;
* [[Ammo]]&lt;br /&gt;
* [[Torch]]&lt;br /&gt;
* [[Gem]]&lt;br /&gt;
* [[Key]]&lt;br /&gt;
* [[Door]]&lt;br /&gt;
* [[Scroll]]&lt;br /&gt;
* [[Passage]]&lt;br /&gt;
* [[Duplicator]]&lt;br /&gt;
* [[Bomb]]&lt;br /&gt;
* [[Energizer]]&lt;br /&gt;
* [[Star]]&lt;br /&gt;
* [[Conveyor]]&lt;br /&gt;
* [[Bullet]]&lt;br /&gt;
|groupName3=Terrain&lt;br /&gt;
|group3=&lt;br /&gt;
* [[Water]]&lt;br /&gt;
* [[Forest]]&lt;br /&gt;
* [[Solid]]&lt;br /&gt;
* [[Normal]]&lt;br /&gt;
* [[Breakable]]&lt;br /&gt;
* [[Boulder]]&lt;br /&gt;
* [[Slider]]&lt;br /&gt;
* [[Fake]]&lt;br /&gt;
* [[Invisible]]&lt;br /&gt;
* [[Blink wall]]&lt;br /&gt;
* [[Transporter]]&lt;br /&gt;
* [[Line]]&lt;br /&gt;
* [[Ricochet]]&lt;br /&gt;
* [[Blink wall ray]]&lt;br /&gt;
|groupName4=Creatures&lt;br /&gt;
|group4=&lt;br /&gt;
* [[Bear]]&lt;br /&gt;
* [[Ruffian]]&lt;br /&gt;
* [[Object]]&lt;br /&gt;
* [[Slime]]&lt;br /&gt;
* [[Shark]]&lt;br /&gt;
* [[Spinning gun]]&lt;br /&gt;
* [[Pusher]]&lt;br /&gt;
* [[Lion]]&lt;br /&gt;
* [[Tiger]]&lt;br /&gt;
* [[Head]]&lt;br /&gt;
* [[Segment]]&lt;br /&gt;
|groupName5=Text&lt;br /&gt;
|group5=&lt;br /&gt;
* [[Text]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category:Elements]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=MediaWiki:Common.css&amp;diff=183</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=MediaWiki:Common.css&amp;diff=183"/>
		<updated>2021-01-18T05:56:30Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Tweak navbox colors: via https://meyerweb.com/eric/tools/color-blend/#0055AA:FFFFFF:6:hex&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
@font-face {&lt;br /&gt;
	font-family: &amp;quot;EGA8&amp;quot;;&lt;br /&gt;
	src: url(&amp;quot;/w/images/a/ae/Web437_IBM_EGA_8x14.woff&amp;quot;) format(&amp;quot;woff&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.blinking {&lt;br /&gt;
	animation: 2.5s linear infinite blinking_text;&lt;br /&gt;
}&lt;br /&gt;
@keyframes blinking_text {&lt;br /&gt;
	35% {&lt;br /&gt;
		opacity: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	45% {&lt;br /&gt;
		opacity: 0%;&lt;br /&gt;
	}&lt;br /&gt;
	55% {&lt;br /&gt;
		opacity: 0%;&lt;br /&gt;
	}&lt;br /&gt;
	65% {&lt;br /&gt;
		opacity: 100%;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Navbox CSS */&lt;br /&gt;
.navbox {&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	border: 1px solid #aaa;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
.navbox .title th {&lt;br /&gt;
	background: #B6CEE7;&lt;br /&gt;
}&lt;br /&gt;
.navbox .group th {&lt;br /&gt;
	background: #DBE7F3;&lt;br /&gt;
	padding-left: 1em;&lt;br /&gt;
	padding-right: 1em;&lt;br /&gt;
}&lt;br /&gt;
.navbox .group td {&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	padding-right: 0.5em;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.navbox .group:nth-child(2n+1) td {&lt;br /&gt;
	background: #f5f5f5;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Style lists as dot-separated items */&lt;br /&gt;
.navbox ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.navbox li {&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.navbox li:nth-child(n+2):before {&lt;br /&gt;
	content: &amp;quot; · &amp;quot;;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=MediaWiki:Common.css&amp;diff=182</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=MediaWiki:Common.css&amp;diff=182"/>
		<updated>2021-01-18T05:48:29Z</updated>

		<summary type="html">&lt;p&gt;Quantum: CSS bugfix: this makes the following space appear for some reason&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
@font-face {&lt;br /&gt;
	font-family: &amp;quot;EGA8&amp;quot;;&lt;br /&gt;
	src: url(&amp;quot;/w/images/a/ae/Web437_IBM_EGA_8x14.woff&amp;quot;) format(&amp;quot;woff&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.blinking {&lt;br /&gt;
	animation: 2.5s linear infinite blinking_text;&lt;br /&gt;
}&lt;br /&gt;
@keyframes blinking_text {&lt;br /&gt;
	35% {&lt;br /&gt;
		opacity: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	45% {&lt;br /&gt;
		opacity: 0%;&lt;br /&gt;
	}&lt;br /&gt;
	55% {&lt;br /&gt;
		opacity: 0%;&lt;br /&gt;
	}&lt;br /&gt;
	65% {&lt;br /&gt;
		opacity: 100%;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Navbox CSS */&lt;br /&gt;
.navbox {&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	border: 1px solid #aaa;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
.navbox .title th {&lt;br /&gt;
	background: #B6B6E7;&lt;br /&gt;
}&lt;br /&gt;
.navbox .group th {&lt;br /&gt;
	background: #DBDBF3;&lt;br /&gt;
	padding-left: 1em;&lt;br /&gt;
	padding-right: 1em;&lt;br /&gt;
}&lt;br /&gt;
.navbox .group td {&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	padding-right: 0.5em;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.navbox .group:nth-child(2n+1) td {&lt;br /&gt;
	background: #f5f5f5;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Style lists as dot-separated items */&lt;br /&gt;
.navbox ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.navbox li {&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.navbox li:nth-child(n+2):before {&lt;br /&gt;
	content: &amp;quot; · &amp;quot;;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=MediaWiki:Common.css&amp;diff=181</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=MediaWiki:Common.css&amp;diff=181"/>
		<updated>2021-01-18T05:43:41Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Revise navbox CSS: use more classes, style lists inline&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
@font-face {&lt;br /&gt;
	font-family: &amp;quot;EGA8&amp;quot;;&lt;br /&gt;
	src: url(&amp;quot;/w/images/a/ae/Web437_IBM_EGA_8x14.woff&amp;quot;) format(&amp;quot;woff&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.blinking {&lt;br /&gt;
	animation: 2.5s linear infinite blinking_text;&lt;br /&gt;
}&lt;br /&gt;
@keyframes blinking_text {&lt;br /&gt;
	35% {&lt;br /&gt;
		opacity: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	45% {&lt;br /&gt;
		opacity: 0%;&lt;br /&gt;
	}&lt;br /&gt;
	55% {&lt;br /&gt;
		opacity: 0%;&lt;br /&gt;
	}&lt;br /&gt;
	65% {&lt;br /&gt;
		opacity: 100%;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Navbox CSS */&lt;br /&gt;
.navbox {&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	border: 1px solid #aaa;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
.navbox .title th {&lt;br /&gt;
	background: #B6B6E7;&lt;br /&gt;
}&lt;br /&gt;
.navbox .group th {&lt;br /&gt;
	background: #DBDBF3;&lt;br /&gt;
	padding-left: 1em;&lt;br /&gt;
	padding-right: 1em;&lt;br /&gt;
}&lt;br /&gt;
.navbox .group td {&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	padding-right: 0.5em;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.navbox .group:nth-child(2n+1) td {&lt;br /&gt;
	background: #f5f5f5;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Style lists as dot-separated items */&lt;br /&gt;
.navbox ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.navbox li {&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.navbox li:nth-child(n+2):before {&lt;br /&gt;
	content: &amp;quot; \00b7  &amp;quot;;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=User:Quantum/Element_navbox&amp;diff=180</id>
		<title>User:Quantum/Element navbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=User:Quantum/Element_navbox&amp;diff=180"/>
		<updated>2021-01-18T04:09:18Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Add module version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table class=&amp;quot;navbox&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th colspan=2&amp;quot;&amp;gt;[[Elements]]&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Special&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;[[Empty]] • [[Edge]] • [[Monitor]] • [[Message timer]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Items&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;[[Player]] • [[Ammo]] • [[Torch]] • [[Gem]] • etc...&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Terrain&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;[[Water]] • [[Forest]] • [[Solid]] • etc...&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Creatures&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;[[Bear]] • [[Ruffian]] • [[Object]] • etc...&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Text&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;[[Text]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Module version:&lt;br /&gt;
{{#invoke:Navbox|navbox|title=[[Elements]]&lt;br /&gt;
|groupName1=&#039;&#039;&#039;Special&#039;&#039;&#039;&lt;br /&gt;
|group1=&lt;br /&gt;
* [[Empty]]&lt;br /&gt;
* [[Edge]]&lt;br /&gt;
* [[Monitor]]&lt;br /&gt;
* [[Message timer]]&lt;br /&gt;
|groupName2=&#039;&#039;&#039;Items&#039;&#039;&#039;&lt;br /&gt;
|group2=&lt;br /&gt;
* [[Player]]&lt;br /&gt;
* [[Ammo]]&lt;br /&gt;
* [[Torch]]&lt;br /&gt;
* [[Gem]]&lt;br /&gt;
* etc...&lt;br /&gt;
|groupName3=&#039;&#039;&#039;Terrain&#039;&#039;&#039;&lt;br /&gt;
|group3=&lt;br /&gt;
* [[Water]]&lt;br /&gt;
* [[Forest]]&lt;br /&gt;
* [[Solid]]&lt;br /&gt;
* etc...&lt;br /&gt;
|groupName4=&#039;&#039;&#039;Creatures&#039;&#039;&#039;&lt;br /&gt;
|group4=&lt;br /&gt;
* [[Bear]]&lt;br /&gt;
* [[Ruffian]]&lt;br /&gt;
* [[Object]]&lt;br /&gt;
* etc...&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Module:Navbox&amp;diff=179</id>
		<title>Module:Navbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Module:Navbox&amp;diff=179"/>
		<updated>2021-01-18T03:47:26Z</updated>

		<summary type="html">&lt;p&gt;Quantum: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.navbox(frame)&lt;br /&gt;
	local title = frame.args.title&lt;br /&gt;
	if title == nil then&lt;br /&gt;
		error(&amp;quot;Missing title&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Assign group1, group2, etc to groups&lt;br /&gt;
	local groups = {}&lt;br /&gt;
	local i = 1&lt;br /&gt;
	while frame.args[&amp;quot;group&amp;quot; .. i] ~= nil do&lt;br /&gt;
		local group = {&lt;br /&gt;
			content = frame.args[&amp;quot;group&amp;quot; .. i],&lt;br /&gt;
			name = frame.args[&amp;quot;groupName&amp;quot; .. i] -- can be nil&lt;br /&gt;
		}&lt;br /&gt;
		table.insert(groups, group)&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return make_box(title, groups)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function make_box(title, groups)&lt;br /&gt;
	local navbox = mw.html.create(&amp;quot;table&amp;quot;):addClass(&amp;quot;navbox&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	-- Create title row&lt;br /&gt;
	local title_row = navbox:tag(&amp;quot;tr&amp;quot;):addClass(&amp;quot;title&amp;quot;)&lt;br /&gt;
	title_row:tag(&amp;quot;th&amp;quot;):attr(&amp;quot;colspan&amp;quot;, 2):wikitext(title)&lt;br /&gt;
&lt;br /&gt;
	-- Create row for each group&lt;br /&gt;
	for _, group in ipairs(groups) do&lt;br /&gt;
		local group_row = navbox:tag(&amp;quot;tr&amp;quot;):addClass(&amp;quot;group&amp;quot;)&lt;br /&gt;
		local content = &amp;quot;\n&amp;quot; .. group.content .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		if group.name == nil then&lt;br /&gt;
			group_row:tag(&amp;quot;td&amp;quot;):attr(&amp;quot;colspan&amp;quot;, &amp;quot;2&amp;quot;):wikitext(content)&lt;br /&gt;
		else&lt;br /&gt;
			group_row:tag(&amp;quot;th&amp;quot;):wikitext(group.name)&lt;br /&gt;
			group_row:tag(&amp;quot;td&amp;quot;):wikitext(content)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return navbox&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Module:Navbox&amp;diff=178</id>
		<title>Module:Navbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Module:Navbox&amp;diff=178"/>
		<updated>2021-01-18T03:42:59Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Debugging&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.navbox(frame)&lt;br /&gt;
	local title = frame.args.title&lt;br /&gt;
	if title == nil then&lt;br /&gt;
		error(&amp;quot;Missing title&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Assign group1, group2, etc to groups&lt;br /&gt;
	local groups = {}&lt;br /&gt;
	local i = 1&lt;br /&gt;
	while frame.args[&amp;quot;group&amp;quot; .. i] ~= nil do&lt;br /&gt;
		local group = {&lt;br /&gt;
			content = frame.args[&amp;quot;group&amp;quot; .. i],&lt;br /&gt;
			name = frame.args[&amp;quot;groupName&amp;quot; .. i] -- can be nil&lt;br /&gt;
		}&lt;br /&gt;
		table.insert(groups, group)&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return make_box(title, groups)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function make_box(title, groups)&lt;br /&gt;
	local navbox = mw.html.create(&amp;quot;table&amp;quot;):addClass(&amp;quot;navbox&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	-- Create title row&lt;br /&gt;
	local title_row = navbox:tag(&amp;quot;tr&amp;quot;):addClass(&amp;quot;title&amp;quot;)&lt;br /&gt;
	title_row:tag(&amp;quot;th&amp;quot;):attr(&amp;quot;colspan&amp;quot;, 2):wikitext(title)&lt;br /&gt;
&lt;br /&gt;
	-- Create row for each group&lt;br /&gt;
	for _, group in ipairs(groups) do&lt;br /&gt;
		local group_row = navbox:tag(&amp;quot;tr&amp;quot;):addClass(&amp;quot;group&amp;quot;)&lt;br /&gt;
		&lt;br /&gt;
		if group.name == nil then&lt;br /&gt;
			group_row:tag(&amp;quot;td&amp;quot;):attr(&amp;quot;colspan&amp;quot;, &amp;quot;2&amp;quot;):tag(&amp;quot;div&amp;quot;):wikitext(group.content)&lt;br /&gt;
		else&lt;br /&gt;
			group_row:tag(&amp;quot;th&amp;quot;):wikitext(group.name)&lt;br /&gt;
			group_row:tag(&amp;quot;td&amp;quot;):tag(&amp;quot;div&amp;quot;):wikitext(mw.text.nowiki(group.content))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return navbox&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Module:Navbox&amp;diff=177</id>
		<title>Module:Navbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Module:Navbox&amp;diff=177"/>
		<updated>2021-01-18T03:36:32Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Add div to see if it helps with MediaWiki list formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.navbox(frame)&lt;br /&gt;
	local title = frame.args.title&lt;br /&gt;
	if title == nil then&lt;br /&gt;
		error(&amp;quot;Missing title&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Assign group1, group2, etc to groups&lt;br /&gt;
	local groups = {}&lt;br /&gt;
	local i = 1&lt;br /&gt;
	while frame.args[&amp;quot;group&amp;quot; .. i] ~= nil do&lt;br /&gt;
		local group = {&lt;br /&gt;
			content = frame.args[&amp;quot;group&amp;quot; .. i],&lt;br /&gt;
			name = frame.args[&amp;quot;groupName&amp;quot; .. i] -- can be nil&lt;br /&gt;
		}&lt;br /&gt;
		table.insert(groups, group)&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return make_box(title, groups)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function make_box(title, groups)&lt;br /&gt;
	local navbox = mw.html.create(&amp;quot;table&amp;quot;):addClass(&amp;quot;navbox&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	-- Create title row&lt;br /&gt;
	local title_row = navbox:tag(&amp;quot;tr&amp;quot;):addClass(&amp;quot;title&amp;quot;)&lt;br /&gt;
	title_row:tag(&amp;quot;th&amp;quot;):attr(&amp;quot;colspan&amp;quot;, 2):wikitext(title)&lt;br /&gt;
&lt;br /&gt;
	-- Create row for each group&lt;br /&gt;
	for _, group in ipairs(groups) do&lt;br /&gt;
		local group_row = navbox:tag(&amp;quot;tr&amp;quot;):addClass(&amp;quot;group&amp;quot;)&lt;br /&gt;
		&lt;br /&gt;
		if group.name == nil then&lt;br /&gt;
			group_row:tag(&amp;quot;td&amp;quot;):attr(&amp;quot;colspan&amp;quot;, &amp;quot;2&amp;quot;):tag(&amp;quot;div&amp;quot;):wikitext(group.content)&lt;br /&gt;
		else&lt;br /&gt;
			group_row:tag(&amp;quot;th&amp;quot;):wikitext(group.name)&lt;br /&gt;
			group_row:tag(&amp;quot;td&amp;quot;):tag(&amp;quot;div&amp;quot;):wikitext(group.content)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return navbox&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Module:Navbox&amp;diff=176</id>
		<title>Module:Navbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Module:Navbox&amp;diff=176"/>
		<updated>2021-01-18T03:26:20Z</updated>

		<summary type="html">&lt;p&gt;Quantum: Forgot to add class=navbox to table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.navbox(frame)&lt;br /&gt;
	local title = frame.args.title&lt;br /&gt;
	if title == nil then&lt;br /&gt;
		error(&amp;quot;Missing title&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Assign group1, group2, etc to groups&lt;br /&gt;
	local groups = {}&lt;br /&gt;
	local i = 1&lt;br /&gt;
	while frame.args[&amp;quot;group&amp;quot; .. i] ~= nil do&lt;br /&gt;
		local group = {&lt;br /&gt;
			content = frame.args[&amp;quot;group&amp;quot; .. i],&lt;br /&gt;
			name = frame.args[&amp;quot;groupName&amp;quot; .. i] -- can be nil&lt;br /&gt;
		}&lt;br /&gt;
		table.insert(groups, group)&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return make_box(title, groups)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function make_box(title, groups)&lt;br /&gt;
	local navbox = mw.html.create(&amp;quot;table&amp;quot;):addClass(&amp;quot;navbox&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	-- Create title row&lt;br /&gt;
	local title_row = navbox:tag(&amp;quot;tr&amp;quot;):addClass(&amp;quot;title&amp;quot;)&lt;br /&gt;
	title_row:tag(&amp;quot;th&amp;quot;):attr(&amp;quot;colspan&amp;quot;, 2):wikitext(title)&lt;br /&gt;
&lt;br /&gt;
	-- Create row for each group&lt;br /&gt;
	for _, group in ipairs(groups) do&lt;br /&gt;
		local group_row = navbox:tag(&amp;quot;tr&amp;quot;):addClass(&amp;quot;group&amp;quot;)&lt;br /&gt;
		if group.name == nil then&lt;br /&gt;
			group_row:tag(&amp;quot;td&amp;quot;):attr(&amp;quot;colspan&amp;quot;, &amp;quot;2&amp;quot;):wikitext(group.content)&lt;br /&gt;
		else&lt;br /&gt;
			group_row:tag(&amp;quot;th&amp;quot;):wikitext(group.name)&lt;br /&gt;
			group_row:tag(&amp;quot;td&amp;quot;):wikitext(group.content)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return navbox&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Module:Navbox&amp;diff=175</id>
		<title>Module:Navbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Module:Navbox&amp;diff=175"/>
		<updated>2021-01-18T03:21:57Z</updated>

		<summary type="html">&lt;p&gt;Quantum: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.navbox(frame)&lt;br /&gt;
	local title = frame.args.title&lt;br /&gt;
	if title == nil then&lt;br /&gt;
		error(&amp;quot;Missing title&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Assign group1, group2, etc to groups&lt;br /&gt;
	local groups = {}&lt;br /&gt;
	local i = 1&lt;br /&gt;
	while frame.args[&amp;quot;group&amp;quot; .. i] ~= nil do&lt;br /&gt;
		local group = {&lt;br /&gt;
			content = frame.args[&amp;quot;group&amp;quot; .. i],&lt;br /&gt;
			name = frame.args[&amp;quot;groupName&amp;quot; .. i] -- can be nil&lt;br /&gt;
		}&lt;br /&gt;
		table.insert(groups, group)&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return make_box(title, groups)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function make_box(title, groups)&lt;br /&gt;
	local navbox = mw.html.create(&amp;quot;table&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	-- Create title row&lt;br /&gt;
	local title_row = navbox:tag(&amp;quot;tr&amp;quot;):addClass(&amp;quot;title&amp;quot;)&lt;br /&gt;
	title_row:tag(&amp;quot;th&amp;quot;):attr(&amp;quot;colspan&amp;quot;, 2):wikitext(title)&lt;br /&gt;
&lt;br /&gt;
	-- Create row for each group&lt;br /&gt;
	for _, group in ipairs(groups) do&lt;br /&gt;
		local group_row = navbox:tag(&amp;quot;tr&amp;quot;):addClass(&amp;quot;group&amp;quot;)&lt;br /&gt;
		if group.name == nil then&lt;br /&gt;
			group_row:tag(&amp;quot;td&amp;quot;):attr(&amp;quot;colspan&amp;quot;, &amp;quot;2&amp;quot;):wikitext(group.content)&lt;br /&gt;
		else&lt;br /&gt;
			group_row:tag(&amp;quot;th&amp;quot;):wikitext(group.name)&lt;br /&gt;
			group_row:tag(&amp;quot;td&amp;quot;):wikitext(group.content)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return navbox&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Quantum</name></author>
	</entry>
</feed>