<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://nethackwiki.com/index.php?action=history&amp;feed=atom&amp;title=NetHack_4_Network_Protocol</id>
	<title>NetHack 4 Network Protocol - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://nethackwiki.com/index.php?action=history&amp;feed=atom&amp;title=NetHack_4_Network_Protocol"/>
	<link rel="alternate" type="text/html" href="https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;action=history"/>
	<updated>2026-06-04T03:25:41Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.32.5</generator>
	<entry>
		<id>https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=181395&amp;oldid=prev</id>
		<title>Umbire the Phantom: typo</title>
		<link rel="alternate" type="text/html" href="https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=181395&amp;oldid=prev"/>
		<updated>2024-12-29T21:54:33Z</updated>

		<summary type="html">&lt;p&gt;typo&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 21:54, 29 December 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1239&quot; &gt;Line 1,239:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1,239:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* `int y`: the character's y coordinate&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* `int y`: the character's y coordinate&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* `int z`: the character's z coordinate&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* `int z`: the character's z coordinate&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{variant-343}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{variant-343}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Annotations]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Annotations]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Nethack &lt;/del&gt;4]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;NetHack &lt;/ins&gt;4]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wikihackdb:diff::1.12:old-181373:rev-181395 --&gt;
&lt;/table&gt;</summary>
		<author><name>Umbire the Phantom</name></author>
		
	</entry>
	<entry>
		<id>https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=181373&amp;oldid=prev</id>
		<title>Phol ende wodan: move to nethack 4 category instead of variants</title>
		<link rel="alternate" type="text/html" href="https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=181373&amp;oldid=prev"/>
		<updated>2024-12-29T15:30:50Z</updated>

		<summary type="html">&lt;p&gt;move to nethack 4 category instead of variants&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 15:30, 29 December 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1245&quot; &gt;Line 1,245:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1,245:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{variant-343}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{variant-343}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Annotations]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Annotations]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Variants&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Nethack 4&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Phol ende wodan</name></author>
		
	</entry>
	<entry>
		<id>https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=94526&amp;oldid=prev</id>
		<title>Elronnd: Update to latest</title>
		<link rel="alternate" type="text/html" href="https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=94526&amp;oldid=prev"/>
		<updated>2015-06-03T21:41:09Z</updated>

		<summary type="html">&lt;p&gt;Update to latest&lt;/p&gt;
&lt;a href=&quot;https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;amp;diff=94526&amp;amp;oldid=92807&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Elronnd</name></author>
		
	</entry>
	<entry>
		<id>https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=92807&amp;oldid=prev</id>
		<title>Ais523: wow this page is out of date; put a link to the auto-updating version for now</title>
		<link rel="alternate" type="text/html" href="https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=92807&amp;oldid=prev"/>
		<updated>2015-03-19T14:04:28Z</updated>

		<summary type="html">&lt;p&gt;wow this page is out of date; put a link to the auto-updating version for now&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 14:04, 19 March 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This is a description of the [[NetHack 4]] networking protocol.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This is a description of the [[NetHack 4]] networking protocol.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Note: This page tends to get out of date quickly. A much more up-to-date version can be found [http://trac.nethack4.org/browser/doc/server_protocol.txt here].&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The protocol is based on JSON. Each client command and each server response is a single, valid JSON object in UTF8 encoding.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The protocol is based on JSON. Each client command and each server response is a single, valid JSON object in UTF8 encoding.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ais523</name></author>
		
	</entry>
	<entry>
		<id>https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=82341&amp;oldid=prev</id>
		<title>Qalthos: Try to explain what get_drawing_info is for</title>
		<link rel="alternate" type="text/html" href="https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=82341&amp;oldid=prev"/>
		<updated>2013-01-19T19:05:05Z</updated>

		<summary type="html">&lt;p&gt;Try to explain what get_drawing_info is for&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 19:05, 19 January 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l119&quot; &gt;Line 119:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 119:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== get_drawing_info ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== get_drawing_info ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Arguments: none&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Arguments: none&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The purpose of this call is to get all of the possible combinations for displaying things.  Lists are 1-indexed and match up to the integer values returned in a &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt; element below.  For example, a cell with a monster value of 161 would be the monster in index 160 of &amp;lt;tt&amp;gt;monsters&amp;lt;/tt&amp;gt; in the &amp;lt;tt&amp;gt;get_drawing_info&amp;lt;/tt&amp;gt; response&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== get_drawing_info response ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== get_drawing_info response ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Qalthos</name></author>
		
	</entry>
	<entry>
		<id>https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=82337&amp;oldid=prev</id>
		<title>Qalthos: start_game missing mode argument</title>
		<link rel="alternate" type="text/html" href="https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=82337&amp;oldid=prev"/>
		<updated>2013-01-19T03:20:18Z</updated>

		<summary type="html">&lt;p&gt;start_game missing mode argument&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 03:20, 19 January 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l442&quot; &gt;Line 442:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 442:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''race''':  integer&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''race''':  integer&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''role''':  integer&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''role''':  integer&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* '''mode''':  gamemode&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== start_game response ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== start_game response ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Qalthos</name></author>
		
	</entry>
	<entry>
		<id>https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=80981&amp;oldid=prev</id>
		<title>99.239.147.0 at 01:41, 11 October 2012</title>
		<link rel="alternate" type="text/html" href="https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=80981&amp;oldid=prev"/>
		<updated>2012-10-11T01:41:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;amp;diff=80981&amp;amp;oldid=78553&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>99.239.147.0</name></author>
		
	</entry>
	<entry>
		<id>https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=78553&amp;oldid=prev</id>
		<title>TPGreyKnight: prompt placement hints being added in upcoming patch :-D</title>
		<link rel="alternate" type="text/html" href="https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=78553&amp;oldid=prev"/>
		<updated>2012-06-23T19:38:54Z</updated>

		<summary type="html">&lt;p&gt;prompt placement hints being added in upcoming patch :-D&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 19:38, 23 June 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l547&quot; &gt;Line 547:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 547:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** '''role''':  menurole&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** '''role''':  menurole&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** '''selected''':  boolean&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** '''selected''':  boolean&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* '''plhint''':  placementhint&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''title''':  string&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''title''':  string&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l572&quot; &gt;Line 572:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 573:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''icount''':  integer&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''icount''':  integer&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''items''':  list of objitem&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''items''':  list of objitem&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* '''plhint''':  placementhint&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''title''':  string&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''title''':  string&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l934&quot; &gt;Line 934:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 936:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[3]  OPTTYPE_STRING&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[3]  OPTTYPE_STRING&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[4]  OPTTYPE_AUTOPICKUP_RULES&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[4]  OPTTYPE_AUTOPICKUP_RULES&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== placementhint ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;an enumerated value:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*[0]  PLHINT_ANYWHERE;  The client can just stick this wherever it feels like.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*[1]  PLHINT_LEFT;  At the left of the map display&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*[2]  PLHINT_RIGHT;  At the right of the map display&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*[3]  PLHINT_URGENT;  A very important prompt of some sort.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*[4]  PLHINT_INFO;  An informational notice, rather than a &amp;quot;real&amp;quot; prompt.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*[5]  PLHINT_ONELINER;  A short prompt or somesuch.  Can probably be put on top of or inside the message pane if it exists.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*[6]  PLHINT_CONTAINER;  Similar to PLHINT_INVENTORY, but for things not actually in inventory (in case clients want to put those alongside)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*[7]  PLHINT_INVENTORY;  Probably placed on top of the inventory pane if it exists&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;These are hints about prompt positioning.  The exact interpretation is up to the client implementation.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>TPGreyKnight</name></author>
		
	</entry>
	<entry>
		<id>https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=78550&amp;oldid=prev</id>
		<title>TPGreyKnight: Created page with &quot;This is a description of the NetHack 4 networking protocol.  The protocol is based on JSON. Each client command and each server response is a single, valid JSON object in ...&quot;</title>
		<link rel="alternate" type="text/html" href="https://nethackwiki.com/index.php?title=NetHack_4_Network_Protocol&amp;diff=78550&amp;oldid=prev"/>
		<updated>2012-06-22T21:00:48Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;This is a description of the &lt;a href=&quot;/wiki/NetHack_4&quot; title=&quot;NetHack 4&quot;&gt;NetHack 4&lt;/a&gt; networking protocol.  The protocol is based on JSON. Each client command and each server response is a single, valid JSON object in ...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This is a description of the [[NetHack 4]] networking protocol.&lt;br /&gt;
&lt;br /&gt;
The protocol is based on JSON. Each client command and each server response is a single, valid JSON object in UTF8 encoding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Interaction ==&lt;br /&gt;
Once the client has connected to the server, it must send either an &amp;lt;tt&amp;gt;auth&amp;lt;/tt&amp;gt; or a &amp;lt;tt&amp;gt;register&amp;lt;/tt&amp;gt; command.  If the client sends a successful register command, a following &amp;lt;tt&amp;gt;auth&amp;lt;/tt&amp;gt; command is not necessary.  When the client is authenticated any other command may be sent to the server.&lt;br /&gt;
&lt;br /&gt;
Normal flow is driven by the client sending commands and receiving responses from the server.  Server responses can also carry an attached &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt; element with map updates (see later in this document).  Sometimes the server might need further information to complete a command; in this case a server request will be sent to the client, for which a response must be sent to the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Client commands ==&lt;br /&gt;
These commands are sent by the client, expecting a response from the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== auth ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''password''':  string&lt;br /&gt;
* '''reconnect''':  connid ''(optional)''&lt;br /&gt;
* '''username''':  string&lt;br /&gt;
&lt;br /&gt;
==== auth response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''connection''':  connid&lt;br /&gt;
* '''return''':  an enumerated value:&lt;br /&gt;
**[0]  NO_CONNECTION&lt;br /&gt;
**[1]  AUTH_FAILED_UNKNOWN_USER&lt;br /&gt;
**[2]  AUTH_FAILED_BAD_PASSWORD&lt;br /&gt;
**[3]  AUTH_SUCCESS_NEW&lt;br /&gt;
**[4]  AUTH_SUCCESS_RECONNECT&lt;br /&gt;
* '''version''':  simple array:  &lt;br /&gt;
**[0]  integer&lt;br /&gt;
**[1]  integer&lt;br /&gt;
**[2]  integer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== describe_pos ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''is_in''':  boolean&lt;br /&gt;
* '''x''':  coordinate&lt;br /&gt;
* '''y''':  coordinate&lt;br /&gt;
&lt;br /&gt;
==== describe_pos response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''bgdesc''':  string&lt;br /&gt;
* '''effectdesc''':  string&lt;br /&gt;
* '''in''':  boolean&lt;br /&gt;
* '''invisdesc''':  string&lt;br /&gt;
* '''mondesc''':  string&lt;br /&gt;
* '''objcount''':  integer&lt;br /&gt;
* '''objdesc''':  string&lt;br /&gt;
* '''trapdesc''':  string&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== exit_game ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''exit_type''':  an enumerated value:&lt;br /&gt;
**[0]  EXIT_REQUEST_SAVE&lt;br /&gt;
**[1]  EXIT_FORCE_SAVE&lt;br /&gt;
**[2]  EXIT_REQUEST_QUIT&lt;br /&gt;
**[3]  EXIT_FORCE_QUIT&lt;br /&gt;
**[4]  EXIT_PANIC&lt;br /&gt;
&lt;br /&gt;
==== exit_game response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''return''':  boolean&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== game_command ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''arg''':  &lt;br /&gt;
** '''argtype''':  integer&lt;br /&gt;
** '''d''':  direction ''(optional)''&lt;br /&gt;
** '''invlet''':  charcode ''(optional)''&lt;br /&gt;
** '''x''':  coordinate ''(optional)''&lt;br /&gt;
** '''y''':  coordinate ''(optional)''&lt;br /&gt;
* '''command''':  string&lt;br /&gt;
* '''count''':  integer&lt;br /&gt;
&lt;br /&gt;
The argtype parameter can be 2 (no arguments), 4 (directional argument), 8 (coordinate pair), 16 (inventory letter).&lt;br /&gt;
&lt;br /&gt;
==== game_command response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''return''':  an enumerated value:&lt;br /&gt;
**[0]  READY_FOR_INPUT&lt;br /&gt;
**[1]  MULTI_IN_PROGRESS&lt;br /&gt;
**[2]  OCCUPATION_IN_PROGRESS&lt;br /&gt;
**[3]  POST_ACTION_DELAY&lt;br /&gt;
**[4]  ERR_NO_INPUT_ALLOWED&lt;br /&gt;
**[5]  ERR_COMMAND_FORBIDDEN;  tried to alter the game state while viewing a replay&lt;br /&gt;
**[6]  GAME_OVER;  i.e. player died&lt;br /&gt;
**[7]  GAME_SAVED&lt;br /&gt;
**[8]  GAME_PANICKED;  something went wrong in libnethack and panic() was called&lt;br /&gt;
**[9]  ERR_FORCED_EXIT;  exit from the command loop was forced by a call to nh_exit_game&lt;br /&gt;
**[10]  ERR_GAME_NOT_RUNNING;  possibilities: the init sequence was incorrect and the game is not running YET or some api call other than nh_do_move caused a panic, which killed the game or an attempt was made to call nh_do_move after some other final status (&amp;gt;= GAME_OVER) was returned&lt;br /&gt;
&lt;br /&gt;
==== Type: direction ====&lt;br /&gt;
A datum of type &amp;quot;direction&amp;quot; has the following structure:&lt;br /&gt;
* '''direction''':  an enumerated value:&lt;br /&gt;
**[0]  DIR_W&lt;br /&gt;
**[1]  DIR_NW&lt;br /&gt;
**[2]  DIR_N&lt;br /&gt;
**[3]  DIR_NE&lt;br /&gt;
**[4]  DIR_E&lt;br /&gt;
**[5]  DIR_SE&lt;br /&gt;
**[6]  DIR_S&lt;br /&gt;
**[7]  DIR_SW&lt;br /&gt;
**[8]  DIR_UP&lt;br /&gt;
**[9]  DIR_DOWN&lt;br /&gt;
**[10]  DIR_SELF&lt;br /&gt;
**[-1]  DIR_NONE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== get_commands ===&lt;br /&gt;
Arguments: none&lt;br /&gt;
&lt;br /&gt;
==== get_commands response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''cmdlist''':  list of: &lt;br /&gt;
** '''alt''':  charcode&lt;br /&gt;
** '''def''':  charcode&lt;br /&gt;
** '''desc''':  string&lt;br /&gt;
** '''flags''':  bitflags&lt;br /&gt;
** '''name''':  string&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== get_drawing_info ===&lt;br /&gt;
Arguments: none&lt;br /&gt;
&lt;br /&gt;
==== get_drawing_info response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''bgelements''':  list of glyph&lt;br /&gt;
* '''effects''':  list of glyph&lt;br /&gt;
* '''explsyms''':  list of glyph&lt;br /&gt;
* '''expltypes''':  list of glyph&lt;br /&gt;
* '''feature_offset''':  integer&lt;br /&gt;
* '''invis''':  list of glyph&lt;br /&gt;
* '''monsters''':  list of glyph&lt;br /&gt;
* '''num_bgelements''':  integer&lt;br /&gt;
* '''num_effects''':  integer&lt;br /&gt;
* '''num_expltypes''':  integer&lt;br /&gt;
* '''num_monsters''':  integer&lt;br /&gt;
* '''num_objects''':  integer&lt;br /&gt;
* '''num_traps''':  integer&lt;br /&gt;
* '''num_warnings''':  integer&lt;br /&gt;
* '''num_zaptypes''':  integer&lt;br /&gt;
* '''objects''':  list of glyph&lt;br /&gt;
* '''swallowsyms''':  list of glyph&lt;br /&gt;
* '''traps''':  list of glyph&lt;br /&gt;
* '''warnings''':  list of glyph&lt;br /&gt;
* '''zapsyms''':  list of glyph&lt;br /&gt;
* '''zaptypes''':  list of glyph&lt;br /&gt;
&lt;br /&gt;
==== Type: glyph ====&lt;br /&gt;
A datum of type &amp;quot;glyph&amp;quot; has the following structure:&lt;br /&gt;
* '''glyph''':  simple array:  &lt;br /&gt;
**[0]  string ''(&amp;quot;name&amp;quot;)''&lt;br /&gt;
**[1]  charcode ''(&amp;quot;character&amp;quot;)''&lt;br /&gt;
**[2]  colourcode ''(&amp;quot;colour&amp;quot;)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== get_obj_commands ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''invlet''':  charcode&lt;br /&gt;
&lt;br /&gt;
==== get_obj_commands response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''cmdlist''':  list of: &lt;br /&gt;
** '''alt''':  charcode&lt;br /&gt;
** '''def''':  charcode&lt;br /&gt;
** '''desc''':  string&lt;br /&gt;
** '''flags''':  bitflags&lt;br /&gt;
** '''name''':  string&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== get_options ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''list''':  an enumerated value:&lt;br /&gt;
**[0]  CURRENT_BIRTH_OPTIONS&lt;br /&gt;
**[1]  ACTIVE_BIRTH_OPTIONS&lt;br /&gt;
**[2]  GAME_OPTIONS&lt;br /&gt;
&lt;br /&gt;
==== get_options response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''options''':  list of: &lt;br /&gt;
** '''desc''':  exactly one of:&lt;br /&gt;
**-  nil&lt;br /&gt;
**-  structure:&lt;br /&gt;
**** '''max''':  integer&lt;br /&gt;
**** '''min''':  integer&lt;br /&gt;
**-  list of string&lt;br /&gt;
**-  integer ''(&amp;quot;length&amp;quot;)''&lt;br /&gt;
**-  list of string&lt;br /&gt;
** '''helptxt''':  string&lt;br /&gt;
** '''name''':  string&lt;br /&gt;
** '''type''':  optiontype&lt;br /&gt;
** '''value''':  exactly one of:&lt;br /&gt;
**-  boolean&lt;br /&gt;
**-  integer&lt;br /&gt;
**-  enumerated&lt;br /&gt;
**-  string&lt;br /&gt;
**-  list of autopickuprule&lt;br /&gt;
&lt;br /&gt;
==== Type: autopickuprule ====&lt;br /&gt;
A datum of type &amp;quot;autopickuprule&amp;quot; has the following structure:&lt;br /&gt;
* '''autopickuprule''':  &lt;br /&gt;
** '''action''':  an enumerated value:&lt;br /&gt;
***[0]  AP_GRAB&lt;br /&gt;
***[1]  AP_LEAVE&lt;br /&gt;
** '''buc''':  buccode&lt;br /&gt;
** '''oclass''':  integer&lt;br /&gt;
** '''pattern''':  string&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== get_pl_prompt ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''align''':  integer&lt;br /&gt;
* '''gend''':  integer&lt;br /&gt;
* '''race''':  integer&lt;br /&gt;
* '''role''':  integer&lt;br /&gt;
&lt;br /&gt;
==== get_pl_prompt response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''prompt''':  string&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== get_roles ===&lt;br /&gt;
Arguments: none&lt;br /&gt;
&lt;br /&gt;
==== get_roles response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''alignnames''':  list of string&lt;br /&gt;
* '''def_align''':  integer&lt;br /&gt;
* '''def_gend''':  integer&lt;br /&gt;
* '''def_race''':  integer&lt;br /&gt;
* '''def_role''':  integer&lt;br /&gt;
* '''gendnames''':  list of string&lt;br /&gt;
* '''matrix''':  list of integer&lt;br /&gt;
* '''num_aligns''':  integer&lt;br /&gt;
* '''num_genders''':  integer&lt;br /&gt;
* '''num_races''':  integer&lt;br /&gt;
* '''num_roles''':  integer&lt;br /&gt;
* '''racenames''':  list of string&lt;br /&gt;
* '''rolenames_f''':  list of string&lt;br /&gt;
* '''rolenames_m''':  list of string&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== get_root_pl_prompt ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''align''':  integer&lt;br /&gt;
* '''gend''':  integer&lt;br /&gt;
* '''race''':  integer&lt;br /&gt;
* '''role''':  integer&lt;br /&gt;
&lt;br /&gt;
==== get_root_pl_prompt response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''prompt''':  string&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== get_topten ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''around''':  integer&lt;br /&gt;
* '''own''':  boolean&lt;br /&gt;
* '''player''':  string&lt;br /&gt;
* '''top''':  integer&lt;br /&gt;
&lt;br /&gt;
==== get_topten response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''msg''':  string&lt;br /&gt;
* '''toplist''':  &lt;br /&gt;
** '''birthdate''':  integer&lt;br /&gt;
** '''death''':  string&lt;br /&gt;
** '''deathdate''':  integer&lt;br /&gt;
** '''deaths''':  integer&lt;br /&gt;
** '''end_how''':  endclass&lt;br /&gt;
** '''entrytxt''':  string&lt;br /&gt;
** '''highlight''':  boolean&lt;br /&gt;
** '''hp''':  integer&lt;br /&gt;
** '''maxhp''':  integer&lt;br /&gt;
** '''maxlvl''':  integer&lt;br /&gt;
** '''moves''':  integer&lt;br /&gt;
** '''name''':  string&lt;br /&gt;
** '''patchlevel''':  integer&lt;br /&gt;
** '''plalign''':  string&lt;br /&gt;
** '''plgend''':  string&lt;br /&gt;
** '''plrace''':  string&lt;br /&gt;
** '''plrole''':  string&lt;br /&gt;
** '''points''':  integer&lt;br /&gt;
** '''rank''':  integer&lt;br /&gt;
** '''ver_major''':  integer&lt;br /&gt;
** '''ver_minor''':  integer&lt;br /&gt;
&lt;br /&gt;
==== Type: endclass ====&lt;br /&gt;
A datum of type &amp;quot;endclass&amp;quot; has the following structure:&lt;br /&gt;
* '''endclass''':  an enumerated value:&lt;br /&gt;
**[0]  DIED&lt;br /&gt;
**[1]  CHOKING&lt;br /&gt;
**[2]  POISONING&lt;br /&gt;
**[3]  STARVING&lt;br /&gt;
**[4]  DROWNING&lt;br /&gt;
**[5]  BURNING&lt;br /&gt;
**[6]  DISSOLVED&lt;br /&gt;
**[7]  CRUSHING&lt;br /&gt;
**[8]  STONING&lt;br /&gt;
**[9]  TURNED_SLIME&lt;br /&gt;
**[10]  GENOCIDED&lt;br /&gt;
**[11]  PANICKED&lt;br /&gt;
**[12]  TRICKED&lt;br /&gt;
**[13]  QUIT&lt;br /&gt;
**[14]  ESCAPED&lt;br /&gt;
**[15]  ASCENDED&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== list_games ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''completed''':  boolean&lt;br /&gt;
* '''limit''':  integer&lt;br /&gt;
* '''show_all''':  boolean&lt;br /&gt;
&lt;br /&gt;
==== list_games response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''games''':  list of: &lt;br /&gt;
** '''death''':  string ''(optional)''&lt;br /&gt;
** '''depth''':  integer ''(optional)''&lt;br /&gt;
** '''gameid''':  gameid&lt;br /&gt;
** '''has_amulet''':  boolean ''(optional)''&lt;br /&gt;
** '''level_desc''':  string ''(optional)''&lt;br /&gt;
** '''moves''':  integer ''(optional)''&lt;br /&gt;
** '''plalign''':  string&lt;br /&gt;
** '''playmode''':  gamemode&lt;br /&gt;
** '''plgend''':  string&lt;br /&gt;
** '''plname''':  string&lt;br /&gt;
** '''plrace''':  string&lt;br /&gt;
** '''plrole''':  string&lt;br /&gt;
** '''status''':  an enumerated value:&lt;br /&gt;
***[0]  LS_SAVED;  an ordinary save&lt;br /&gt;
***[1]  LS_DONE;  quit, died, ascended, etc&lt;br /&gt;
***[2]  LS_IN_PROGRESS;  this game is active in a different process&lt;br /&gt;
***[-1]  LS_INVALID;  not a nethack log/savegame&lt;br /&gt;
***[-2]  LS_CRASHED;  the game crashed (or was SIGKILLed)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== register ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''email''':  string ''(optional)''&lt;br /&gt;
* '''password''':  string&lt;br /&gt;
* '''username''':  string&lt;br /&gt;
&lt;br /&gt;
==== register response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''connection''':  connid&lt;br /&gt;
* '''return''':  an enumerated value:&lt;br /&gt;
**[0]  NO_CONNECTION&lt;br /&gt;
**[1]  AUTH_FAILED_UNKNOWN_USER&lt;br /&gt;
**[2]  AUTH_FAILED_BAD_PASSWORD&lt;br /&gt;
**[3]  AUTH_SUCCESS_NEW&lt;br /&gt;
**[4]  AUTH_SUCCESS_RECONNECT&lt;br /&gt;
* '''version''':  simple array:  &lt;br /&gt;
**[0]  integer&lt;br /&gt;
**[1]  integer&lt;br /&gt;
**[2]  integer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== restore_game ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''gameid''':  gameid&lt;br /&gt;
&lt;br /&gt;
==== restore_game response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''return''':  an enumerated value:&lt;br /&gt;
**[0]  GAME_RESTORED&lt;br /&gt;
**[1]  ERR_BAD_ARGS&lt;br /&gt;
**[2]  ERR_BAD_FILE;  file isn't a saved game&lt;br /&gt;
**[3]  ERR_GAME_OVER;  this is the log of a completed game, play cannot be resumed&lt;br /&gt;
**[4]  ERR_IN_PROGRESS;  this game is active in a different process&lt;br /&gt;
**[5]  ERR_RESTORE_FAILED;  restoring the saved game state did not succeed, maybe try replaying the log instead&lt;br /&gt;
**[6]  ERR_REPLAY_FAILED;  replaying the action log did not succeed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== set_email ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''email''':  string&lt;br /&gt;
&lt;br /&gt;
==== set_email response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''return''':  boolean&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== set_option ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''isstr''':  boolean&lt;br /&gt;
* '''name''':  string&lt;br /&gt;
* '''value''':  exactly one of:&lt;br /&gt;
*-  string&lt;br /&gt;
*-  integer&lt;br /&gt;
*-  list of autopickuprule&lt;br /&gt;
&lt;br /&gt;
==== set_option response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''option''':  &lt;br /&gt;
** '''desc''':  exactly one of:&lt;br /&gt;
**-  nil&lt;br /&gt;
**-  structure:&lt;br /&gt;
**** '''max''':  integer&lt;br /&gt;
**** '''min''':  integer&lt;br /&gt;
**-  list of string&lt;br /&gt;
**-  integer ''(&amp;quot;length&amp;quot;)''&lt;br /&gt;
**-  list of string&lt;br /&gt;
** '''helptxt''':  string&lt;br /&gt;
** '''name''':  string&lt;br /&gt;
** '''type''':  optiontype&lt;br /&gt;
** '''value''':  exactly one of:&lt;br /&gt;
**-  boolean&lt;br /&gt;
**-  integer&lt;br /&gt;
**-  enumerated&lt;br /&gt;
**-  string&lt;br /&gt;
**-  list of autopickuprule&lt;br /&gt;
* '''return''':  integer&lt;br /&gt;
&lt;br /&gt;
==== Type: optiontype ====&lt;br /&gt;
A datum of type &amp;quot;optiontype&amp;quot; has the following structure:&lt;br /&gt;
* '''optiontype''':  an enumerated value:&lt;br /&gt;
**[0]  OPTTYPE_BOOL&lt;br /&gt;
**[1]  OPTTYPE_INT&lt;br /&gt;
**[2]  OPTTYPE_ENUM&lt;br /&gt;
**[3]  OPTTYPE_STRING&lt;br /&gt;
**[4]  OPTTYPE_AUTOPICKUP_RULES&lt;br /&gt;
&lt;br /&gt;
==== Type: autopickuprule ====&lt;br /&gt;
A datum of type &amp;quot;autopickuprule&amp;quot; has the following structure:&lt;br /&gt;
* '''autopickuprule''':  &lt;br /&gt;
** '''action''':  an enumerated value:&lt;br /&gt;
***[0]  AP_GRAB&lt;br /&gt;
***[1]  AP_LEAVE&lt;br /&gt;
** '''buc''':  buccode&lt;br /&gt;
** '''oclass''':  integer&lt;br /&gt;
** '''pattern''':  string&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== set_password ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''password''':  string&lt;br /&gt;
&lt;br /&gt;
==== set_password response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''return''':  boolean&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== shutdown ===&lt;br /&gt;
Arguments: none&lt;br /&gt;
&lt;br /&gt;
==== shutdown response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''return''':  integer&lt;br /&gt;
&lt;br /&gt;
Always returns 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== start_game ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''alignment''':  integer&lt;br /&gt;
* '''gender''':  integer&lt;br /&gt;
* '''name''':  string&lt;br /&gt;
* '''race''':  integer&lt;br /&gt;
* '''role''':  integer&lt;br /&gt;
&lt;br /&gt;
==== start_game response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''gameid''':  gameid&lt;br /&gt;
* '''return''':  boolean&lt;br /&gt;
&lt;br /&gt;
Returns true if a game is successfully created.  A gameid of -1 also means failure, so check both.&lt;br /&gt;
&lt;br /&gt;
==== Type: gamemode ====&lt;br /&gt;
A datum of type &amp;quot;gamemode&amp;quot; has the following structure:&lt;br /&gt;
* '''gamemode''':  an enumerated value:&lt;br /&gt;
**[0]  MODE_NORMAL&lt;br /&gt;
**[1]  MODE_EXPLORE&lt;br /&gt;
**[2]  MODE_WIZARD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== view_finish ===&lt;br /&gt;
Arguments: none&lt;br /&gt;
&lt;br /&gt;
==== view_finish response ====&lt;br /&gt;
Arguments: none&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== view_start ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''gameid''':  gameid&lt;br /&gt;
&lt;br /&gt;
==== view_start response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''info''':  &lt;br /&gt;
** '''actions''':  integer&lt;br /&gt;
** '''max_actions''':  integer&lt;br /&gt;
** '''max_moves''':  integer&lt;br /&gt;
** '''moves''':  integer&lt;br /&gt;
** '''nextcmd''':  string&lt;br /&gt;
* '''return''':  boolean&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== view_step ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''action''':  an enumerated value:&lt;br /&gt;
**[0]  REPLAY_FORWARD&lt;br /&gt;
**[1]  REPLAY_BACKWARD&lt;br /&gt;
**[2]  REPLAY_GOTO&lt;br /&gt;
* '''count''':  integer&lt;br /&gt;
* '''info''':  &lt;br /&gt;
** '''actions''':  integer&lt;br /&gt;
** '''max_actions''':  integer&lt;br /&gt;
** '''max_moves''':  integer&lt;br /&gt;
** '''moves''':  integer&lt;br /&gt;
&lt;br /&gt;
==== view_step response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''info''':  &lt;br /&gt;
** '''actions''':  integer&lt;br /&gt;
** '''max_actions''':  integer&lt;br /&gt;
** '''max_moves''':  integer&lt;br /&gt;
** '''moves''':  integer&lt;br /&gt;
** '''nextcmd''':  string&lt;br /&gt;
* '''return''':  boolean&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Server requests ==&lt;br /&gt;
These requests are sent by the server, expecting a response from the client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== display_menu ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''how''':  an enumerated value:&lt;br /&gt;
**[0]  PICK_NONE&lt;br /&gt;
**[1]  PICK_ONE&lt;br /&gt;
**[2]  PICK_ANY&lt;br /&gt;
* '''icount''':  integer&lt;br /&gt;
* '''items''':  list of: &lt;br /&gt;
** '''accel''':  charcode&lt;br /&gt;
** '''caption''':  string&lt;br /&gt;
** '''group_accel''':  charcode&lt;br /&gt;
** '''id''':  integer&lt;br /&gt;
** '''role''':  menurole&lt;br /&gt;
** '''selected''':  boolean&lt;br /&gt;
* '''title''':  string&lt;br /&gt;
&lt;br /&gt;
==== display_menu response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''results''':  list of integer&lt;br /&gt;
* '''return''':  integer&lt;br /&gt;
&lt;br /&gt;
I think this returns the number of items selected, and their indices in the input list.&lt;br /&gt;
&lt;br /&gt;
==== Type: menurole ====&lt;br /&gt;
A datum of type &amp;quot;menurole&amp;quot; has the following structure:&lt;br /&gt;
* '''menurole''':  an enumerated value:&lt;br /&gt;
**[0]  MI_TEXT&lt;br /&gt;
**[1]  MI_NORMAL&lt;br /&gt;
**[2]  MI_HEADING&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== display_objects ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''how''':  an enumerated value:&lt;br /&gt;
**[0]  PICK_NONE&lt;br /&gt;
**[1]  PICK_ONE&lt;br /&gt;
**[2]  PICK_ANY&lt;br /&gt;
* '''icount''':  integer&lt;br /&gt;
* '''items''':  list of objitem&lt;br /&gt;
* '''title''':  string&lt;br /&gt;
&lt;br /&gt;
==== display_objects response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''pick_list''':  list of: &lt;br /&gt;
** '''count''':  integer&lt;br /&gt;
** '''id''':  integer&lt;br /&gt;
* '''return''':  integer&lt;br /&gt;
&lt;br /&gt;
I think this returns the number of objects selected.  The list is possibly their indices in the input list?  Plus a count, if partial stacks are taken.&lt;br /&gt;
&lt;br /&gt;
==== Type: objitem ====&lt;br /&gt;
A datum of type &amp;quot;objitem&amp;quot; has the following structure:&lt;br /&gt;
* '''objitem''':  simple array:  &lt;br /&gt;
**[0]  string ''(&amp;quot;caption&amp;quot;)''&lt;br /&gt;
**[1]  integer ''(&amp;quot;id&amp;quot;)''&lt;br /&gt;
**[2]  menurole ''(&amp;quot;role&amp;quot;)''&lt;br /&gt;
**[3]  integer ''(&amp;quot;count&amp;quot;)''&lt;br /&gt;
**[4]  integer ''(&amp;quot;otype&amp;quot;)''&lt;br /&gt;
**[5]  integer ''(&amp;quot;oclass&amp;quot;)''&lt;br /&gt;
**[6]  integer ''(&amp;quot;weight&amp;quot;)''&lt;br /&gt;
**[7]  buccode ''(&amp;quot;buc&amp;quot;)''&lt;br /&gt;
**[8]  charcode ''(&amp;quot;accel&amp;quot;)''&lt;br /&gt;
**[9]  charcode ''(&amp;quot;group_accel&amp;quot;)''&lt;br /&gt;
**[10]  boolean ''(&amp;quot;worn&amp;quot;)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== getdir ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''query''':  string&lt;br /&gt;
* '''restricted''':  boolean&lt;br /&gt;
&lt;br /&gt;
==== getdir response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''return''':  direction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== getline ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''query''':  string&lt;br /&gt;
&lt;br /&gt;
==== getline response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''line''':  string&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== getpos ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''force''':  boolean&lt;br /&gt;
* '''goal''':  string&lt;br /&gt;
* '''x''':  coordinate&lt;br /&gt;
* '''y''':  coordinate&lt;br /&gt;
&lt;br /&gt;
==== getpos response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''return''':  an enumerated value:&lt;br /&gt;
**[0]  SELECTED_DOT&lt;br /&gt;
**[1]  SELECTED_COMMA&lt;br /&gt;
**[2]  SELECTED_SEMICOLON&lt;br /&gt;
**[3]  SELECTED_COLON&lt;br /&gt;
**[-1]  ABORTED&lt;br /&gt;
* '''x''':  coordinate&lt;br /&gt;
* '''y''':  coordinate&lt;br /&gt;
&lt;br /&gt;
The return value depends on which key the user used to finish off the selection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== query_key ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''allow_count''':  boolean&lt;br /&gt;
* '''query''':  string&lt;br /&gt;
&lt;br /&gt;
==== query_key response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''count''':  integer&lt;br /&gt;
* '''return''':  charcode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== yn ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''def''':  charcode&lt;br /&gt;
* '''query''':  string&lt;br /&gt;
* '''set''':  string&lt;br /&gt;
&lt;br /&gt;
Since the set of values is a parameter, you can use this for other tiny prompts too.&lt;br /&gt;
&lt;br /&gt;
==== yn response ====&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''return''':  charcode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== server_error ===&lt;br /&gt;
Arguments:&lt;br /&gt;
* '''error''':  boolean&lt;br /&gt;
* '''message''':  string&lt;br /&gt;
&lt;br /&gt;
There is no expected response.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Display elements ==&lt;br /&gt;
Any message sent by the server, whether as a request or a response, might have a &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt; element attached, which specifies updates to the map.  The exceptions are &amp;lt;tt&amp;gt;auth&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;register&amp;lt;/tt&amp;gt;, which never carry map data.  The &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt; element is an array of elements to draw; each element can be one of the below types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== delay_output ===&lt;br /&gt;
Value:&lt;br /&gt;
* '''delay_output''':  nil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== display_buffer ===&lt;br /&gt;
Value:&lt;br /&gt;
* '''display_buffer''':  &lt;br /&gt;
** '''buf''':  string&lt;br /&gt;
** '''trymove''':  boolean&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== level_changed ===&lt;br /&gt;
Value:&lt;br /&gt;
* '''level_changed''':  an enumerated value:&lt;br /&gt;
**[0]  LDM_DEFAULT&lt;br /&gt;
**[1]  LDM_HELL&lt;br /&gt;
**[2]  LDM_QUEST&lt;br /&gt;
**[3]  LDM_MINES&lt;br /&gt;
**[4]  LDM_SOKOBAN&lt;br /&gt;
**[5]  LDM_ROGUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== list_items ===&lt;br /&gt;
Value:&lt;br /&gt;
* '''list_items''':  &lt;br /&gt;
** '''icount''':  integer&lt;br /&gt;
** '''invent''':  boolean&lt;br /&gt;
** '''items''':  list of objitem&lt;br /&gt;
&lt;br /&gt;
If the invent flag is on then this is a list of items in inventory; otherwise, a list of items on the floor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== outrip ===&lt;br /&gt;
Value:&lt;br /&gt;
* '''outrip''':  &lt;br /&gt;
** '''gold''':  integer&lt;br /&gt;
** '''how''':  endclass&lt;br /&gt;
** '''icount''':  integer&lt;br /&gt;
** '''items''':  list of: &lt;br /&gt;
*** '''accel''':  charcode&lt;br /&gt;
*** '''caption''':  string&lt;br /&gt;
*** '''group_accel''':  charcode&lt;br /&gt;
*** '''id''':  integer&lt;br /&gt;
*** '''role''':  menurole&lt;br /&gt;
*** '''selected''':  boolean&lt;br /&gt;
** '''killbuf''':  string&lt;br /&gt;
** '''name''':  string&lt;br /&gt;
** '''tombstone''':  boolean&lt;br /&gt;
** '''year''':  integer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pause ===&lt;br /&gt;
Value:&lt;br /&gt;
* '''pause''':  an enumerated value:&lt;br /&gt;
**[0]  P_MESSAGE&lt;br /&gt;
**[1]  P_MAP&lt;br /&gt;
&lt;br /&gt;
The value is the reason for pausing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== print_message ===&lt;br /&gt;
Value:&lt;br /&gt;
* '''print_message''':  &lt;br /&gt;
** '''msg''':  string&lt;br /&gt;
** '''turn''':  integer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== print_message_nonblocking ===&lt;br /&gt;
Value:&lt;br /&gt;
* '''print_message_nonblocking''':  &lt;br /&gt;
** '''msg''':  string&lt;br /&gt;
** '''turn''':  integer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== raw_print ===&lt;br /&gt;
Value:&lt;br /&gt;
* '''raw_print''':  string&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== update_screen ===&lt;br /&gt;
Value:&lt;br /&gt;
* '''update_screen''':  &lt;br /&gt;
** '''dbuf''':  mapdelta&lt;br /&gt;
** '''uv''':  coordinate&lt;br /&gt;
** '''ux''':  coordinate&lt;br /&gt;
&lt;br /&gt;
A map delta can be an integer 0 if nothing at all has changed.  Otherwise it is a list of column deltas.  A column delta of 0 means that column is empty, and 1 means it is unchanged since last time.  Otherwise a column delta is a list of cell deltas.  Again, 0 means empty, 1 means unchanged.  Otherwise the cell delta is a simple list, as below.&lt;br /&gt;
&lt;br /&gt;
==== Type: mapdeltacell ====&lt;br /&gt;
A datum of type &amp;quot;mapdeltacell&amp;quot; has the following structure:&lt;br /&gt;
* '''mapdeltacell''':  simple array:  &lt;br /&gt;
**[0]  integer ''(&amp;quot;effect&amp;quot;)''&lt;br /&gt;
**[1]  integer ''(&amp;quot;bg&amp;quot;)''&lt;br /&gt;
**[2]  integer ''(&amp;quot;trap&amp;quot;)''&lt;br /&gt;
**[3]  integer ''(&amp;quot;obj&amp;quot;)''&lt;br /&gt;
**[4]  integer ''(&amp;quot;obj_mn&amp;quot;)''&lt;br /&gt;
**[5]  integer ''(&amp;quot;mon&amp;quot;)''&lt;br /&gt;
**[6]  integer ''(&amp;quot;monflags&amp;quot;)''&lt;br /&gt;
**[7]  integer ''(&amp;quot;branding&amp;quot;)''&lt;br /&gt;
**[8]  integer ''(&amp;quot;invis&amp;quot;)''&lt;br /&gt;
**[9]  integer ''(&amp;quot;visible&amp;quot;)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== update_status ===&lt;br /&gt;
Value:&lt;br /&gt;
* '''update_status''':  &lt;br /&gt;
** '''ac''':  integer&lt;br /&gt;
** '''align''':  integer&lt;br /&gt;
** '''can_enhance''':  boolean&lt;br /&gt;
** '''ch''':  integer&lt;br /&gt;
** '''co''':  integer&lt;br /&gt;
** '''coinsym''':  charcode&lt;br /&gt;
** '''cur_monnum''':  integer&lt;br /&gt;
** '''dx''':  integer&lt;br /&gt;
** '''en''':  integer&lt;br /&gt;
** '''enmax''':  integer&lt;br /&gt;
** '''gold''':  integer&lt;br /&gt;
** '''hp''':  integer&lt;br /&gt;
** '''hpmax''':  integer&lt;br /&gt;
** '''in''':  integer&lt;br /&gt;
** '''level''':  integer&lt;br /&gt;
** '''level_desc''':  string&lt;br /&gt;
** '''max_rank_sz''':  integer&lt;br /&gt;
** '''monnum''':  integer&lt;br /&gt;
** '''moves''':  integer&lt;br /&gt;
** '''nr_items''':  integer&lt;br /&gt;
** '''plname''':  string&lt;br /&gt;
** '''rank''':  string&lt;br /&gt;
** '''score''':  integer&lt;br /&gt;
** '''st''':  integer&lt;br /&gt;
** '''st_extra''':  integer&lt;br /&gt;
** '''statusitems''':  list of string&lt;br /&gt;
** '''wi''':  integer&lt;br /&gt;
** '''x''':  coordinate&lt;br /&gt;
** '''xp''':  integer&lt;br /&gt;
** '''y''':  coordinate&lt;br /&gt;
** '''z''':  coordinate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Summary of selected types ==&lt;br /&gt;
Here are the structures of certain types mentioned above.  A few types are implemented as simple arrays rather than structures, for performance reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Assorted integral types ===&lt;br /&gt;
All of the following are really just integers with a false nose and moustache.&lt;br /&gt;
* All enumerated types&lt;br /&gt;
* bitflags&lt;br /&gt;
* boolean&lt;br /&gt;
* charcode&lt;br /&gt;
* connid&lt;br /&gt;
* coordinate&lt;br /&gt;
* gameid&lt;br /&gt;
&lt;br /&gt;
=== autopickuprule ===&lt;br /&gt;
structure:&lt;br /&gt;
* '''action''':  an enumerated value:&lt;br /&gt;
*[0]  AP_GRAB&lt;br /&gt;
*[1]  AP_LEAVE&lt;br /&gt;
* '''buc''':  buccode&lt;br /&gt;
* '''oclass''':  integer&lt;br /&gt;
* '''pattern''':  string&lt;br /&gt;
&lt;br /&gt;
=== buccode ===&lt;br /&gt;
an enumerated value:&lt;br /&gt;
*[0]  B_UNKNOWN&lt;br /&gt;
*[1]  B_BLESSED&lt;br /&gt;
*[2]  B_UNCURSED&lt;br /&gt;
*[3]  B_CURSED&lt;br /&gt;
*[4]  B_DONT_CARE;  used for pattern matching only&lt;br /&gt;
&lt;br /&gt;
=== direction ===&lt;br /&gt;
an enumerated value:&lt;br /&gt;
*[0]  DIR_W&lt;br /&gt;
*[1]  DIR_NW&lt;br /&gt;
*[2]  DIR_N&lt;br /&gt;
*[3]  DIR_NE&lt;br /&gt;
*[4]  DIR_E&lt;br /&gt;
*[5]  DIR_SE&lt;br /&gt;
*[6]  DIR_S&lt;br /&gt;
*[7]  DIR_SW&lt;br /&gt;
*[8]  DIR_UP&lt;br /&gt;
*[9]  DIR_DOWN&lt;br /&gt;
*[10]  DIR_SELF&lt;br /&gt;
*[-1]  DIR_NONE&lt;br /&gt;
&lt;br /&gt;
=== endclass ===&lt;br /&gt;
an enumerated value:&lt;br /&gt;
*[0]  DIED&lt;br /&gt;
*[1]  CHOKING&lt;br /&gt;
*[2]  POISONING&lt;br /&gt;
*[3]  STARVING&lt;br /&gt;
*[4]  DROWNING&lt;br /&gt;
*[5]  BURNING&lt;br /&gt;
*[6]  DISSOLVED&lt;br /&gt;
*[7]  CRUSHING&lt;br /&gt;
*[8]  STONING&lt;br /&gt;
*[9]  TURNED_SLIME&lt;br /&gt;
*[10]  GENOCIDED&lt;br /&gt;
*[11]  PANICKED&lt;br /&gt;
*[12]  TRICKED&lt;br /&gt;
*[13]  QUIT&lt;br /&gt;
*[14]  ESCAPED&lt;br /&gt;
*[15]  ASCENDED&lt;br /&gt;
&lt;br /&gt;
=== gamemode ===&lt;br /&gt;
an enumerated value:&lt;br /&gt;
*[0]  MODE_NORMAL&lt;br /&gt;
*[1]  MODE_EXPLORE&lt;br /&gt;
*[2]  MODE_WIZARD&lt;br /&gt;
&lt;br /&gt;
=== glyph ===&lt;br /&gt;
simple array:  &lt;br /&gt;
*[0]  string ''(&amp;quot;name&amp;quot;)''&lt;br /&gt;
*[1]  charcode ''(&amp;quot;character&amp;quot;)''&lt;br /&gt;
*[2]  colourcode ''(&amp;quot;colour&amp;quot;)''&lt;br /&gt;
&lt;br /&gt;
=== mapdeltacell ===&lt;br /&gt;
simple array:  &lt;br /&gt;
*[0]  integer ''(&amp;quot;effect&amp;quot;)''&lt;br /&gt;
*[1]  integer ''(&amp;quot;bg&amp;quot;)''&lt;br /&gt;
*[2]  integer ''(&amp;quot;trap&amp;quot;)''&lt;br /&gt;
*[3]  integer ''(&amp;quot;obj&amp;quot;)''&lt;br /&gt;
*[4]  integer ''(&amp;quot;obj_mn&amp;quot;)''&lt;br /&gt;
*[5]  integer ''(&amp;quot;mon&amp;quot;)''&lt;br /&gt;
*[6]  integer ''(&amp;quot;monflags&amp;quot;)''&lt;br /&gt;
*[7]  integer ''(&amp;quot;branding&amp;quot;)''&lt;br /&gt;
*[8]  integer ''(&amp;quot;invis&amp;quot;)''&lt;br /&gt;
*[9]  integer ''(&amp;quot;visible&amp;quot;)''&lt;br /&gt;
&lt;br /&gt;
=== menurole ===&lt;br /&gt;
an enumerated value:&lt;br /&gt;
*[0]  MI_TEXT&lt;br /&gt;
*[1]  MI_NORMAL&lt;br /&gt;
*[2]  MI_HEADING&lt;br /&gt;
&lt;br /&gt;
=== objitem ===&lt;br /&gt;
simple array:  &lt;br /&gt;
*[0]  string ''(&amp;quot;caption&amp;quot;)''&lt;br /&gt;
*[1]  integer ''(&amp;quot;id&amp;quot;)''&lt;br /&gt;
*[2]  menurole ''(&amp;quot;role&amp;quot;)''&lt;br /&gt;
*[3]  integer ''(&amp;quot;count&amp;quot;)''&lt;br /&gt;
*[4]  integer ''(&amp;quot;otype&amp;quot;)''&lt;br /&gt;
*[5]  integer ''(&amp;quot;oclass&amp;quot;)''&lt;br /&gt;
*[6]  integer ''(&amp;quot;weight&amp;quot;)''&lt;br /&gt;
*[7]  buccode ''(&amp;quot;buc&amp;quot;)''&lt;br /&gt;
*[8]  charcode ''(&amp;quot;accel&amp;quot;)''&lt;br /&gt;
*[9]  charcode ''(&amp;quot;group_accel&amp;quot;)''&lt;br /&gt;
*[10]  boolean ''(&amp;quot;worn&amp;quot;)''&lt;br /&gt;
&lt;br /&gt;
=== optiontype ===&lt;br /&gt;
an enumerated value:&lt;br /&gt;
*[0]  OPTTYPE_BOOL&lt;br /&gt;
*[1]  OPTTYPE_INT&lt;br /&gt;
*[2]  OPTTYPE_ENUM&lt;br /&gt;
*[3]  OPTTYPE_STRING&lt;br /&gt;
*[4]  OPTTYPE_AUTOPICKUP_RULES&lt;/div&gt;</summary>
		<author><name>TPGreyKnight</name></author>
		
	</entry>
</feed>