<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.eduke32.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LeoD</id>
	<title>EDukeWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.eduke32.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LeoD"/>
	<link rel="alternate" type="text/html" href="https://wiki.eduke32.com/wiki/Special:Contributions/LeoD"/>
	<updated>2026-04-24T20:58:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.0-alpha</generator>
	<entry>
		<id>https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=14414</id>
		<title>Maphack Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=14414"/>
		<updated>2021-10-26T13:51:11Z</updated>

		<summary type="html">&lt;p&gt;LeoD: Examples and Conventions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maphacks are used to edit the positioning of objects and other parts of a level in cases where the maps cannot be redistributed.&lt;br /&gt;
This only affects the visual representation through the renderer and does &#039;&#039;not&#039;&#039; change the actual gameplay.&lt;br /&gt;
Additional information may be found in  [http://svn.eduke32.com/duke3d_hrp/maphacks/MapHacks.txt MapHacks.txt].&lt;br /&gt;
&lt;br /&gt;
==sprite==&lt;br /&gt;
&#039;&#039;&#039;sprite&#039;&#039;&#039; &#039;&#039;spriteid&#039;&#039; &amp;lt;token&amp;gt; &amp;lt;nowiki&amp;gt;[value]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[angoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angleoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rotates the model (md3 or kvx) away from the starting angle of the sprite. A &#039;&#039;value&#039;&#039; of 2048 represents a full turn of 360 degrees. Practical &#039;&#039;values&#039;&#039; should be chosen between -1023 and 1024 (+- 180 degrees).&lt;br /&gt;
&lt;br /&gt;
===notmd===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd2&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Renders a tile as a texture (original ART tile or highres image if available) instead of a model (md3 or kvx). This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It is mostly used to &amp;quot;flatten&amp;quot; wall aligned or floor aligned decorative objects.&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no actual implementation for &#039;&#039;notmd2&#039;&#039; and &#039;&#039;notmd3&#039;&#039;. They are mapped to &#039;&#039;notmd&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===nomdanim===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomdanim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd2anim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd3anim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Freezes any model animation in place.  This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no actual implementation for &#039;&#039;nomd2anim&#039;&#039; and &#039;&#039;nomd3anim&#039;&#039;. They are mapped to &#039;&#039;nomdanim&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===away1===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite forwards by a small amount. This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It is mostly used to resolve flickering (&amp;quot;z-fighting&amp;quot;) of overlapping wall aligned sprites, which is especially prevalent when using the Polymer renderer.&lt;br /&gt;
&lt;br /&gt;
===away2===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite backwards by a small amount. This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It is mostly used to resolve flickering (&amp;quot;z-fighting&amp;quot;) of overlapping wall aligned sprites, which is especially prevalent when using the Polymer renderer.&lt;br /&gt;
&lt;br /&gt;
===[[pitch]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;pitch&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[pitch]]&#039;&#039;&#039;, i.e. bowing or falling backwards. Does not work in conjunction with &#039;&#039;&#039;notmd&#039;&#039;&#039;. Not yet implemented for kvx models.&amp;lt;br/&amp;gt;&lt;br /&gt;
A hackish method can be used to move the model forwards/backwards from clipping into a wall, by setting the sprite&#039;s &#039;&#039;&#039;mdzoff&#039;&#039;&#039; to a grossly high (or low negative) number (try 100000 for starters), and setting a &#039;&#039;&#039;pitch&#039;&#039;&#039; of 1.&lt;br /&gt;
&lt;br /&gt;
===[[roll]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;roll&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[roll]]&#039;&#039;&#039;, i.e. tilting to the side. Does not work in conjunction with &#039;&#039;&#039;notmd&#039;&#039;&#039;. Not yet implemented for kvx models.&lt;br /&gt;
&lt;br /&gt;
===[[mdxoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdxoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;x&#039;&#039;&#039; coordinate of the model&#039;s centerpoint,(upwards/downwards in 3D view) to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdyoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdyoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;y&#039;&#039;&#039; coordinate of the model&#039;s centerpoint (upwards/downwards in 3D view), to be used in conjunction with &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdzoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdzoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;z&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; (forwards/backwards) and/or &#039;&#039;&#039;roll&#039;&#039;&#039; (right/left).&amp;lt;br/&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039; &#039;&#039;value&#039;&#039; can be used as scaling factors. With &#039;&#039;&#039;pitch 1&#039;&#039;&#039; and &#039;&#039;&#039;roll -2&#039;&#039;&#039;, for example, the model is moved twice as far to the left as it gets moved forwards. Depending on the object&#039;s size, &#039;&#039;&#039;pitch&#039;&#039;&#039;/&#039;&#039;&#039;roll&#039;&#039;&#039; &#039;&#039;values&#039;&#039; above 4-8 may result in undesired visible rotation.&amp;lt;br/&amp;gt;&lt;br /&gt;
Be aware that the same &#039;&#039;value&#039;&#039; will result in 1/16 the translation for &#039;&#039;&#039;mdzoff&#039;&#039;&#039; compared to &#039;&#039;&#039;mdxoff&#039;&#039;&#039; and &#039;&#039;&#039;mdyoff&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===mdposxoff===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdposxoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ported from NBlood. In Mapster32&#039;s 2D view the &#039;&#039;&#039;x&#039;&#039;&#039; coordinate of the model&#039;s centerpoint is moved to the right/eastwards/angle 0. (The default placement lets sprites face northwards/angle 1536.)&amp;lt;br/&amp;gt;&lt;br /&gt;
This is quite different from the way (&#039;&#039;pitch/roll + md[x|y|z]off&#039;&#039;) works. Do not confuse.&lt;br /&gt;
&lt;br /&gt;
===mdposyoff===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdposyoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ported from NBlood. In Mapster32&#039;s 2D view the &#039;&#039;&#039;y&#039;&#039;&#039; coordinate of the model&#039;s centerpoint is moved to down/southwards/angle 512. (The default placement lets sprites face northwards/angle 1536.)&amp;lt;br/&amp;gt;&lt;br /&gt;
This is quite different from the way (&#039;&#039;pitch/roll + md[x|y|z]off&#039;&#039;) works. Do not confuse.&lt;br /&gt;
&lt;br /&gt;
===mdposzoff===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdposzoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ported from NBlood. In Mapster32&#039;s 2D view the &#039;&#039;&#039;z&#039;&#039;&#039; coordinate of the model&#039;s centerpoint is moved forwards to the viewer (upwards in 3D view).&amp;lt;br/&amp;gt;&lt;br /&gt;
This is roughly equivalent to the way (&#039;&#039;pitch + mdxoff&#039;&#039;) or (&#039;&#039;roll + mdyoff&#039;&#039;) work, respectively.&lt;br /&gt;
&lt;br /&gt;
===mhkreset===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mhkreset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This development helper resets all previous maphacks for a sprite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==light==&lt;br /&gt;
&#039;&#039;&#039;light&#039;&#039;&#039; &#039;&#039;sector&#039;&#039; &#039;&#039;x&#039;&#039; &#039;&#039;y&#039;&#039; &#039;&#039;z&#039;&#039; &#039;&#039;range&#039;&#039; &#039;&#039;r&#039;&#039; &#039;&#039;g&#039;&#039; &#039;&#039;b&#039;&#039; &#039;&#039;radius&#039;&#039; &#039;&#039;faderadius&#039;&#039; &#039;&#039;angle&#039;&#039; &#039;&#039;horiz&#039;&#039; &#039;&#039;minshade&#039;&#039; &#039;&#039;maxshade&#039;&#039; &#039;&#039;priority&#039;&#039; &#039;&#039;tilenum&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Displays a spotlight using the &#039;&#039;&#039;Polymer&#039;&#039;&#039; renderer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Examples==&lt;br /&gt;
This is a definition file (*.def) to declare available maphack (*.mhk) files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// This is a comment line.&lt;br /&gt;
mapinfo {&lt;br /&gt;
  maptitle &amp;quot;Hollywood Holocaust&amp;quot;&lt;br /&gt;
  //author &amp;quot;Allen H. Blum III&amp;quot;&lt;br /&gt;
  mapfile  &amp;quot;E1L1.map&amp;quot;&lt;br /&gt;
  mapmd4   a1ce0037911b2625781a2623588c8b90 // 1996-12-11 (Atomic GRP)&lt;br /&gt;
  mhkfile  &amp;quot;maphacks/3drealms/E1L1.mhk&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
/*&lt;br /&gt;
This is a multi-line comment.&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;There is no &#039;&#039;&#039;author&#039;&#039;&#039; token yet, and no actual implementation of &#039;&#039;&#039;maptitle&#039;&#039;&#039;.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example maphack file (*.mhk): header and a couple of actual maphack lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Maphacks for the Duke Nukem 3D High Resolution Pack (HRP)&lt;br /&gt;
&lt;br /&gt;
// Title    : Hollywood Holocaust&lt;br /&gt;
// Author   : Allen H. Blum III&lt;br /&gt;
// Filename : E1L1.MAP&lt;br /&gt;
// mapmd4   : a1ce0037911b2625781a2623588c8b90 // 1996-12-11 (Atomic GRP)&lt;br /&gt;
&lt;br /&gt;
// Curr. HRP: r5.4.726&lt;br /&gt;
&lt;br /&gt;
sprite    79 angoff     1024       // tile0026 heavyhbomb (multiplayer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conventions==&lt;br /&gt;
Over the years of maphacking a couple of conventions have been established which you should follow.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Order of tokens, if (as far as applicable) combined:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sprite     1 notmd&lt;br /&gt;
sprite     1 away1&lt;br /&gt;
sprite     1 away2&lt;br /&gt;
sprite     1 nomdanim&lt;br /&gt;
sprite     1 angoff     512    // rotate right&lt;br /&gt;
&lt;br /&gt;
//sprite     0 pitch     -512    // tilt backwards&lt;br /&gt;
//sprite     0 roll       512    // tilt right&lt;br /&gt;
sprite     1 pitch     -1      // small value when only moving (backwards)&lt;br /&gt;
sprite     1 roll       2      // factor 2 for mdyoff (up), mdzoff (right)&lt;br /&gt;
sprite     1 mdxoff    -30000  // moves up, actually (pitch -1)&lt;br /&gt;
sprite     1 mdyoff     30000&lt;br /&gt;
sprite     1 mdzoff     480000&lt;br /&gt;
&lt;br /&gt;
// Do NOT mix (pitch,roll,md&amp;lt;x|y|z&amp;gt;off) with mdpos&amp;lt;x|y|z&amp;gt;off !&lt;br /&gt;
sprite 16383 mdposxoff  1024     // 32.0 // eastwards  in 2D view&lt;br /&gt;
sprite 16383 mdposyoff  1024     // 32.0 // southwards in 2D view&lt;br /&gt;
sprite 16383 mdposzoff -16384    // 32.0 // downwards  in 3D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More on this to come soon...&lt;/div&gt;</summary>
		<author><name>LeoD</name></author>
	</entry>
	<entry>
		<id>https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=14413</id>
		<title>Maphack Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=14413"/>
		<updated>2021-10-26T13:49:26Z</updated>

		<summary type="html">&lt;p&gt;LeoD: Undo revision 14412 by LeoD (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maphacks are used to edit the positioning of objects and other parts of a level in cases where the maps cannot be redistributed.&lt;br /&gt;
This only affects the visual representation through the renderer and does &#039;&#039;not&#039;&#039; change the actual gameplay.&lt;br /&gt;
Additional information may be found in  [http://svn.eduke32.com/duke3d_hrp/maphacks/MapHacks.txt MapHacks.txt].&lt;br /&gt;
&lt;br /&gt;
==sprite==&lt;br /&gt;
&#039;&#039;&#039;sprite&#039;&#039;&#039; &#039;&#039;spriteid&#039;&#039; &amp;lt;token&amp;gt; &amp;lt;nowiki&amp;gt;[value]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[angoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angleoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rotates the model (md3 or kvx) away from the starting angle of the sprite. A &#039;&#039;value&#039;&#039; of 2048 represents a full turn of 360 degrees. Practical &#039;&#039;values&#039;&#039; should be chosen between -1023 and 1024 (+- 180 degrees).&lt;br /&gt;
&lt;br /&gt;
===notmd===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd2&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Renders a tile as a texture (original ART tile or highres image if available) instead of a model (md3 or kvx). This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It is mostly used to &amp;quot;flatten&amp;quot; wall aligned or floor aligned decorative objects.&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no actual implementation for &#039;&#039;notmd2&#039;&#039; and &#039;&#039;notmd3&#039;&#039;. They are mapped to &#039;&#039;notmd&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===nomdanim===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomdanim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd2anim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd3anim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Freezes any model animation in place.  This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no actual implementation for &#039;&#039;nomd2anim&#039;&#039; and &#039;&#039;nomd3anim&#039;&#039;. They are mapped to &#039;&#039;nomdanim&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===away1===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite forwards by a small amount. This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It is mostly used to resolve flickering (&amp;quot;z-fighting&amp;quot;) of overlapping wall aligned sprites, which is especially prevalent when using the Polymer renderer.&lt;br /&gt;
&lt;br /&gt;
===away2===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite backwards by a small amount. This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It is mostly used to resolve flickering (&amp;quot;z-fighting&amp;quot;) of overlapping wall aligned sprites, which is especially prevalent when using the Polymer renderer.&lt;br /&gt;
&lt;br /&gt;
===[[pitch]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;pitch&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[pitch]]&#039;&#039;&#039;, i.e. bowing or falling backwards. Not yet implemented for kvx models.&amp;lt;br/&amp;gt;&lt;br /&gt;
A hackish method can be used to move the model forwards/backwards from clipping into a wall, by setting the sprite&#039;s &#039;&#039;&#039;mdzoff&#039;&#039;&#039; to a grossly high (or low negative) number (try 100000 for starters), and setting a &#039;&#039;&#039;pitch&#039;&#039;&#039; of 1.&lt;br /&gt;
&lt;br /&gt;
===[[roll]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;roll&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[roll]]&#039;&#039;&#039;, i.e. tilting to the side. Not yet implemented for kvx models.&lt;br /&gt;
&lt;br /&gt;
===[[mdxoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdxoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;x&#039;&#039;&#039; coordinate of the model&#039;s centerpoint,(upwards/downwards in 3D view) to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdyoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdyoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;y&#039;&#039;&#039; coordinate of the model&#039;s centerpoint (upwards/downwards in 3D view), to be used in conjunction with &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdzoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdzoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;z&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; (forwards/backwards) and/or &#039;&#039;&#039;roll&#039;&#039;&#039; (right/left).&amp;lt;br/&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039; values can be used as scaling factors. With &#039;&#039;&#039;pitch 1&#039;&#039;&#039; and &#039;&#039;&#039;roll -2&#039;&#039;&#039;, for example, the model is moved twice as far to the left as it gets moved forwards.&amp;lt;br/&amp;gt;&lt;br /&gt;
Be aware that the same &#039;&#039;value&#039;&#039; will result in 1/16 the translation for &#039;&#039;&#039;mdzoff&#039;&#039;&#039; compared to &#039;&#039;&#039;mdxoff&#039;&#039;&#039; and &#039;&#039;&#039;mdyoff&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===mdposxoff===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdposxoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ported from NBlood. In Mapster32&#039;s 2D view the &#039;&#039;&#039;x&#039;&#039;&#039; coordinate of the model&#039;s centerpoint is moved to the right/eastwards/angle 0. (The default placement lets sprites face northwards/angle 1536.)&amp;lt;br/&amp;gt;&lt;br /&gt;
This is quite different from the way &#039;&#039;pitch/roll + md[x|y|z]off&#039;&#039; works. Do not confuse.&lt;br /&gt;
&lt;br /&gt;
===mdposyoff===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdposyoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ported from NBlood. In Mapster32&#039;s 2D view the &#039;&#039;&#039;y&#039;&#039;&#039; coordinate of the model&#039;s centerpoint is moved to down/southwards/angle 512. (The default placement lets sprites face northwards/angle 1536.)&amp;lt;br/&amp;gt;&lt;br /&gt;
This is quite different from the way &#039;&#039;pitch/roll + md[x|y|z]off&#039;&#039; works. Do not confuse.&lt;br /&gt;
&lt;br /&gt;
===mdposzoff===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdposzoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ported from NBlood. In Mapster32&#039;s 2D view the &#039;&#039;&#039;z&#039;&#039;&#039; coordinate of the model&#039;s centerpoint is moved forwards to the viewer (upwards in 3D view).&amp;lt;br/&amp;gt;&lt;br /&gt;
This is roughly equivalent to the way (&#039;&#039;pitch + mdxoff&#039;&#039;) or (&#039;&#039;roll + mdyoff&#039;&#039;) work, respectively.&lt;br /&gt;
&lt;br /&gt;
===mhkreset===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mhkreset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This development helper resets all previous maphacks for a sprite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==light==&lt;br /&gt;
&#039;&#039;&#039;light&#039;&#039;&#039; &#039;&#039;sector&#039;&#039; &#039;&#039;x&#039;&#039; &#039;&#039;y&#039;&#039; &#039;&#039;z&#039;&#039; &#039;&#039;range&#039;&#039; &#039;&#039;r&#039;&#039; &#039;&#039;g&#039;&#039; &#039;&#039;b&#039;&#039; &#039;&#039;radius&#039;&#039; &#039;&#039;faderadius&#039;&#039; &#039;&#039;angle&#039;&#039; &#039;&#039;horiz&#039;&#039; &#039;&#039;minshade&#039;&#039; &#039;&#039;maxshade&#039;&#039; &#039;&#039;priority&#039;&#039; &#039;&#039;tilenum&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Displays a spotlight using the &#039;&#039;&#039;Polymer&#039;&#039;&#039; renderer.&lt;/div&gt;</summary>
		<author><name>LeoD</name></author>
	</entry>
	<entry>
		<id>https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=14412</id>
		<title>Maphack Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=14412"/>
		<updated>2021-10-26T13:45:43Z</updated>

		<summary type="html">&lt;p&gt;LeoD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maphacks are used to edit the positioning of objects and other parts of a level in cases where the maps cannot be redistributed.&lt;br /&gt;
This only affects the visual representation through the renderer and does &#039;&#039;not&#039;&#039; change the actual gameplay.&lt;br /&gt;
Additional information may be found in  [http://svn.eduke32.com/duke3d_hrp/maphacks/MapHacks.txt MapHacks.txt].&lt;br /&gt;
&lt;br /&gt;
==sprite==&lt;br /&gt;
&#039;&#039;&#039;sprite&#039;&#039;&#039; &#039;&#039;spriteid&#039;&#039; &amp;lt;token&amp;gt; &amp;lt;nowiki&amp;gt;[value]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[angoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angleoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rotates the model (md3 or kvx) away from the starting angle of the sprite. A &#039;&#039;value&#039;&#039; of 2048 represents a full turn of 360 degrees. Practical &#039;&#039;values&#039;&#039; should be chosen between -1023 and 1024 (+- 180 degrees).&lt;br /&gt;
&lt;br /&gt;
===notmd===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd2&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Renders a tile as a texture (original ART tile or highres image if available) instead of a model (md3 or kvx). This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It is mostly used to &amp;quot;flatten&amp;quot; wall aligned or floor aligned decorative objects.&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no actual implementation for &#039;&#039;notmd2&#039;&#039; and &#039;&#039;notmd3&#039;&#039;. They are mapped to &#039;&#039;notmd&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===nomdanim===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomdanim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd2anim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd3anim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Freezes any model animation in place.  This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no actual implementation for &#039;&#039;nomd2anim&#039;&#039; and &#039;&#039;nomd3anim&#039;&#039;. They are mapped to &#039;&#039;nomdanim&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===away1===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite forwards by a small amount. This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It is mostly used to resolve flickering (&amp;quot;z-fighting&amp;quot;) of overlapping wall aligned sprites, which is especially prevalent when using the Polymer renderer.&lt;br /&gt;
&lt;br /&gt;
===away2===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite backwards by a small amount. This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It is mostly used to resolve flickering (&amp;quot;z-fighting&amp;quot;) of overlapping wall aligned sprites, which is especially prevalent when using the Polymer renderer.&lt;br /&gt;
&lt;br /&gt;
===[[pitch]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;pitch&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[pitch]]&#039;&#039;&#039;, i.e. bowing or falling backwards. Does not work in conjunction with &#039;&#039;&#039;notmd&#039;&#039;&#039;. Not yet implemented for kvx models.&amp;lt;br/&amp;gt;&lt;br /&gt;
A hackish method can be used to move the model forwards/backwards from clipping into a wall, by setting the sprite&#039;s &#039;&#039;&#039;mdzoff&#039;&#039;&#039; to a grossly high (or low negative) number (try 100000 for starters), and setting a &#039;&#039;&#039;pitch&#039;&#039;&#039; of 1.&lt;br /&gt;
&lt;br /&gt;
===[[roll]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;roll&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[roll]]&#039;&#039;&#039;, i.e. tilting to the side. Does not work in conjunction with &#039;&#039;&#039;notmd&#039;&#039;&#039;. Not yet implemented for kvx models.&lt;br /&gt;
&lt;br /&gt;
===[[mdxoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdxoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;x&#039;&#039;&#039; coordinate of the model&#039;s centerpoint,(upwards/downwards in 3D view) to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdyoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdyoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;y&#039;&#039;&#039; coordinate of the model&#039;s centerpoint (upwards/downwards in 3D view), to be used in conjunction with &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdzoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdzoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;z&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; (forwards/backwards) and/or &#039;&#039;&#039;roll&#039;&#039;&#039; (right/left).&amp;lt;br/&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039; &#039;&#039;value&#039;&#039; can be used as scaling factors. With &#039;&#039;&#039;pitch 1&#039;&#039;&#039; and &#039;&#039;&#039;roll -2&#039;&#039;&#039;, for example, the model is moved twice as far to the left as it gets moved forwards. Depending on the object&#039;s size, &#039;&#039;&#039;pitch&#039;&#039;&#039;/&#039;&#039;&#039;roll&#039;&#039;&#039; &#039;&#039;values&#039;&#039; above 4-8 may result in undesired visible rotation.&amp;lt;br/&amp;gt;&lt;br /&gt;
Be aware that the same &#039;&#039;value&#039;&#039; will result in 1/16 the translation for &#039;&#039;&#039;mdzoff&#039;&#039;&#039; compared to &#039;&#039;&#039;mdxoff&#039;&#039;&#039; and &#039;&#039;&#039;mdyoff&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===mdposxoff===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdposxoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ported from NBlood. In Mapster32&#039;s 2D view the &#039;&#039;&#039;x&#039;&#039;&#039; coordinate of the model&#039;s centerpoint is moved to the right/eastwards/angle 0. (The default placement lets sprites face northwards/angle 1536.)&amp;lt;br/&amp;gt;&lt;br /&gt;
This is quite different from the way (&#039;&#039;pitch/roll + md[x|y|z]off&#039;&#039;) works. Do not confuse.&lt;br /&gt;
&lt;br /&gt;
===mdposyoff===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdposyoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ported from NBlood. In Mapster32&#039;s 2D view the &#039;&#039;&#039;y&#039;&#039;&#039; coordinate of the model&#039;s centerpoint is moved to down/southwards/angle 512. (The default placement lets sprites face northwards/angle 1536.)&amp;lt;br/&amp;gt;&lt;br /&gt;
This is quite different from the way (&#039;&#039;pitch/roll + md[x|y|z]off&#039;&#039;) works. Do not confuse.&lt;br /&gt;
&lt;br /&gt;
===mdposzoff===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdposzoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ported from NBlood. In Mapster32&#039;s 2D view the &#039;&#039;&#039;z&#039;&#039;&#039; coordinate of the model&#039;s centerpoint is moved forwards to the viewer (upwards in 3D view).&amp;lt;br/&amp;gt;&lt;br /&gt;
This is roughly equivalent to the way (&#039;&#039;pitch + mdxoff&#039;&#039;) or (&#039;&#039;roll + mdyoff&#039;&#039;) work, respectively.&lt;br /&gt;
&lt;br /&gt;
===mhkreset===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mhkreset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This development helper resets all previous maphacks for a sprite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==light==&lt;br /&gt;
&#039;&#039;&#039;light&#039;&#039;&#039; &#039;&#039;sector&#039;&#039; &#039;&#039;x&#039;&#039; &#039;&#039;y&#039;&#039; &#039;&#039;z&#039;&#039; &#039;&#039;range&#039;&#039; &#039;&#039;r&#039;&#039; &#039;&#039;g&#039;&#039; &#039;&#039;b&#039;&#039; &#039;&#039;radius&#039;&#039; &#039;&#039;faderadius&#039;&#039; &#039;&#039;angle&#039;&#039; &#039;&#039;horiz&#039;&#039; &#039;&#039;minshade&#039;&#039; &#039;&#039;maxshade&#039;&#039; &#039;&#039;priority&#039;&#039; &#039;&#039;tilenum&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Displays a spotlight using the &#039;&#039;&#039;Polymer&#039;&#039;&#039; renderer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Examples==&lt;br /&gt;
This is a definition file (*.def) to declare available maphack (*.mhk) files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// This is a comment line.&lt;br /&gt;
mapinfo {&lt;br /&gt;
  maptitle &amp;quot;Hollywood Holocaust&amp;quot;&lt;br /&gt;
  //author &amp;quot;Allen H. Blum III&amp;quot;&lt;br /&gt;
  mapfile  &amp;quot;E1L1.map&amp;quot;&lt;br /&gt;
  mapmd4   a1ce0037911b2625781a2623588c8b90 // 1996-12-11 (Atomic GRP)&lt;br /&gt;
  mhkfile  &amp;quot;maphacks/3drealms/E1L1.mhk&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
/*&lt;br /&gt;
This is a multi-line comment.&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;There is no &#039;&#039;&#039;author&#039;&#039;&#039; token yet, and no actual implementation of &#039;&#039;&#039;maptitle&#039;&#039;&#039;.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example maphack file (*.mhk): header and a couple of actual maphack lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Maphacks for the Duke Nukem 3D High Resolution Pack (HRP)&lt;br /&gt;
&lt;br /&gt;
// Title    : Hollywood Holocaust&lt;br /&gt;
// Author   : Allen H. Blum III&lt;br /&gt;
// Filename : E1L1.MAP&lt;br /&gt;
// mapmd4   : a1ce0037911b2625781a2623588c8b90 // 1996-12-11 (Atomic GRP)&lt;br /&gt;
&lt;br /&gt;
// Curr. HRP: r5.4.726&lt;br /&gt;
&lt;br /&gt;
sprite    79 angoff     1024       // tile0026 heavyhbomb (multiplayer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conventions==&lt;br /&gt;
Over the years of maphacking a couple of conventions have been established which you should follow.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Order of tokens, if (as far as applicable) combined:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sprite     1 notmd&lt;br /&gt;
sprite     1 away1&lt;br /&gt;
sprite     1 away2&lt;br /&gt;
sprite     1 nomdanim&lt;br /&gt;
sprite     1 angoff     512    // rotate right&lt;br /&gt;
&lt;br /&gt;
//sprite     0 pitch     -512    // tilt backwards&lt;br /&gt;
//sprite     0 roll       512    // tilt right&lt;br /&gt;
sprite     1 pitch     -1      // small value when only moving (backwards)&lt;br /&gt;
sprite     1 roll       2      // factor 2 for mdyoff (up), mdzoff (right)&lt;br /&gt;
sprite     1 mdxoff    -30000  // moves up, actually (pitch -1)&lt;br /&gt;
sprite     1 mdyoff     30000&lt;br /&gt;
sprite     1 mdzoff     480000&lt;br /&gt;
&lt;br /&gt;
// Do NOT mix (pitch,roll,md&amp;lt;x|y|z&amp;gt;off) with mdpos&amp;lt;x|y|z&amp;gt;off !&lt;br /&gt;
sprite 16383 mdposxoff  1024     // 32.0 // eastwards  in 2D view&lt;br /&gt;
sprite 16383 mdposyoff  1024     // 32.0 // southwards in 2D view&lt;br /&gt;
sprite 16383 mdposzoff -16384    // 32.0 // downwards  in 3D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More on this to come soon...&lt;/div&gt;</summary>
		<author><name>LeoD</name></author>
	</entry>
	<entry>
		<id>https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=14411</id>
		<title>Maphack Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=14411"/>
		<updated>2021-10-26T12:39:23Z</updated>

		<summary type="html">&lt;p&gt;LeoD: recent maphack tokens added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maphacks are used to edit the positioning of objects and other parts of a level in cases where the maps cannot be redistributed.&lt;br /&gt;
This only affects the visual representation through the renderer and does &#039;&#039;not&#039;&#039; change the actual gameplay.&lt;br /&gt;
Additional information may be found in  [http://svn.eduke32.com/duke3d_hrp/maphacks/MapHacks.txt MapHacks.txt].&lt;br /&gt;
&lt;br /&gt;
==sprite==&lt;br /&gt;
&#039;&#039;&#039;sprite&#039;&#039;&#039; &#039;&#039;spriteid&#039;&#039; &amp;lt;token&amp;gt; &amp;lt;nowiki&amp;gt;[value]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[angoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angleoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rotates the model (md3 or kvx) away from the starting angle of the sprite. A &#039;&#039;value&#039;&#039; of 2048 represents a full turn of 360 degrees. Practical &#039;&#039;values&#039;&#039; should be chosen between -1023 and 1024 (+- 180 degrees).&lt;br /&gt;
&lt;br /&gt;
===notmd===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd2&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Renders a tile as a texture (original ART tile or highres image if available) instead of a model (md3 or kvx). This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It is mostly used to &amp;quot;flatten&amp;quot; wall aligned or floor aligned decorative objects.&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no actual implementation for &#039;&#039;notmd2&#039;&#039; and &#039;&#039;notmd3&#039;&#039;. They are mapped to &#039;&#039;notmd&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===nomdanim===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomdanim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd2anim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd3anim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Freezes any model animation in place.  This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no actual implementation for &#039;&#039;nomd2anim&#039;&#039; and &#039;&#039;nomd3anim&#039;&#039;. They are mapped to &#039;&#039;nomdanim&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===away1===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite forwards by a small amount. This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It is mostly used to resolve flickering (&amp;quot;z-fighting&amp;quot;) of overlapping wall aligned sprites, which is especially prevalent when using the Polymer renderer.&lt;br /&gt;
&lt;br /&gt;
===away2===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite backwards by a small amount. This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It is mostly used to resolve flickering (&amp;quot;z-fighting&amp;quot;) of overlapping wall aligned sprites, which is especially prevalent when using the Polymer renderer.&lt;br /&gt;
&lt;br /&gt;
===[[pitch]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;pitch&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[pitch]]&#039;&#039;&#039;, i.e. bowing or falling backwards. Not yet implemented for kvx models.&amp;lt;br/&amp;gt;&lt;br /&gt;
A hackish method can be used to move the model forwards/backwards from clipping into a wall, by setting the sprite&#039;s &#039;&#039;&#039;mdzoff&#039;&#039;&#039; to a grossly high (or low negative) number (try 100000 for starters), and setting a &#039;&#039;&#039;pitch&#039;&#039;&#039; of 1.&lt;br /&gt;
&lt;br /&gt;
===[[roll]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;roll&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[roll]]&#039;&#039;&#039;, i.e. tilting to the side. Not yet implemented for kvx models.&lt;br /&gt;
&lt;br /&gt;
===[[mdxoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdxoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;x&#039;&#039;&#039; coordinate of the model&#039;s centerpoint,(upwards/downwards in 3D view) to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdyoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdyoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;y&#039;&#039;&#039; coordinate of the model&#039;s centerpoint (upwards/downwards in 3D view), to be used in conjunction with &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdzoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdzoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;z&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; (forwards/backwards) and/or &#039;&#039;&#039;roll&#039;&#039;&#039; (right/left).&amp;lt;br/&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039; values can be used as scaling factors. With &#039;&#039;&#039;pitch 1&#039;&#039;&#039; and &#039;&#039;&#039;roll -2&#039;&#039;&#039;, for example, the model is moved twice as far to the left as it gets moved forwards.&amp;lt;br/&amp;gt;&lt;br /&gt;
Be aware that the same &#039;&#039;value&#039;&#039; will result in 1/16 the translation for &#039;&#039;&#039;mdzoff&#039;&#039;&#039; compared to &#039;&#039;&#039;mdxoff&#039;&#039;&#039; and &#039;&#039;&#039;mdyoff&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===mdposxoff===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdposxoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ported from NBlood. In Mapster32&#039;s 2D view the &#039;&#039;&#039;x&#039;&#039;&#039; coordinate of the model&#039;s centerpoint is moved to the right/eastwards/angle 0. (The default placement lets sprites face northwards/angle 1536.)&amp;lt;br/&amp;gt;&lt;br /&gt;
This is quite different from the way &#039;&#039;pitch/roll + md[x|y|z]off&#039;&#039; works. Do not confuse.&lt;br /&gt;
&lt;br /&gt;
===mdposyoff===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdposyoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ported from NBlood. In Mapster32&#039;s 2D view the &#039;&#039;&#039;y&#039;&#039;&#039; coordinate of the model&#039;s centerpoint is moved to down/southwards/angle 512. (The default placement lets sprites face northwards/angle 1536.)&amp;lt;br/&amp;gt;&lt;br /&gt;
This is quite different from the way &#039;&#039;pitch/roll + md[x|y|z]off&#039;&#039; works. Do not confuse.&lt;br /&gt;
&lt;br /&gt;
===mdposzoff===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdposzoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ported from NBlood. In Mapster32&#039;s 2D view the &#039;&#039;&#039;z&#039;&#039;&#039; coordinate of the model&#039;s centerpoint is moved forwards to the viewer (upwards in 3D view).&amp;lt;br/&amp;gt;&lt;br /&gt;
This is roughly equivalent to the way (&#039;&#039;pitch + mdxoff&#039;&#039;) or (&#039;&#039;roll + mdyoff&#039;&#039;) work, respectively.&lt;br /&gt;
&lt;br /&gt;
===mhkreset===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mhkreset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This development helper resets all previous maphacks for a sprite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==light==&lt;br /&gt;
&#039;&#039;&#039;light&#039;&#039;&#039; &#039;&#039;sector&#039;&#039; &#039;&#039;x&#039;&#039; &#039;&#039;y&#039;&#039; &#039;&#039;z&#039;&#039; &#039;&#039;range&#039;&#039; &#039;&#039;r&#039;&#039; &#039;&#039;g&#039;&#039; &#039;&#039;b&#039;&#039; &#039;&#039;radius&#039;&#039; &#039;&#039;faderadius&#039;&#039; &#039;&#039;angle&#039;&#039; &#039;&#039;horiz&#039;&#039; &#039;&#039;minshade&#039;&#039; &#039;&#039;maxshade&#039;&#039; &#039;&#039;priority&#039;&#039; &#039;&#039;tilenum&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Displays a spotlight using the &#039;&#039;&#039;Polymer&#039;&#039;&#039; renderer.&lt;/div&gt;</summary>
		<author><name>LeoD</name></author>
	</entry>
	<entry>
		<id>https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=14410</id>
		<title>Maphack Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=14410"/>
		<updated>2021-10-26T11:47:04Z</updated>

		<summary type="html">&lt;p&gt;LeoD: more detailed information added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maphacks are used to edit the positioning of objects and other parts of a level in cases where the maps cannot be redistributed.&lt;br /&gt;
This only affects the visual representation through the renderer and does &#039;&#039;not&#039;&#039; change the actual gameplay.&lt;br /&gt;
Additional information may be found in  [http://svn.eduke32.com/duke3d_hrp/maphacks/MapHacks.txt MapHacks.txt].&lt;br /&gt;
&lt;br /&gt;
==sprite==&lt;br /&gt;
&#039;&#039;&#039;sprite&#039;&#039;&#039; &#039;&#039;spriteid&#039;&#039; &amp;lt;token&amp;gt; &amp;lt;nowiki&amp;gt;[value]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[angoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angleoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rotates the model (md3 or kvx) away from the starting angle of the sprite. A &#039;&#039;value&#039;&#039; of 2048 represents a full turn of 360 degrees. Practical &#039;&#039;values&#039;&#039; should be chosen between -1023 and 1024 (+- 180 degrees).&lt;br /&gt;
&lt;br /&gt;
===notmd===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd2&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Renders a tile as a texture (original ART tile or highres image if available) instead of a model (md3 or kvx). This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
It is mostly used to &amp;quot;flatten&amp;quot; wall aligned or floor aligned decorative objects.&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no actual implementation for &#039;&#039;notmd2&#039;&#039; and &#039;&#039;notmd3&#039;&#039;. They are mapped to &#039;&#039;notmd&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===nomdanim===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomdanim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd2anim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd3anim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Freezes any model animation in place.  This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no actual implementation for &#039;&#039;nomd2anim&#039;&#039; and &#039;&#039;nomd3anim&#039;&#039;. They are mapped to &#039;&#039;nomdanim&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[pitch]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;pitch&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[pitch]]&#039;&#039;&#039;, i.e. bowing or falling backwards. Not yet implemented for kvx models.&amp;lt;br/&amp;gt;&lt;br /&gt;
A hackish method can be used to move the model forwards/backwards from clipping into a wall, by setting the sprite&#039;s &#039;&#039;&#039;mdzoff&#039;&#039;&#039; to a grossly high (or low negative) number (try 100000 for starters), and setting a &#039;&#039;&#039;pitch&#039;&#039;&#039; of 1.&lt;br /&gt;
&lt;br /&gt;
===[[roll]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;roll&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[roll]]&#039;&#039;&#039;, i.e. tilting to the side. Not yet implemented for kvx models.&lt;br /&gt;
&lt;br /&gt;
===[[mdxoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdxoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;x&#039;&#039;&#039; coordinate of the model&#039;s centerpoint,(upwards/downwards in 3D view) to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdyoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdyoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;y&#039;&#039;&#039; coordinate of the model&#039;s centerpoint (upwards/downwards in 3D view), to be used in conjunction with &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdzoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdzoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;z&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; (forwards/backwards) and/or &#039;&#039;&#039;roll&#039;&#039;&#039; (right/left).&amp;lt;br/&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039; values can be used as scaling factors. With &#039;&#039;&#039;pitch 1&#039;&#039;&#039; and &#039;&#039;&#039;roll -2&#039;&#039;&#039;, for example, the model is moved twice as far to the left as it gets moved forwards. Be aware that the same &#039;&#039;value&#039;&#039; will result in 1/16 the translation for &#039;&#039;&#039;mdzoff&#039;&#039;&#039; compared to &#039;&#039;&#039;mdxoff&#039;&#039;&#039; and &#039;&#039;&#039;mdyoff&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===away1===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite forwards by a small amount. This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
This is mostly used to resolve flickering (&amp;quot;z-fighting&amp;quot;) of overlapping wall aligned sprites, which is especially prevalent when using the Polymer renderer.&lt;br /&gt;
&lt;br /&gt;
===away2===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite backwards by a small amount. This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
This is mostly used to resolve flickering (&amp;quot;z-fighting&amp;quot;) of overlapping wall aligned sprites, which is especially prevalent when using the Polymer renderer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==light==&lt;br /&gt;
&#039;&#039;&#039;light&#039;&#039;&#039; &#039;&#039;sector&#039;&#039; &#039;&#039;x&#039;&#039; &#039;&#039;y&#039;&#039; &#039;&#039;z&#039;&#039; &#039;&#039;range&#039;&#039; &#039;&#039;r&#039;&#039; &#039;&#039;g&#039;&#039; &#039;&#039;b&#039;&#039; &#039;&#039;radius&#039;&#039; &#039;&#039;faderadius&#039;&#039; &#039;&#039;angle&#039;&#039; &#039;&#039;horiz&#039;&#039; &#039;&#039;minshade&#039;&#039; &#039;&#039;maxshade&#039;&#039; &#039;&#039;priority&#039;&#039; &#039;&#039;tilenum&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Displays a spotlight using the &#039;&#039;&#039;Polymer&#039;&#039;&#039; renderer.&lt;/div&gt;</summary>
		<author><name>LeoD</name></author>
	</entry>
	<entry>
		<id>https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=14409</id>
		<title>Maphack Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=14409"/>
		<updated>2021-10-26T10:19:47Z</updated>

		<summary type="html">&lt;p&gt;LeoD: Comments on notmd2, notmd3, nomd2anim, nomd3anim&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maphacks are used to edit the positioning of objects and other parts of a level in cases where the maps cannot be redistributed.&lt;br /&gt;
&lt;br /&gt;
==sprite==&lt;br /&gt;
&#039;&#039;&#039;sprite&#039;&#039;&#039; &#039;&#039;spriteid&#039;&#039; &amp;lt;token&amp;gt; &amp;lt;nowiki&amp;gt;[value]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[angoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angleoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rotates the model away from the starting angle of the sprite. A &#039;&#039;value&#039;&#039; of 2048 represents a full turn of 360 degrees.&lt;br /&gt;
&lt;br /&gt;
===notmd===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd2&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Renders a tile as a sprite instead of a model.  This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no actual implementation for &#039;&#039;notmd2&#039;&#039; and &#039;&#039;notmd3&#039;&#039;. They are mapped to &#039;&#039;notmd&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===nomdanim===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomdanim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd2anim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd3anim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Freezes any model animation in place.  This is achieved by altering the value of [[mdflags]].&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no actual implementation for &#039;&#039;nomd2anim&#039;&#039; and &#039;&#039;nomd3anim&#039;&#039;. They are mapped to &#039;&#039;nomdanim&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[pitch]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;pitch&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[pitch]]&#039;&#039;&#039;, i.e. bowing or falling backwards.&lt;br /&gt;
A hackish method can be used to move the model away from clipping in a wall, by setting the sprite&#039;s &#039;&#039;&#039;mdzoff&#039;&#039;&#039; to a grossly high (or low negative) number, and setting a &#039;&#039;&#039;pitch&#039;&#039;&#039; of 1.&lt;br /&gt;
&lt;br /&gt;
===[[roll]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;roll&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[roll]]&#039;&#039;&#039;, i.e. tilting to the side.&lt;br /&gt;
&lt;br /&gt;
===[[mdxoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdxoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;x&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdyoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdyoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;y&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdzoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdzoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;z&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===away1===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite away. (how?)  This is achieved by altering the value of [[mdflags]].&lt;br /&gt;
&lt;br /&gt;
===away2===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite away. (how?)  This is achieved by altering the value of [[mdflags]].&lt;br /&gt;
&lt;br /&gt;
==light==&lt;br /&gt;
&#039;&#039;&#039;light&#039;&#039;&#039; &#039;&#039;sector&#039;&#039; &#039;&#039;x&#039;&#039; &#039;&#039;y&#039;&#039; &#039;&#039;z&#039;&#039; &#039;&#039;range&#039;&#039; &#039;&#039;r&#039;&#039; &#039;&#039;g&#039;&#039; &#039;&#039;b&#039;&#039; &#039;&#039;radius&#039;&#039; &#039;&#039;faderadius&#039;&#039; &#039;&#039;angle&#039;&#039; &#039;&#039;horiz&#039;&#039; &#039;&#039;minshade&#039;&#039; &#039;&#039;maxshade&#039;&#039; &#039;&#039;priority&#039;&#039; &#039;&#039;tilenum&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Displays a spotlight using the &#039;&#039;&#039;Polymer&#039;&#039;&#039; renderer.&lt;/div&gt;</summary>
		<author><name>LeoD</name></author>
	</entry>
	<entry>
		<id>https://wiki.eduke32.com/w/index.php?title=Category:Editing_Miscellaneous&amp;diff=14408</id>
		<title>Category:Editing Miscellaneous</title>
		<link rel="alternate" type="text/html" href="https://wiki.eduke32.com/w/index.php?title=Category:Editing_Miscellaneous&amp;diff=14408"/>
		<updated>2021-10-26T08:00:04Z</updated>

		<summary type="html">&lt;p&gt;LeoD: move up &amp;quot;* 2556 = Shrinkers&amp;quot; by one line&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Build Intro}}&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE: Much of information on this page is from around 1999.  Some may be outdated, and some may be incorrect -- this page exists to get you started with the Level Editing and may not currently cover some of the additional features available in Mapster32.&amp;lt;/strong&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
==Glass==&lt;br /&gt;
&lt;br /&gt;
Select the wall that you would like to turn into glass. It needs to be a dividing line between two sectors (a red line in 2D mode). Go to 3D mode and hover your mouse cursor on the floor or ceiling in front of this wall, and press &#039;M&#039;. This causes the wall to be masked. Now select a glass texture for it (texture #503). If you like, you can hit &#039;T&#039; once or twice to make it partially transparent. Now hit &#039;B&#039; and &#039;H&#039;. These make the glass wall &#039;&#039;blockable&#039;&#039; and &#039;&#039;hittable&#039;&#039; so that it both blocks the player and responds to being shot by breaking. It should look like a double pink line in 2D mode. That&#039;s all there is to it.&lt;br /&gt;
&lt;br /&gt;
==Secret Areas==&lt;br /&gt;
Apply a lotag of 32767 to a sector to create a secret area. When the player walks over this sector, it counts as one secret area discovered. The game also totals the number of sectors assigned this lotag, so try to use only one secret sector for each secret area.&lt;br /&gt;
&lt;br /&gt;
==Shooters==&lt;br /&gt;
&#039;&#039;Map Name: [[Media:Tutorial.map|TUTORIAL.MAP]] (ROOM 7-E)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A shooter is basically something that repeatedly shoots an object of your choice.  A good example of a shooter is the one located in episode 1, level 4. When you unlock the red keypad, the pad lowers, revealing a shooter that shoots &amp;quot;shrinkers&amp;quot; (the projectiles that make you shrink in size).&lt;br /&gt;
&lt;br /&gt;
STEP 1: Create a sector from which the shooter will shoot from.&lt;br /&gt;
 &lt;br /&gt;
STEP 2: In this newly created sector, place one sector effector sprite, one GPSpeed sprite, and one Masterswitch sprite. &lt;br /&gt;
&lt;br /&gt;
STEP 3: Place a Switch or Touchplate somewhere in your level and give it a unique lotag. &lt;br /&gt;
&lt;br /&gt;
STEP 4: Give the Masterswitch sprite a hitag of 50 and the same lotag value as the switch. &lt;br /&gt;
&lt;br /&gt;
STEP 5: Place one sector effector sprite where you want the shots to originate from.  Change the angle of this sprite to the direction you want the shooter to shoot.  Give this sprite a lotag of 36. &lt;br /&gt;
&lt;br /&gt;
STEP 6: Now you must decide what you want to shoot.  Do this by giving the GPSpeed sprite a lotag of one of the following values:&lt;br /&gt;
* 1360 = Octabrain Blasts&lt;br /&gt;
* 1625 = Alien Lasers&lt;br /&gt;
* 1636 = Lizard Spit&lt;br /&gt;
* 1641 = Freezer Blasts (Auto-aims at player)&lt;br /&gt;
* 1650 = Mortars (Like the first boss throws)&lt;br /&gt;
* 2556 = Shrinkers&lt;br /&gt;
* 2605 = Rockets (Auto-aims at player)&lt;br /&gt;
&lt;br /&gt;
==Turning Shooters Off==&lt;br /&gt;
See Section &#039;Shooters&#039;. Simply replace the Masterswitch with an Activator. The Shooter can then be turned on/off with any Switch and/or Touchplate(s), in Mapster32.&lt;br /&gt;
&lt;br /&gt;
==Difficulty Settings==&lt;br /&gt;
To assign difficulty levels to enemies, assign them with a lotag matching the desired skill level, such as 1 for &#039;&#039;Piece of Cake&#039;&#039; or 4 for &#039;&#039;Damn I&#039;m Good&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Signs That Fall When Shot==&lt;br /&gt;
Simply take a flattened sprite and assign it a unique hitag and it will be vulnerable to explosions. Assign multiple objects the same hitag, such as the faces of a 3D bridge, and each sprite will collapse together as a structure.&lt;br /&gt;
&lt;br /&gt;
==Lightning and Thunder (Version 1.4 or 1.5 Required)==&lt;br /&gt;
&#039;&#039;Map Name: [[Media:Atomic.map|ATOMIC.MAP]] (ROOM 4)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To make the lightning bolt engine work, follow these simple steps:&lt;br /&gt;
&lt;br /&gt;
STEP 1: Place several lightning sprites (#4890) in an outside area, and give each sprite *the same* unique hitag.  The sky should also be cloudy (not required, but makes it look realistic).&lt;br /&gt;
&lt;br /&gt;
STEP 2: Place a sector effector in each sector that contains a lightning bolt sprite.  Give each sector effector a lotag of 28, and a hitag equal to the lightning bolt sprite&#039;s hitag value.&lt;br /&gt;
&lt;br /&gt;
==Making Rain==&lt;br /&gt;
&lt;br /&gt;
To make a raining effect, place Waterdrip sprites (#660) where you want them to be, and raise them to the ceiling of the sector they are in. Give each sprite a hitag of 1 to eliminate the dripping sound. Place a Musicandsfx (#5) sprite somewhere in the raining sectors, give it a lotag of 358, and a hitag of the distance the sound should be heard.&lt;br /&gt;
&lt;br /&gt;
NOTE: Giving the rain drops a palette number of 13 is recommended.&lt;br /&gt;
&lt;br /&gt;
==Forcing Duke To Start Weaponless==&lt;br /&gt;
Simply put the starting place over a floor-tile that hurts. E.G. HURTRAIL(#859) - LAVA(#1082) - SLIME (#200) &lt;br /&gt;
&lt;br /&gt;
You can make Duke start weaponless, without hurting him. &lt;br /&gt;
* STEP 1: Make a hole in the floor. &lt;br /&gt;
* STEP 2: Put the HURT-TILE on the hole floor. &lt;br /&gt;
* STEP 3: Place a sprite on the main floor, and make it flat (2 presses on [R] key) &lt;br /&gt;
* STEP 4: Select the same texture as the floor tile. ([V] Twice) &lt;br /&gt;
* STEP 5: Arrange the sprite, so it covers the hole.&lt;br /&gt;
NOTE: Make sure the sprite is &amp;quot;Hard&amp;quot; (purple in color) Point at the sprite, and press the [B] key&lt;br /&gt;
&lt;br /&gt;
==Making a MiniBoss==&lt;br /&gt;
&lt;br /&gt;
To include the boss from Episode 1 without the level ending when you kill him, give him a palette number of 21. He&#039;ll have less health than the Episode 1 boss. This also works for the bosses of episodes 2 and 3, but they will have only one health point. It does not work at all for the Episode 4 boss; she&#039;ll be as tough as always but she&#039;ll be coloured bright red.&lt;/div&gt;</summary>
		<author><name>LeoD</name></author>
	</entry>
	<entry>
		<id>https://wiki.eduke32.com/w/index.php?title=Troubleshooting_EDuke32&amp;diff=14400</id>
		<title>Troubleshooting EDuke32</title>
		<link rel="alternate" type="text/html" href="https://wiki.eduke32.com/w/index.php?title=Troubleshooting_EDuke32&amp;diff=14400"/>
		<updated>2021-09-27T14:51:37Z</updated>

		<summary type="html">&lt;p&gt;LeoD: added the need of backtrace DLL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The first step in troubleshooting EDuke32 is testing [http://dukeworld.duke4.net/eduke32/synthesis/eduke32_latest.zip the most recent unstable version], automatically generated every 20 minutes if changes have been made to the source code.&lt;br /&gt;
&lt;br /&gt;
==Basic Assistance==&lt;br /&gt;
&lt;br /&gt;
If you have a problem with EDuke32 or Mapster32, [http://forums.duke4.net/forum/27-bug-reports-help-me-threads/ READ THE THREADS HERE FIRST], as well as [https://voidpoint.io/terminx/eduke32/-/issues THE ISSUES PAGE ON THE GITLAB] to see if anyone else has experienced the same issue. Do not post a new thread or a new issue if a similar problem has already been reported.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;3&amp;quot; color=&amp;quot;red&amp;quot;&amp;gt;&#039;&#039;&#039;Always do a search for your problem before posting. Any new topics/issues should clearly describe the problem in the title/summary.&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you find no previous reports of your issue, prepare to submit a bug report to the forum. For general help, follow the instructions below in a new thread at the forum link above. For a problem with a particular TC or mod, it may be better to contact its author directly depending on the circumstances and the nature of the error.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;4&amp;quot;&amp;gt;&#039;&#039;&#039;Please add the following information to any bug report:&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#You need to locate a file in your EDuke32 data called &#039;&#039;&#039;eduke32.log&#039;&#039;&#039; or &#039;&#039;&#039;mapster32.log&#039;&#039;&#039; depending on which program encountered the error. This file is overwritten every time the programs are run, so it is vital that the log file comes from an occasion when you encountered the problem and have not run the program again afterwards. Any log files should be posted as attachments or loaded on to http://pastebin.com/. &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&#039;&#039;&#039;Absolutely do NOT post logs as part of your post text itself!&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
#Your system specifications (OS, GPU, CPU, etc) may be helpful, especially with OpenGL graphics- or performance-related reports. [http://www.cpuid.com/softwares/cpu-z.html CPUID CPU-Z] is useful for details.&lt;br /&gt;
#What version of EDuke32 you are running.&lt;br /&gt;
#What you were doing at the time.&lt;br /&gt;
#Be ready to upload or private message any modified con/sound/art/maps etc related to the above in the event an easy solution cannot be found.&lt;br /&gt;
#Go to http://dukeworld.duke4.net/eduke32/synthesis and find the first build that exhibits the problem, and post the build numbers of the last working version and the first broken version. See [[#Bisecting|the Bisecting subsection below]] for how to do this efficiently.&lt;br /&gt;
&lt;br /&gt;
===tips for quicker bug handling===&lt;br /&gt;
&lt;br /&gt;
The following points will help us and help you find solutions &#039;&#039;&#039;much more quickly and effectively&#039;&#039;&#039;, which should be in the interest of all parties involved.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;When in doubt whether a log is useful or not, attach it regardless.&#039;&#039;&#039; This means that time can be spent on actually fixing the bug instead of asking for the log and waiting... and waiting... and waiting...&lt;br /&gt;
* &#039;&#039;&#039;Show, don&#039;t merely tell.&#039;&#039;&#039; For example, if it is an editor bug, attach a small test map with the bug report or PM it in case you don&#039;t want it to be public.&lt;br /&gt;
* When reporting a bug for the first time, &#039;&#039;&#039;assume that you&#039;re the first to encounter it&#039;&#039;&#039;, that is, don&#039;t leave out details just because you think they&#039;re &amp;quot;well known&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Assume vanilla Duke unless known otherwise.&#039;&#039;&#039; For example, if developing a new mod containing new art and reporting an editor or game effect bug, load the map in a vanilla installation and replace all now-void tiles using [&#039;]+[F] -&amp;gt; replace invalid tiles. Similarly, when filing a CON bug, try to present it such that it can be loaded as a stand-alone module (-mx switch to EDuke32). Of course, for released mods, it&#039;s OK to do otherwise if it&#039;s known that the developer(s) have that particular mod installed.&lt;br /&gt;
* When referring to locations in a map, don&#039;t assume that the developers have played them unless it&#039;s a vanilla map or a classic &amp;quot;must play&amp;quot; plain user map (what constitutes such a map is somewhat subjective, of course). Instead, &#039;&#039;&#039;provide coordinates for the location&#039;&#039;&#039;, obtainable by pressing LShift in Mapster32, or with the DNCOORDS cheat in the game. Feel free to round the numbers for prettier appearance, as long as it&#039;s reasonably clear what place is meant.&lt;br /&gt;
&lt;br /&gt;
==Crashes==&lt;br /&gt;
&lt;br /&gt;
If you encounter an actual program crash, try running the debug executables (eduke32.debug.exe or mapster32.debug.exe) included in the EDuke32 builds available from [http://dukeworld.duke4.net/eduke32/synthesis/ synthesis]. Put the according backtrace DLL (32/64 bit) alongside the debug executable. If you encounter the crash again, look for a file named &#039;&#039;&#039;eduke32.crash.log&#039;&#039;&#039; or &#039;&#039;&#039;mapster32.crash.log&#039;&#039;&#039; and include it when following the directions in the [[#Basic Assistance|Basic Assistance]] section.&lt;br /&gt;
&lt;br /&gt;
If you cannot find this file, please proceed to the [[#Debugging|Debugging]] section.&lt;br /&gt;
&lt;br /&gt;
==Bisecting==&lt;br /&gt;
A very useful piece of information when reporting a bug is the particular revision that introduced the bug, or at least range of revisions. Finding it &#039;&#039;&#039;does not&#039;&#039;&#039; require searching all revisions in sequence. First, a revision needs to be found that doesn&#039;t show the buggy behavior. Either you might have a suspicion when it occured, otherwise you can try the earliest revisions from [http://dukeworld.duke4.net/eduke32/synthesis/ synthesis], [http://dukeworld.duke4.net/eduke32/synthesis/old/ old synthesis], or [http://dukeworld.duke4.net/eduke32/old_versions/ snapshots prior to automated builds] for really ancient bugs. (For certain bugs, it may also be worthwhile to check whether the original Duke3D 1.5 exhibits it, too). At this point, it also helps to have constructed a small test case, so that one can decide &amp;quot;faulty/working&amp;quot; relatively quickly (for example by starting a map in a particular position and doing something). Having found this &amp;quot;base&amp;quot; bad revision -- let&#039;s call it &#039;&#039;N&#039;&#039;&amp;lt;sub&amp;gt;bad&amp;lt;/sub&amp;gt; --, the idea now is to search the one revision that introduced the bug by cutting the search space roughly by half with each step. Calling the current revision &#039;&#039;N&#039;&#039;&amp;lt;sub&amp;gt;good&amp;lt;/sub&amp;gt;, one would now proceed by testing the one that lies roughly between the two, &#039;&#039;N&#039;&#039;&amp;lt;sub&amp;gt;test&amp;lt;/sub&amp;gt; := round((&#039;&#039;N&#039;&#039;&amp;lt;sub&amp;gt;bad&amp;lt;/sub&amp;gt;+&#039;&#039;N&#039;&#039;&amp;lt;sub&amp;gt;good&amp;lt;/sub&amp;gt;)/2). After carrying out the test, one either lets &#039;&#039;N&#039;&#039;&amp;lt;sub&amp;gt;bad&amp;lt;/sub&amp;gt;:=&#039;&#039;N&#039;&#039;&amp;lt;sub&amp;gt;test&amp;lt;/sub&amp;gt; or &#039;&#039;N&#039;&#039;&amp;lt;sub&amp;gt;good&amp;lt;/sub&amp;gt;:=&#039;&#039;N&#039;&#039;&amp;lt;sub&amp;gt;test&amp;lt;/sub&amp;gt;, always such that the bug-introducing revision will be between these two &amp;quot;anchor&amp;quot; revisions. Finally, one repeats this procedure until arriving at a revision difference of one (or giving up early, which still leaves a revision range as a result).&lt;br /&gt;
&lt;br /&gt;
It should be noted that this procedure should be best carried out in an isolated directory, because the generated configuration files of earlier revisions might produce conflicts or remove options from ones of newer builds.&lt;br /&gt;
&lt;br /&gt;
Depending on the setup, this procedure takes about 15 to 30 minutes.&lt;br /&gt;
&lt;br /&gt;
===example===&lt;br /&gt;
Here&#039;s a log of [http://dukeworld.duke4.net/eduke32/synthesis/ synthesis builds] tested when searching for the revision that introduced a certain [http://forums.duke4.net/topic/5542-lighting-and-security-screens/ bug] with viewscreens. For this, a test map was constructed that started near such a viewscreen.&lt;br /&gt;
&lt;br /&gt;
0. (current revision) r2781 -- BAD&amp;lt;br/&amp;gt;&lt;br /&gt;
1. (first guess) r2000 -- GOOD&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we know that the bug must have been introduced between r2000 and r2781, so we pick one in between:&lt;br /&gt;
&lt;br /&gt;
2. r2300 -- BAD&amp;lt;br/&amp;gt;&lt;br /&gt;
(now, r2000 vs. r2300)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. r2155 -- GOOD&amp;lt;br/&amp;gt;&lt;br /&gt;
(now, r2155 vs. r2300)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. r2239 -- BAD&amp;lt;br/&amp;gt;&lt;br /&gt;
(now, r2155 vs. r2239)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... and so on, until one arrives at the bug-introducing revision in around log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(&#039;&#039;N&#039;&#039;&amp;lt;sub&amp;gt;bad&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt;-&#039;&#039;N&#039;&#039;&amp;lt;sub&amp;gt;good&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt;) (for the current example, 10) steps.&lt;br /&gt;
&lt;br /&gt;
==Debugging==&lt;br /&gt;
To help the developers in tracking down crashes, you could try running a debug version of the executable under GDB, the GNU debugger, until the crash happens.&lt;br /&gt;
&lt;br /&gt;
If you are running Windows and do not already have GDB set up, follow the instructions to set up [[Building EDuke32 on Windows]] and it will be included. You do &#039;&#039;&#039;not&#039;&#039;&#039; have to compile EDuke32 yourself, instead you just have to install the compiler.&lt;br /&gt;
&lt;br /&gt;
===running the debugger===&lt;br /&gt;
&lt;br /&gt;
To debug the program, ([http://dukeworld.duke4.net/eduke32/synthesis/ synthesis build recommended]) open a [[Working with the Windows Command Prompt#Opening A Command Prompt Window|command prompt]] or terminal window and run this command, using Mapster32 as an example:&lt;br /&gt;
 gdb --args mapster32.debug.exe &#039;&#039;[additional arguments...]&#039;&#039;&lt;br /&gt;
and enter &lt;br /&gt;
 r&lt;br /&gt;
(run) at the GDB prompt. When the program crashes, you will be taken back to the prompt. Enter&lt;br /&gt;
 bt&lt;br /&gt;
(backtrace) there. This will print out the location where the crash occurred and serve as a first diagnostic to the developers.&lt;br /&gt;
&lt;br /&gt;
===advanced debugging===&lt;br /&gt;
&lt;br /&gt;
There are specific circumstances where you can use [http://sourceware.org/gdb/onlinedocs/gdb/Set-Breaks.html breakpoints] and [http://sourceware.org/gdb/onlinedocs/gdb/Set-Watchpoints.html watchpoints] if you know where they would be applicable.&lt;br /&gt;
&lt;br /&gt;
===submitting the output===&lt;br /&gt;
&lt;br /&gt;
[[Working with the Windows Command Prompt#How to Copy and Paste Text|Copy and paste the output gdb displays]] and send it to the developers so they can work on a fix. [http://www.pastebin.com Pastebin.com] is useful for this purpose.&lt;/div&gt;</summary>
		<author><name>LeoD</name></author>
	</entry>
	<entry>
		<id>https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=11544</id>
		<title>Maphack Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=11544"/>
		<updated>2013-03-17T15:13:04Z</updated>

		<summary type="html">&lt;p&gt;LeoD: /* mdzoff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maphacks are used to edit the positioning of objects and other parts of a level in cases where the maps cannot be redistributed.&lt;br /&gt;
&lt;br /&gt;
==sprite==&lt;br /&gt;
&#039;&#039;&#039;sprite&#039;&#039;&#039; &#039;&#039;spriteid&#039;&#039; &amp;lt;token&amp;gt; &amp;lt;nowiki&amp;gt;[value]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[angoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angleoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rotates the model away from the starting angle of the sprite. A &#039;&#039;value&#039;&#039; of 2048 represents a full turn of 360 degrees.&lt;br /&gt;
&lt;br /&gt;
===notmd===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd2&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Renders a tile as a sprite instead of a model.  This is achieved by altering the value of [[mdflags]].&lt;br /&gt;
&lt;br /&gt;
===nomdanim===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomdanim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd2anim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd3anim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Freezes any model animation in place.  This is achieved by altering the value of [[mdflags]].&lt;br /&gt;
&lt;br /&gt;
===[[pitch]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;pitch&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[pitch]]&#039;&#039;&#039;, i.e. bowing or falling backwards.&lt;br /&gt;
A hackish method can be used to move the model away from clipping in a wall, by setting the sprite&#039;s &#039;&#039;&#039;mdzoff&#039;&#039;&#039; to a grossly high (or low negative) number, and setting a &#039;&#039;&#039;pitch&#039;&#039;&#039; of 1.&lt;br /&gt;
&lt;br /&gt;
===[[roll]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;roll&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[roll]]&#039;&#039;&#039;, i.e. tilting to the side.&lt;br /&gt;
&lt;br /&gt;
===[[mdxoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdxoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;x&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdyoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdyoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;y&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdzoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdzoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;z&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===away1===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite away. (how?)  This is achieved by altering the value of [[mdflags]].&lt;br /&gt;
&lt;br /&gt;
===away2===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite away. (how?)  This is achieved by altering the value of [[mdflags]].&lt;br /&gt;
&lt;br /&gt;
==light==&lt;br /&gt;
&#039;&#039;&#039;light&#039;&#039;&#039; &#039;&#039;sector&#039;&#039; &#039;&#039;x&#039;&#039; &#039;&#039;y&#039;&#039; &#039;&#039;z&#039;&#039; &#039;&#039;range&#039;&#039; &#039;&#039;r&#039;&#039; &#039;&#039;g&#039;&#039; &#039;&#039;b&#039;&#039; &#039;&#039;radius&#039;&#039; &#039;&#039;faderadius&#039;&#039; &#039;&#039;angle&#039;&#039; &#039;&#039;horiz&#039;&#039; &#039;&#039;minshade&#039;&#039; &#039;&#039;maxshade&#039;&#039; &#039;&#039;priority&#039;&#039; &#039;&#039;tilenum&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Displays a spotlight using the &#039;&#039;&#039;Polymer&#039;&#039;&#039; renderer.&lt;/div&gt;</summary>
		<author><name>LeoD</name></author>
	</entry>
	<entry>
		<id>https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=11543</id>
		<title>Maphack Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=11543"/>
		<updated>2013-03-17T15:07:46Z</updated>

		<summary type="html">&lt;p&gt;LeoD: /* angoff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maphacks are used to edit the positioning of objects and other parts of a level in cases where the maps cannot be redistributed.&lt;br /&gt;
&lt;br /&gt;
==sprite==&lt;br /&gt;
&#039;&#039;&#039;sprite&#039;&#039;&#039; &#039;&#039;spriteid&#039;&#039; &amp;lt;token&amp;gt; &amp;lt;nowiki&amp;gt;[value]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[angoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angleoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rotates the model away from the starting angle of the sprite. A &#039;&#039;value&#039;&#039; of 2048 represents a full turn of 360 degrees.&lt;br /&gt;
&lt;br /&gt;
===notmd===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd2&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Renders a tile as a sprite instead of a model.  This is achieved by altering the value of [[mdflags]].&lt;br /&gt;
&lt;br /&gt;
===nomdanim===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomdanim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd2anim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd3anim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Freezes any model animation in place.  This is achieved by altering the value of [[mdflags]].&lt;br /&gt;
&lt;br /&gt;
===[[pitch]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;pitch&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[pitch]]&#039;&#039;&#039;, i.e. bowing or falling backwards.&lt;br /&gt;
A hackish method can be used to move the model away from clipping in a wall, by setting the sprite&#039;s &#039;&#039;&#039;mdzoff&#039;&#039;&#039; to a grossly high (or low negative) number, and setting a &#039;&#039;&#039;pitch&#039;&#039;&#039; of 1.&lt;br /&gt;
&lt;br /&gt;
===[[roll]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;roll&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[roll]]&#039;&#039;&#039;, i.e. tilting to the side.&lt;br /&gt;
&lt;br /&gt;
===[[mdxoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdxoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;x&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdyoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdyoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;y&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdzoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdzoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;y&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===away1===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite away. (how?)  This is achieved by altering the value of [[mdflags]].&lt;br /&gt;
&lt;br /&gt;
===away2===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite away. (how?)  This is achieved by altering the value of [[mdflags]].&lt;br /&gt;
&lt;br /&gt;
==light==&lt;br /&gt;
&#039;&#039;&#039;light&#039;&#039;&#039; &#039;&#039;sector&#039;&#039; &#039;&#039;x&#039;&#039; &#039;&#039;y&#039;&#039; &#039;&#039;z&#039;&#039; &#039;&#039;range&#039;&#039; &#039;&#039;r&#039;&#039; &#039;&#039;g&#039;&#039; &#039;&#039;b&#039;&#039; &#039;&#039;radius&#039;&#039; &#039;&#039;faderadius&#039;&#039; &#039;&#039;angle&#039;&#039; &#039;&#039;horiz&#039;&#039; &#039;&#039;minshade&#039;&#039; &#039;&#039;maxshade&#039;&#039; &#039;&#039;priority&#039;&#039; &#039;&#039;tilenum&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Displays a spotlight using the &#039;&#039;&#039;Polymer&#039;&#039;&#039; renderer.&lt;/div&gt;</summary>
		<author><name>LeoD</name></author>
	</entry>
	<entry>
		<id>https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=11542</id>
		<title>Maphack Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.eduke32.com/w/index.php?title=Maphack_Language&amp;diff=11542"/>
		<updated>2013-03-17T15:03:03Z</updated>

		<summary type="html">&lt;p&gt;LeoD: /* angoff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maphacks are used to edit the positioning of objects and other parts of a level in cases where the maps cannot be redistributed.&lt;br /&gt;
&lt;br /&gt;
==sprite==&lt;br /&gt;
&#039;&#039;&#039;sprite&#039;&#039;&#039; &#039;&#039;spriteid&#039;&#039; &amp;lt;token&amp;gt; &amp;lt;nowiki&amp;gt;[value]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[angoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;angleoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rotates the model away from the starting angle of the sprite.&lt;br /&gt;
&lt;br /&gt;
===notmd===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd2&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;notmd3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Renders a tile as a sprite instead of a model.  This is achieved by altering the value of [[mdflags]].&lt;br /&gt;
&lt;br /&gt;
===nomdanim===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomdanim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd2anim&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;nomd3anim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Freezes any model animation in place.  This is achieved by altering the value of [[mdflags]].&lt;br /&gt;
&lt;br /&gt;
===[[pitch]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;pitch&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[pitch]]&#039;&#039;&#039;, i.e. bowing or falling backwards.&lt;br /&gt;
A hackish method can be used to move the model away from clipping in a wall, by setting the sprite&#039;s &#039;&#039;&#039;mdzoff&#039;&#039;&#039; to a grossly high (or low negative) number, and setting a &#039;&#039;&#039;pitch&#039;&#039;&#039; of 1.&lt;br /&gt;
&lt;br /&gt;
===[[roll]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;roll&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adjusts the model&#039;s &#039;&#039;&#039;[[roll]]&#039;&#039;&#039;, i.e. tilting to the side.&lt;br /&gt;
&lt;br /&gt;
===[[mdxoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdxoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;x&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdyoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdyoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;y&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===[[mdzoff]]===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;mdzoff&#039;&#039;&#039; &#039;&#039;value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Offsets the &#039;&#039;&#039;y&#039;&#039;&#039; coordinate of the model&#039;s centerpoint, to be used in conjunction with &#039;&#039;&#039;pitch&#039;&#039;&#039; and &#039;&#039;&#039;roll&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===away1===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite away. (how?)  This is achieved by altering the value of [[mdflags]].&lt;br /&gt;
&lt;br /&gt;
===away2===&lt;br /&gt;
sprite &#039;&#039;spriteid&#039;&#039; &#039;&#039;&#039;away2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moves the sprite away. (how?)  This is achieved by altering the value of [[mdflags]].&lt;br /&gt;
&lt;br /&gt;
==light==&lt;br /&gt;
&#039;&#039;&#039;light&#039;&#039;&#039; &#039;&#039;sector&#039;&#039; &#039;&#039;x&#039;&#039; &#039;&#039;y&#039;&#039; &#039;&#039;z&#039;&#039; &#039;&#039;range&#039;&#039; &#039;&#039;r&#039;&#039; &#039;&#039;g&#039;&#039; &#039;&#039;b&#039;&#039; &#039;&#039;radius&#039;&#039; &#039;&#039;faderadius&#039;&#039; &#039;&#039;angle&#039;&#039; &#039;&#039;horiz&#039;&#039; &#039;&#039;minshade&#039;&#039; &#039;&#039;maxshade&#039;&#039; &#039;&#039;priority&#039;&#039; &#039;&#039;tilenum&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Displays a spotlight using the &#039;&#039;&#039;Polymer&#039;&#039;&#039; renderer.&lt;/div&gt;</summary>
		<author><name>LeoD</name></author>
	</entry>
</feed>