https://wiki.eduke32.com/w/api.php?action=feedcontributions&user=Helixhorned&feedformat=atomEDukeWiki - User contributions [en]2024-03-28T12:57:27ZUser contributionsMediaWiki 1.42.0-alphahttps://wiki.eduke32.com/w/index.php?title=Clipmove&diff=12085Clipmove2015-01-04T12:17:34Z<p>Helixhorned: Mention that xvect and yvect are expected to be scaled.</p>
<hr />
<div>'''clipmove''' <''return''> <''x''> <''y''> <z> <''sectnum''> <xvect> <yvect> <walldist> <flordist> <ceildist> <clipmask><br><br />
'''clipmovenoslide''' <''return''> <''x''> <''y''> <z> <''sectnum''> <xvect> <yvect> <walldist> <flordist> <ceildist> <clipmask><br />
<br />
Calculates the movement of any object, starting from position (<x>, <y>, <z>) and sector <sectnum>, in any direction at velocity (<xvect>, <yvect>), keeping the object will a distance <walldist> from walls, <flordist> from floors, and <ceildist> from ceilings. The components of the velocity vector, <xvect> and <yvect>, are expected to be scaled by 14 bits, i.e. a value of 16384 corresponds to a Build x/y unit. However, <walldist> is given in Build units directly.<br />
<br />
<clipmask> is a mask that tells whether the object should be clipped to or not. The lower 16 bits are bitwise ANDed with wall[].[[cstat(wall)|cstat]] and the higher 16 bits are bitwise ANDed with sprite[].[[cstat]].<br />
<br />
<''return''>, <''x''>, <''y''>, and <''sectnum''> must be writeable [[gamevar]]s, and may be modified as the result of the calculation.<br />
<br />
<''return''> value:<br />
<br />
0 (touched nothing)<br />
32768+wallnum (wall first touched)<br />
49152+spritenum (sprite first touched)<br />
<br />
[[Category:EDuke32 specific commands]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Clipmove&diff=12084Clipmove2015-01-04T10:12:49Z<p>Helixhorned: More explicitly state requirements on written-to gamevars.</p>
<hr />
<div>'''clipmove''' <''return''> <''x''> <''y''> <z> <''sectnum''> <xvect> <yvect> <walldist> <flordist> <ceildist> <clipmask><br><br />
'''clipmovenoslide''' <''return''> <''x''> <''y''> <z> <''sectnum''> <xvect> <yvect> <walldist> <flordist> <ceildist> <clipmask><br />
<br />
Calculates the movement of any object, starting from position (<x>, <y>, <z>) and sector <sectnum>, in any direction at velocity (<xvect>, <yvect>), keeping the object will a distance <walldist> from walls, <flordist> from floors, and <ceildist> from ceilings.<br />
<br />
<clipmask> is a mask that tells whether the object should be clipped to or not. The lower 16 bits are bitwise ANDed with wall[].[[cstat(wall)|cstat]] and the higher 16 bits are bitwise ANDed with sprite[].[[cstat]].<br />
<br />
<''return''>, <''x''>, <''y''>, and <''sectnum''> must be writeable [[gamevar]]s, and may be modified as the result of the calculation.<br />
<br />
<''return''> value:<br />
<br />
0 (touched nothing)<br />
32768+wallnum (wall first touched)<br />
49152+spritenum (sprite first touched)<br />
<br />
[[Category:EDuke32 specific commands]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Break&diff=11838Break2014-04-21T19:20:39Z<p>Helixhorned: tweak last explanation</p>
<hr />
<div>A single '''break''' command can be<br />
used to stop code after the '''break''' from executing. Can also be used to exit a [[state]] early. Also used inside [[switch]] blocks to close '''[[case]]''' statements.<br />
<br />
Inside '''while''' loops, a '''break''' transfers control to the beginning of the loop where the condition for continuing the iteration is checked. This is in contrast to most imperative programming languages, where a '''break''' inside a loop transfers control to just after the end of the loop body (thus "breaking" it). For example, in CON, the snippet<br />
<br />
setvar j 0<br />
whilevarn j 3<br />
{<br />
addvar j 1<br />
userquote 500<br />
break // while is inner: "continue"<br />
userquote 400<br />
}<br />
<br />
makes quote 500 be displayed ''three'' times in total and quote 400 not a single time.<br />
<br />
[[Category:Duke3D 1.3/1.5 commands]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Break&diff=11837Break2014-04-21T19:17:56Z<p>Helixhorned: Document CON's weird 'break' behavior inside 'while' loops.</p>
<hr />
<div>A single '''break''' command can be<br />
used to stop code after the '''break''' from executing. Can also be used to exit a [[state]] early. Also used inside [[switch]] blocks to close '''[[case]]''' statements.<br />
<br />
Inside '''while''' loops, a '''break''' transfers control to the beginning of the loop where the condition for continuing the iteration is checked. This is in contrast to most imperative programming languages, where a '''break''' inside a loop transfers control to just after the end of the loop body (thus "breaking" it). For example, in CON, the snippet<br />
<br />
setvar j 0<br />
whilevarn j 3<br />
{<br />
addvar j 1<br />
userquote 500<br />
break // while is inner: "continue"<br />
}<br />
<br />
makes quote 500 be displayed ''three'' times in total.<br />
<br />
[[Category:Duke3D 1.3/1.5 commands]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Spriteflags&diff=11817Spriteflags2014-03-15T14:17:48Z<p>Helixhorned: Elaborate usage of spriteflags directive.</p>
<hr />
<div>Inside actor, state, and event code, the command<br /><br />
'''spriteflags''' <value><br /><br />
sets the [[htflags]] value for the current sprite.<br />
<br />
Outside of actors, states, and events, the directive<br/><br />
'''spriteflags''' <picnum> <value> <br/><br />
sets the same flags per-tile. At game time, this per-tile value is XORed with the per-sprite value, i.e. the setting of one to "true" reverses the other.<br/><br />
For a particular actor tile, the '''spriteflags''' directive should precede its actor definition, as well as uses of other '''sprite*''' flag modification directives.<br />
[[Category:Bitfields]]<br />
[[Category:EDuke32 specific commands]]<br />
[[Category:Sprite manipulation]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Build/Mapster32_Keyboard_Commands&diff=11796Build/Mapster32 Keyboard Commands2014-03-05T21:15:39Z<p>Helixhorned: /* 3D Mode: Keys */ Document r4361.</p>
<hr />
<div>== 3D Mode: Mouse ==<br />
The purpose of mouse in 3D mode is pointing at some objects in a map and looking around ('''F3''' toggles mouse look).<br><br />
<br />
Mouse pointer always points (see info about it at the bottom of the screen) at one of these objects:<br><br />
# wall<br />
# ceiling of sector<br />
# floor of sector<br />
# sprite<br />
# masked wall (non-transparent or semi-transparent wall between sectors)<br />
<br />
It's important to understand this concept:<br><br />
Some commands work differently depending on the current object (the object the mouse points at).<br><br />
Some commands manipulate only the current object, some commands manipulate the selected (also called "highlighted") sprites/sectors in 2D mode, and some commands work globally.<br><br />
<br />
====Mouse buttons====<br />
'''LEFT''' lock the current object. The current object won't be changing as long as the button is pressed.<br><br />
'''WHEEL''' change shade ('''+CTRL''': in increments of 4)<br><br />
'''WHEEL+ALT''' change visibility<br><br />
'''LEFT+WHEEL''' change tile<br><br />
'''RIGHT+WHEEL''' move object up/down<br><br />
'''MIDDLE''' temporary mouse look (when not in UnrealEd-style mouse mode)<br><br />
<br />
Additionally, there is UnrealEd-style mouse navigation in 3D mode (toggle it with '''F5'''), with the following bindings:<br><br />
'''RIGHT''' mouse look<br><br />
'''LEFT''' x: turning, y: move forward/back<br><br />
'''LEFT+RIGHT''' x: strafe left/right, y: move up/down<br><br />
'''MIDDLE''' y: move in viewing direction<br><br />
The console variable ''pk_uedaccel'' changes the speed of navigation exponentially (valid values are 0-5).<br><br />
<br />
It is possible to move around objects using the mouse and holding down specific modifier keys:<br><br />
'''LEFT+ALT''' move object up/down ('''+CTRL''': in larger increments)<br><br />
'''LEFT+SHIFT''' move sprite in horizontal plane ('''+CTRL''': grid-aligned)<br><br />
The two preceding controls also work on a set of sprites highlighted in 2D mode.<br><br />
'''LEFT+SHIFT''' pan ceiling/floor/wall texture<br><br />
'''LEFT+CTRL''' scale wall texture or size of sprite<br><br />
'''LEFT+CTRL''' change slope of floor/ceiling<br><br />
<br />
== 3D Mode: Selecting Tile Mode ==<br />
After pressing the '''V''' key in 3D mode, Mapster32 switches to "select tile" mode.<br><br />
<br />
====Keys====<br />
'''UP/DOWN/LEFT/RIGHT/PGUP/PGDN/HOME/END''' movements ('''CTRL''' modifies some commands)<br><br />
'''KP /''' zoom in<br><br />
'''KP *''' zoom out<br><br />
'''Z''' toggle tile zoom<br><br />
<br />
'''G''' goto specified tile<br><br />
'''U''' goto start of user defined art (3584)<br><br />
'''A''' goto start of Atomic edition's art (4096)<br><br />
'''E''' goto start of extended art (6144,9216)<br><br />
<br />
'''S''' Search for a named tile. When ^ is entered as the first character, anchor string at the beginning.<br />
<br />
'''V''' select from all tiles<br><br />
'''T''' select from pre-defined tile group which can be edited in tiles.cfg or added from within the tile selector. For this, press '''SPACE''' on the tiles to be grouped ('''CTRL-SPACE''' to select a range from starting from the last selection with '''SPACE'''). When you're ready, press '''Ctrl-G''' and you'll be queried for a group hotkey and name. The new tile group should now be saved persistently in tiles.cfg.<br><br />
<br />
'''ESC''' cancel<br><br />
'''ENTER''' accept<br><br />
<br />
====Mouse====<br />
'''LEFT''' select<br><br />
'''CTRL+WHEEL''' zoom<br><br />
'''WHEEL''' scroll<br><br />
'''RIGHT''' smooth scrolling<br><br />
<br />
== 3D Mode: Keys ==<br />
'''UP''' move forward<br><br />
'''DOWN''' move backward<br><br />
'''LEFT+RCTRL''' move left<br><br />
'''RIGHT+RCTRL''' move right<br><br />
'''A''' move up<br><br />
'''Z''' move down<br><br />
'''+LSHIFT''' speed up movements<br><br />
<br />
'''LEFT''' turn left<br><br />
'''RIGHT''' turn right<br><br />
'''A+CTRL''' look down<br><br />
'''Z+CTRL''' look up<br><br />
<br />
'''F1''' toggle help<br><br />
'''F3''' toggle mouselook<br><br />
'''F4''' toggle ambience sounds<br><br />
'''F5''' toggle UnrealEd-style mouse navigation<br><br />
'''F6''' toggle automatic SECTOREFFECTOR help<br><br />
'''F7''' toggle automatic sector tag help<br><br />
'''F9''' load and activate/deactivate maphacks<br><br />
'''F11''' brightness<br><br />
'''F12''' screenshot<br><br />
'''F12+SHIFT''' inverted screenshot<br><br />
<br />
'''' V''' set sector visibility<br><br />
'''; V''' set sector visibility on all selected sectors<br><br />
'''V''' choose tile<br><br />
'''3''' toggle Sector over Sector. See documentation here: http://www.users.on.net/~triforce/cduke3d/<br><br />
'''' BACKSPACE''' clear all flags for wall/sprite<br><br />
'''BACKSPACE''' clear nextwall ("red wall") link for aimed at wall<br><br />
'''' P''' paste palette to all selected sectors<br><br />
'''; P''' paste palette to all selected sectors & sprites<br><br />
<br />
'''S''' insert sprite<br><br />
'''DEL''' delete sprite<br><br />
''',''' rotate sprite<br><br />
'''.''' rotate sprite<br><br />
'''<''' slowly rotate sprite<br><br />
'''>''' slowly rotate sprite<br><br />
<br />
'''.''' (period): search & fix panning of the wall to the right (''',''' (comma): to the left), has 3 modifiers:<br><br />
'''+SHIFT''': auto-align at most one wall<br><br />
'''+ALT''': (since r4361: don't) copy over texel width in world units (i.e. "how much the wall is stretched")<br><br />
'''+'''' (quote): align immediate upper and lower TROR neighbors<br><br />
<br />
'''SPACE''' lock to object (same as left mouse button)<br><br />
'''PGUP/PGDN+ALT''' when aiming at red wall, select the floor or ceiling of the nextsector (useful for e.g. raising a lowered door when standing near it), depending on whether the aim is at the top or bottom of the wall<br><br />
<br />
'''CAPS LOCK''' cycle zmode<br><br />
'''' Z''' cycle zmode<br><br />
'''' L''' change the coordinates of the current object<br><br />
'''' M''' set the extra of the current object<br><br />
'''1''' toggle one sided sprite/wall<br><br />
'''2''' toggle bottom wall swapping<br><br />
'''O''' set top or bottom orientation of wall<br><br />
'''O''' ornament sprite onto wall<br><br />
'''M''' toggle masking wall<br><br />
'''H''' toggle hitscan sensitivity<br><br />
'''H+SHIFT''' toggle one side hitscan sensitivity for the wall<br><br />
'''' H''' set hitag of the current object<br><br />
<br />
'''KP_MINUS''' shades down individual sector/wall/sprite or selected sectors<br><br />
'''KP_MINUS+ALT''' decreases visibility of sector or selected sectors<br><br />
'''KP_MINUS+ALT+SHIFT''' slowly decreases visibility of sector or selected sectors<br><br />
'''KP_MINUS+ALT+CTRL''' decreases global visibility<br><br />
'''KP_PLUS''' shades up individual sector/wall/sprite or selected sectors<br><br />
'''KP_PLUS+ALT''' increases visibility of sector or selected sectors<br><br />
'''KP_PLUS+ALT+SHIFT''' slowly increases visibility of sector or selected sectors<br><br />
'''KP_PLUS+ALT+CTRL''' increases global visibility<br><br />
Note: '''ALT, CTRL, SHIFT''' are modifiers so they work with mouse too.<br><br />
<br />
'''PLUS/MINUS''' cycle tile<br><br />
'''E''' toggle sector texture expansion<br><br />
'''R''' toggle sector texture relativity alignment<br><br />
'''R''' cycle sprite aligment between: wall aligned, floor aligned, view aligned<br><br />
'''' R''' toggle framerate<br><br />
'''F''' flip the current object ('''+SHIFT''': reverse direction)<br><br />
'''F+ALT''' set the first wall of sector<br><br />
<br />
'''PAGE UP''' move up selected sprites or sectors<br><br />
'''PAGE DN''' move down selected sprites or sectors<br><br />
'''PAGE UP+CTRL''' put selected sprites on ceiling<br><br />
'''PAGE DN+CTRL''' put selected sprites on ground<br><br />
'''+CTRL''' speed up movement<br><br />
'''+END''' slow down movement<br><br />
'''+HOME''' slow down movement even more<br><br />
Note: '''CTRL, HOME, END''' are modifiers so they work with mouse too.<br><br />
<br />
'''N''' toggle 'no-autoshade'-bit of sprite<br><br />
'''' I''' toggle sprite invisibility<br><br />
'''' D''' cycle skill level<br><br />
'''' X''' toggle sprite shade and SE light effect preview<br><br />
'''' W''' toggle sprite display by class (no effectors/actors)<br><br />
'''' Y''' toggle purple background<br><br />
'''' C''' copy shade from the clipboard to all objects in the map which are the same tile as the tile of the object that in the clipboard. It works separately for sectors/walls/sprites depending on the current object. (I hope somebody who understands this, will clarify this)<br><br />
'''' T''' set lotag<br><br />
'''' H''' set hitag<br><br />
'''' S''' set shade<br><br />
'''G''' set picnum<br><br />
'''B''' toggle blocking<br><br />
'''B+SHIFT''' toggle one side blocking for the wall<br><br />
'''T''' cycles translucence for sprites/masked walls (and ceilings/floors for ROR)<br><br />
<br />
'''F2''' toggle clipboard preview<br><br />
'''F2+SHIFT''' toggle current sprite preview<br><br />
'''TAB''' copy to the clipboard<br><br />
'''LENTER+CTRL+SHIFT''' autoshade wall<br><br />
'''' LENTER''' paste picnum only<br><br />
'''; LENTER''' on ceilings/floors, auto-align with reference in '''TAB'''bed clipboard (incomplete for relative-aligned references)<br><br />
'''LENTER+SHIFT''' paste some visual (shading+pal) properties of the clipboard on sector/wall/sprite<br><br />
'''LENTER+CTRL''' paste some visual (picnum+shading+pal) properties of the clipboard on sector/wall/sprite<br><br />
'''LENTER''' paste all (picnum+shading+pal+flags+tags+extra) properties of the clipboard on sector/wall/sprite<br><br />
Note: some fields are only pasted if the type of 'thing' in the clipboard (wall/sprite/sector) equals that of the aimed at object<br><br />
<br />
'''C''' toggle center sprite<br><br />
'''ALT+C''' replace all tiles in the map with one from the clipboard<br><br />
<br />
'''' A''' toggle autosave. The interval is configurable (default: every 3 minutes)<br><br />
<br />
'''' N''' toggle noclip for the camera<br><br />
'''N+CTRL''' toggle noclip for sprites<br><br />
<br />
'''[''' slopes up fast<br><br />
'''[+RSHIFT''' slope up with medium speed<br><br />
'''[+LSHIFT''' slope up slowly<br><br />
'''[+ALT''' align slope to the floor of adjoining sector<br><br />
''']''' slope down fast<br><br />
''']+RSHIFT''' slope down with medium speed<br><br />
''']+LSHIFT''' slope down slowly<br><br />
''']+ALT''' align slope to the ceiling of adjoining sector<br><br />
<br />
'''KP_4''' panning floor/ceiling horizontally<br><br />
'''KP_6''' panning floor/ceiling horizontally<br><br />
'''KP_2''' panning floor/ceiling vertically<br><br />
'''KP_8''' panning floor/ceiling vertically<br><br />
'''KP_4''' scaling wall/sprite horizontally<br><br />
'''KP_6''' scaling wall/sprite horizontally<br><br />
'''KP_2''' scaling wall/sprite vertically<br><br />
'''KP_8''' scaling wall/sprite vertically<br><br />
'''+SHIFT''' or '''+ALT''' force panning (for walls); the latter is an alternative if Shift-KP5-KP*-combinations are dead.<br><br />
'''+KP_5''' speed up<br><br />
<br />
'''/''' Reset panning, repeat and flags to defaults<br><br />
'''/+SHIFT''' set xrepeat to yrepeat (makes square)<br><br />
<br />
'''P''' enable/disable parallax<br><br />
'''P+CTRL''' change parallax type (works only in classic render, not saved into maps)<br><br />
'''P+CTRL''' Playtest map from current position<br><br />
'''P+ALT+CTRL''' Playtest map from start position<br><br />
'''P+ALT''' change pal of sector/wall/sprite<br><br />
'''D+ALT''' adjust clip distance of the sprite<br><br />
'''RENTER''' switch to 2D mode<br><br />
<br />
'''S+CTRL''' save map<br><br />
'''L+CTRL''' load last saved map<br><br />
<br />
'''ESC''' quit<br><br />
<br />
== 2D Mode: Mouse ==<br />
The purpose of mouse in 2D mode is pointing, selecting, moving object in a map.<br />
<br />
Every time mouse is pointing at one of these:<br><br />
# Nothing<br />
# Sector<br />
# Sector and wall<br />
# Sector and sprite<br />
# Wall (wall without sector - map is corrupt)<br />
# Sprite (sprite without sector - map is corrupt)<br />
<br />
Some commands work differently depending on the current object (the object the mouse points at).<br> To solve the ambiguity between sectors and walls/sprites, one usually must press ALT to work with walls/sprites instead of sectors.<br><br />
<br />
===='''RSHIFT''' (select vertices/sprites) modifiers====<br />
* ''';''': set difference<br><br />
* ''' ' ''' (quote character): set union<br><br />
(note that they have to be depressed when '''RSHIFT''' is ''released'')<br><br />
* '''RCTRL''' select only sprites (not walls)<br />
* '''END''' select from all sectors, even grayed out ones<br />
<br><br />
===='''RALT''' (select sectors) modifiers====<br />
* ''';''': set difference<br><br />
* ''' ' ''' (quote character): set union<br><br />
(note that they have to be depressed when '''RALT''' is ''released'')<br><br />
* when '''RCTRL''' is pressed at '''RALT''' release time, then for a sector to be selected, it must be "inside" the mouse pointer instead of being surrounded by the rectangle<br><br />
* when holding '''RSHIFT''', will select all sectors, even grayed out ones<br><br />
See the [[#TROR related keys|TROR section]] for '''HOME''' and '''END''' modifiers.<br />
<br><br />
<br><br />
'''WHEEL''' zoom<br><br />
'''WHEEL+ALT''' move camera and zoom<br><br />
'''LEFT BUTTON''' drag sectors/vertices/sprites<br><br />
'''RIGHT BUTTON''' move camera<br><br />
'''RIGHT MIDDLE''' move camera<br><br />
<br><br />
'''LSHIFT'''+'''LMB''' (with RSHIFT-highlighted points) interactively scale highlighted points (+'''CTRL''' forces square aspect)<br><br />
'''LSHIFT'''+'''RMB''' (with RSHIFT-highlighted points) interactively rotate highlighted points<br><br />
If '''LSHIFT''' is released before the mouse button, the interactive scaling/rotation is canceled.<br><br />
<br />
== 2D Mode: Keys ==<br />
'''F1''' show help<br><br />
'''F2''' show sound index<br><br />
'''F3''' enter/quit side-view mode<br><br />
'''in side-view mode:'''<br><br />
* '''Q''', '''W''': orbit around center<br />
* '''A''', '''Z''': change azimuth<br />
* '''MMB''': change "player" z<br />
* '''RMB''': change "player" x/y<br />
'''F4''' toggle first wall preview<br><br />
'''F5''' show item count<br><br />
'''F6''' show actor count when pointed at wall<br><br />
'''F6''' show Sector Effector help when pointed at sprite<br><br />
'''F7''' edit sector data<br><br />
'''F8''' edit wall/sprite data<br><br />
'''F9''' show the Sector Tags help<br><br />
'''F12''' screenshot<br><br />
'''F12+SHIFT''' inverted screenshot<br><br />
<br />
'''SCROLL LOCK''' set starting position<br><br />
<br />
'''LSHIFT''' show coordinates/linking sprites<br><br />
'''LSHIFT+[''', '''LSHIFT+]''' cycle linking sprites<br><br />
<br><br />
'''M''' set extra of sector<br><br />
'''M+ALT''' set extra of wall/sprite<br><br />
'''/''' Reset panning, repeat and flags to defaults<br><br />
'''/+SHIFT''' set xrepeat to yrepeat (makes square)<br><br />
<br />
'''KP_4''' scaling sprite horizontally<br><br />
'''KP_6''' scaling sprite horizontally<br><br />
'''KP_2''' scaling sprite vertically<br><br />
'''KP_8''' scaling sprite vertically<br><br />
'''+KP_5''' speed up<br><br />
<br><br />
'''R''' cycle sprite alignment<br><br />
'''' S''' set sprite size<br><br />
'''' F''' function menu<br><br />
'''F7+ALT''' search sector lotag<br><br />
'''F8+ALT''' on wall: search wall lotag<br><br />
'''F8+ALT''' on sprite: generic sprite search<br><br />
'''[''' search backward<br><br />
''']''' search forward<br><br />
'''G''' cycle grid size<br><br />
'''G+SHIFT''' cycle grid size backward<br><br />
'''' L''' set sprite/wall coordinates<br><br />
'''' 3''' cycle modes of showing object's name<br><br />
'''' 7''' swap lotag and hitag of wall/sprite<br><br />
'''' J''' jump to position of object (asks for sector/wall/sprite, or x,y)<br><br />
<br />
'''[+ALT''' goto previous corruption<br><br />
''']+ALT''' goto next corruption<br><br />
<br />
'''X''' flip selected sectors in x<br><br />
'''Y''' flip selected sectors in y<br><br />
'''X+ALT''' mirror selected sectors in x<br><br />
'''Y+ALT''' mirror selected sectors in y<br><br />
<br />
'''B''' toggle blocking<br><br />
'''B+SHIFT''' toggle one side blocking for wall<br><br />
'''F+ALT''' set the first wall of sector<br><br />
'''O''' ornament sprite onto wall<br><br />
<br />
''',''' rotate sprite/selected sectors<br><br />
'''.''' rotate sprite/selected sectors<br><br />
'''<''' [i.e. ''',+SHIFT'''] slowly rotate sprite/selected sectors<br><br />
'''>''' [i.e. '''.+SHIFT'''] slowly rotate sprite/selected sectors<br><br />
''',+ALT''', '''.+ALT''' rotate highlighted sectors by a manually entered angle<br><br />
<br><br />
'''T''' set sector lotag<br><br />
'''T+ALT''' set wall/sprite lotag<br><br />
'''T+CTRL''' toggle show tags<br><br />
<br />
'''H''' set sector hitag<br><br />
'''H+ALT''' set wall/sprite hitag<br><br />
'''H+CTRL''' toggle hitscan sensitivity<br><br />
'''H+CTRL+SHIFT''' toggle hitscan sensitivity<br><br />
<br />
'''P''' set sector pal<br><br />
'''E''' set sprite status list<br><br />
'''TAB''' show sector data<br><br />
'''TAB+SHIFT''' show wall/sprite data<br><br />
'''TAB+CTRL''' enable/disable filling of aimed-at sector<br><br />
<br />
'''LCTRL+RSHIFT''' select all walls of the current sector (point at a wall and holding '''LCTRL''', press and release '''RSHIFT'''). Set ops (see RSHIFT above) work too.<br><br />
'''A''' zoom in<br><br />
'''Z''' zoom out<br><br />
'''L''' toggle grid lock<br><br />
'''J''' join sectors<br><br />
'''S''' insert sprite, pressing a key from '''1''' to '''0''' on the upper row before pressing '''S''' will make the inserted sprite's picnum be 1 to 10, respectively<br><br />
'''S+ALT''' make inner sector<br><br />
'''C''' duplicate sectors/sprites<br><br />
'''C''' start circle attached to a wall<br><br />
'''KP +''' increase amount of walls in circle<br><br />
'''KP -''' decrease amount of walls in circle<br><br />
<br><br />
'''SPACE''' start/end drawing of sector, end drawing of circle<br><br />
'''LENTER''' when having some walls drawn, insert points at intersections with existing walls; clear drawn walls then<br><br />
'''LENTER''' check nextwall pointer for the highlighted line<br><br />
'''LENTER''' when having drawn some walls, batch-insert points where the drawn lines intersect with non-grayed-out walls<br><br />
'''LSHIFT+LCTRL+LENTER''' check ALL pointers (manual attempt to recover map)<br><br />
'''BACKSPACE''' remove the last wall during drawing sector<br><br />
'''DEL''' delete sprite<br><br />
'''DEL+CTRL''' delete sector<br><br />
'''DEL+CTRL+LShift''' delete highlighted sectors<br><br />
'''INS''' duplicate sectors/sprites<br><br />
'''INS''' start circle attached to a wall<br><br />
'''INS''' add vertex to wall<br><br />
'''RENTER''' switch to 3D mode<br><br />
'''ESC''' menu<br><br />
<br><br />
'''' A''' toggle autosave(every 3 minutes)<br><br />
'''' N''' toggle noclip<br><br />
'''S+CTRL''' save map<br><br />
'''L+CTRL''' load map<br><br />
<br />
'''P+CTRL''' Playtest map from current position<br><br />
'''P+CTRL+ALT''' Playtest map from start position<br><br />
<br />
'''R+CTRL''' manual grayout: if some sectors are highlighted, make the editable z range [min ceiling z, max floor z] of those; else reset z limits<br />
<br />
==TROR related keys==<br />
===2D mode===<br />
'''E+CTRL''' sector extension prompt (sectors to extend must be highlighted)<br><br />
'''E+CTRL''' make sandwich [''needs better explanation'']<br><br />
'''E+CTRL''' punch loop through extension (loop points must be highlighted, e.g. with '''RSHIFT'''+'''LCTRL''')<br><br />
<br><br />
'''A+CTRL''' toggle auto-grayout of non-extended sectors<br><br />
'''J+CTRL''' TROR-join sectors. The selection must consist of the two sets of sectors you wish to join.<br><br />
'''U+CTRL''' Clear extension: delete the bunch (i.e. ceiling-floor connection) of the aimed-at sector's floor<br><br />
'''PGUP'''/'''PGDN''' Change 'player' height in discrete steps in order to go through the different levels<br><br />
'''TAB+CTRL''' Display one currently aimed at sector (of potentially many that lie under the mouse crosshair)<br><br />
'''HOME''' and '''END''' (as modifiers to '''RALT'''): select all sectors whose floor's/ceiling's bunchnum equal the bunchnum of the aimed at sector (useful for further operations on whole bunches)<br />
<br />
===3D mode===<br />
'''I''' invisibility preview: toggle fake ROR texture on non-masked portals<br><br />
'''LENTER+CTRL''' When aiming at an extended floor/ceiling, paste to all floors/ceilings of the bunch of the aimed at one<br><br />
'''T''', '''B''' and '''H''' work as with walls, though they set/toggle the bits only on '''one''' side<br><br />
<br />
==Some console commands/variables==<br />
<br />
See "help <console-command/var>" for help on a particular command/variable.<br />
<br />
pk_quickmapcycling<br><br />
pk_uedaccel<br><br />
osd_tryscript<br><br />
sideview_reversehorizrot<br><br />
fixmaponsave_sprites<br><br />
show_heightindicators<br><br />
show_ambiencesounds<br><br />
corruptcheck_noalreadyrefd<br><br />
corruptcheck<br><br />
<br />
==Mapster32 keys as tables (unmaintained and obsolete)==<br />
<br />
Below are the Mapster32 keys as three sortable tables. They are sorted such that the more 'basic' keys are at the top.<br><br />
<br><br />
The column headers have the following meaning:<br><br />
<br />
'''key/keys''': self-explanatory. Where a key starts with a '+' on a line of its own,<br>&nbsp;&nbsp;&nbsp;&nbsp;it means that it should be pressed simultaneously with the first one in the<br />
same table row.<br><br />
'''type''': type of command: info=informational, edit=editing, navi=navigation,<br />
disp=display, misc=miscellany<br><br />
'''sec''', '''spr''','''wal''': in case of an editing command, whether it<br />
potentially acts on '''sec'''tors, '''spr'''ites, and/or '''wal'''ls.<br><br />
'''adv''': whether the command is 'advanced'. This is set somewhat arbitrarily.<br><br />
'''new''': whether the functionality of the command is new to Mapster32. An '''e''' means that it's enhanced from BUILD.<br><br />
'''N''': a running number. To restore the original order, sort by it.<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="2" cellspacing="0"<br />
|+ '''Mapster 32 keys &mdash; shared keys for 2D and 3D mode'''<br />
|- bgcolor="#f0f0f0"<br />
! key/keys!!description!!type!!sec<br>!!spr<br>!!wal<br>!!adv<br>!!new<br>!!N<br />
|-<br />
! F1<br />
|help||info||||||||<center>n</center>||<center>'''y'''</center>||0<br />
|-<br />
! UP/DOWN <br> LEFT/RIGHT <br> &nbsp;&nbsp;+LShift<br />
|move forward/back <br> turn left/right ('''+RCtrl''': strafe) <br> speed up movements||navi||||||||<center>n</center>||<center>n</center>||1<br />
|-<br />
! RENTER<br />
|toggle between 2D and 3D modes||misc||||||||<center>n</center>||<center>n</center>||2<br />
|-<br />
! B <br />
|toggle blocking of wall/sprite ('''+Shift''': one-sided)||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||3<br />
|-<br />
! R<br />
|cycle sprite aligment||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||4<br />
|-<br />
! ,/.<br />
|rotate sprite ('''+Shift''': slowly)||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||5<br />
|-<br />
! DEL<br />
|delete sprite||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||6<br />
|-<br />
! /<br />
|reset panning, repeat and flags||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||7<br />
|-<br />
! Alt+F<br />
|set first wall of sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||8<br />
|-<br />
! /+Shift<br />
|set xrepeat to yrepeat (make square)||edit||||<center>'''x'''</center>||||<center>'''y'''</center>||<center>'''y'''</center>||9<br />
|-<br />
! \'N <br />
|toggle camera clipping||navi||||||||<center>'''y'''</center>||<center>'''y'''</center>||10<br />
|-<br />
! Ctrl+N<br />
|toggle sprite clipping through floors/ceilings||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||11<br />
|-<br />
! \'A <br />
|toggle autosave (interval configurable in mapster32.cfg)||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||12<br />
|-<br />
! (Shift+)F12<br />
|capture (inverted) screenshot||misc||||||||<center>n</center>||<center>n</center>||13<br />
|-<br />
! Ctrl+L<br />
|load map||misc||||||||<center>n</center>||<center>n</center>||14<br />
|-<br />
! Ctrl+S<br />
|save map||misc||||||||<center>n</center>||<center>n</center>||15<br />
|-<br />
! Ctrl+P<br />
|playtest map from current position||misc||||||||<center>n</center>||<center>'''y'''</center>||16<br />
|-<br />
! Ctrl+Alt+P<br />
|playtest map from starting position||misc||||||||<center>n</center>||<center>'''y'''</center>||17<br />
|}<br />
<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="2" cellspacing="0"<br />
|+ '''Mapster 32 keys &mdash; 2D mode'''<br />
|- bgcolor="#f0f0f0"<br />
! key/keys!!description!!type!!sec<br>!!spr<br>!!wal<br>!!adv<br>!!new<br>!!N<br />
|-<br />
! A/Z<br />
|zoom in/out||disp||||||||<center>n</center>||<center>n</center>||0<br />
|-<br />
! L<br />
|toggle grid lock||edit||||||||<center>n</center>||<center>n</center>||1<br />
|-<br />
! G (+Shift)<br />
|cycle grid size (backwards), set auto grid||edit||||||||<center>n</center>||<center>'''e'''</center>||2<br />
|-<br />
! S<br />
|insert sprite <br>(prefix 1-0 on upper row: set picnum to 1-10, resp.)||edit||||||||<center>n</center>||<center>'''e'''</center>||3<br />
|-<br />
! O<br />
|ornament sprite onto wall||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||4<br />
|-<br />
! J<br />
|join sectors||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||5<br />
|-<br />
! P<br />
|set sector pal||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||6<br />
|-<br />
! Ctrl+H<br />
|toggle hitscan sensitivity||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||7<br />
|-<br />
! T (+Alt)<br />
|set lotag of sector (wall/sprite)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||8<br />
|-<br />
! H (+Alt)<br />
|set hitag of sector (wall/sprite)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||9<br />
|-<br />
! KP4/6/2/8<br />
|scale sprite (+'''KP5''': speed up)||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||10<br />
|-<br />
! SPACE<br />
|draw sector; end circle drawing||edit||||||||<center>n</center>||<center>n</center>||11<br />
|-<br />
! BACKSPACE<br />
|remove last wall when drawing sector||edit||||||||<center>n</center>||<center>n</center>||12<br />
|-<br />
! BACKSPACE<br />
|cycle 2D display mode (textured/non-textured)||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||13<br />
|-<br />
! INS<br />
|add vertex to wall||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||14<br />
|-<br />
! DEL+Ctrl<br />
|delete sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||15<br />
|-<br />
! C <br> KP+/KP-<br />
|start circle drawing from wall <br> increase/decrease amount of walls in circle||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||16<br />
|-<br />
! Alt+S<br />
|make sector from inner loop||edit||||||||<center>n</center>||<center>n</center>||17<br />
|-<br />
! RShift <br> &nbsp;&nbsp; +;/'<br />
|select group of walls and sprites <br> set difference/union||edit||||||||<center>n</center>||<center>n</center>||18<br />
|-<br />
! RAlt <br> &nbsp;&nbsp; +;/' <br> &nbsp;&nbsp;+RCtrl<br />
|select group of sectors <br> set difference/union <br> point sector selection||edit||||||||<center>n</center>||<center>n</center>||19<br />
|-<br />
! INS or C<br />
|duplicate selected sectors/sprites||edit||||||||<center>n</center>||<center>n</center>||20<br />
|-<br />
! SCROLLLOCK<br />
|set starting position||edit||||||||<center>n</center>||<center>n</center>||21<br />
|-<br />
! TAB<br />
|show sector data||info||||||||<center>n</center>||<center>n</center>||22<br />
|-<br />
! TAB+Ctrl <br> (or TAB+Shift)<br />
|show wall/sprite data||info||||||||<center>n</center>||<center>'''y'''</center>||23<br />
|-<br />
! LShift<br />
|show coords||info||||||||<center>n</center>||<center>'''y'''</center>||24<br />
|-<br />
! M (+Alt)<br />
|set extra of sector (wall/sprite)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||25<br />
|-<br />
! E<br />
|set sprite status list||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||26<br />
|-<br />
! Ctrl+T<br />
|toggle show tags||disp||||||||<center>'''y'''</center>||<center>n</center>||27<br />
|-<br />
! '3<br />
|cycle modes of showing object's name||disp||||||||<center>'''y'''</center>||<center>n</center>||28<br />
|-<br />
! '7<br />
|swap lotag and hitag of wall/sprite||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||29<br />
|-<br />
! 'J<br />
|jump to position (X,Y)||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||30<br />
|-<br />
! 'S<br />
|set sprite size||edit||||<center>'''x'''</center>||||<center>'''y'''</center>||<center>'''y'''</center>||31<br />
|-<br />
! 'L<br />
|set wall/sprite coordinates||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||32<br />
|-<br />
! 'F<br />
|Special functions menu<blockquote>''Replace invalid tiles''<br>''Delete all spr of tile #''<br>''Set map sky shade''<br>''Set map sky height''<br>''Global Z coord shift''<br>''Resize selection''<br>''Global shade divide''<br>''Global visibility divide''</blockquote>||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||33<br />
|-<br />
! X/Y (+Alt)<br />
|flip (mirror) selected sectors in x/y||edit||<center>'''x'''</center>||||||<center>'''y'''</center>||<center>'''y'''</center>||34<br />
|-<br />
! F2<br />
|show sound index (root CON file to fetch sound <br>definitions from can be specified at startup; <br>default is GAME.CON)||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||35<br />
|-<br />
! F4<br />
|toggle first wall highlighting||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||36<br />
|-<br />
! F5<br />
|show item count||info||||||||<center>'''y'''</center>||<center>n</center>||37<br />
|-<br />
! F6<br />
|show actor count (when pointed at sprite: SE help)||info||||||||<center>'''y'''</center>||<center>n</center>||38<br />
|-<br />
! F7<br />
|edit sector data||edit||<center>'''x'''</center>||||||<center>'''y'''</center>||<center>'''y'''</center>||39<br />
|-<br />
! F8<br />
|edit wall/sprite data||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||40<br />
|-<br />
! F9<br />
|show ST help||info||||||||<center>'''y'''</center>||<center>n</center>||41<br />
|-<br />
! Alt+F7<br />
|search sector by tag||info||||||||<center>'''y'''</center>||<center>n</center>||42<br />
|-<br />
! Alt+F8<br />
|search wall by tag/search sprite||info||||||||<center>'''y'''</center>||<center>'''e'''</center>||43<br />
|-<br />
! ]/[<br />
|search forward/backward||info||||||||<center>'''y'''</center>||<center>n</center>||44<br />
|-<br />
! LCtrl+RShift<br />
|select all walls of current sector <br>(point at a wall and holding '''LCtrl''', press '''RShift''')||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||45<br />
|-<br />
! LENTER<br />
|check pointers for current sector <br>('''+LCtrl+LShift''': check ALL pointers)||edit||||||||<center>'''y'''</center>||<center>n</center>||46<br />
|}<br />
<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="2" cellspacing="0"<br />
|+ '''Mapster 32 keys &mdash; 3D mode'''<br />
|- bgcolor="#f0f0f0"<br />
! key/keys!!description!!type!!sec<br>!!spr<br>!!wal<br>!!adv<br>!!new<br>!!N<br />
|-<br />
! A/Z <br> &nbsp;&nbsp;+Ctrl <br> &nbsp;&nbsp;+LShift<br />
|move up/down <br> look down/up <br> speed up movements||navi||||||||<center>n</center>||<center>n</center>||0<br />
|-<br />
! CAPSLOCK or 'Z<br />
|cycle zmode||navi||||||||<center>n</center>||<center>n</center>||1<br />
|-<br />
! KP+/KP-<br />
|change shade||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||2<br />
|-<br />
! KP+/KP-+Alt <br> &nbsp;&nbsp;+Alt+Shift <br> &nbsp;&nbsp;+Ctrl+Alt<br />
|change visibility <br> change visibility in smaller increments <br> change global visibility||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||3<br />
|-<br />
! ]/[ <br> &nbsp;&nbsp;+RShift <br> &nbsp;&nbsp;+LShift<br />
|slope down/up <br> smaller increments <br> smallest increments ||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||4<br />
|-<br />
! [+Alt<br />
|align slope to floor of adjoining sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||5<br />
|-<br />
! ]+Alt<br />
|align slope to ceiling of adjoining sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||6<br />
|-<br />
! PGUP/PGDN <br> &nbsp;&nbsp;+END <br> &nbsp;&nbsp;+HOME<br />
|move object up/down ('''+Ctrl''' on sectors: 4x) <br> 1/2 of normal increments <br> 1/4 of normal increments||edit||<center>'''x'''</center>||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||7<br />
|-<br />
! PGUP+Ctrl<br />
|put sprite on ceiling||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||8<br />
|-<br />
! PGDN+Ctrl<br />
|put sprite on ground||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||9<br />
|-<br />
! KP4/6/2/8 <br> &nbsp;&nbsp;+Shift or +Alt<br>&nbsp;&nbsp;+KP5<br />
|pan floor/ceiling or scale wall/sprite <br>force panning <br> speed up||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||10<br />
|-<br />
! V<br />
|choose tile||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||11<br />
|-<br />
! S<br />
|insert sprite||edit||||||||<center>n</center>||<center>n</center>||12<br />
|-<br />
! G<br />
|set picnum||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||13<br />
|-<br />
! E<br />
|toggle sector texture expansion||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||14<br />
|-<br />
! F<br />
|flip texture||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||15<br />
|-<br />
! R<br />
|toggle sector texture relativity||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||16<br />
|-<br />
! 'T<br />
|set lotag||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||17<br />
|-<br />
! 'H<br />
|set hitag||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||18<br />
|-<br />
! 'S<br />
|set shade||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||19<br />
|-<br />
! Alt+P<br />
|set pal||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||20<br />
|-<br />
! 1<br />
|toggle one sided sprite/wall||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||21<br />
|-<br />
! 2<br />
|toggle bottom wall swapping||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||22<br />
|-<br />
! M<br />
|toggle masking wall||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||23<br />
|-<br />
! O<br />
|toggle wall orientation||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||24<br />
|-<br />
! O<br />
|ornament sprite onto wall||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||25<br />
|-<br />
! C<br />
|toggle sprite centering||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||26<br />
|-<br />
! H<br />
|toggle hitscan sensitivity ('''+Shift''': one-sided)||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||27<br />
|-<br />
! T<br />
|cycle translucence||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||28<br />
|-<br />
! P<br />
|toggle parallax||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||29<br />
|-<br />
! 'V<br />
|set sector visibility||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||30<br />
|-<br />
! Ctrl+P (obsolete)<br />
|change parallax type (classic renderer only)||edit||||||||<center>n</center>||<center>n</center>||31<br />
|-<br />
! .<br />
|search &amp; fix panning of the wall to the right||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||32<br />
|-<br />
! 'L<br />
|set coordinates||edit||<center>'''x'''</center>||<center>'''x'''</center>||||<center>n</center>||<center>'''y'''</center>||33<br />
|-<br />
! 'M<br />
|set extra||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||34<br />
|-<br />
! +/-<br />
|cycle tile||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||35<br />
|-<br />
! TAB<br />
|copy to clipboard||edit||||||||<center>n</center>||<center>n</center>||36<br />
|-<br />
! LENTER<br />
|paste all (pic+shade+pal+flags+tags+extra)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||37<br />
|-<br />
! 'LENTER<br />
|paste picnum only||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||38<br />
|-<br />
! LENTER+Shift<br />
|paste shading+pal||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||39<br />
|-<br />
! LENTER+Ctrl<br />
|paste picnum+shading+pal||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||40<br />
|-<br />
! Alt+C<br />
|replace all "same" tiles with clipboard tile||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||41<br />
|-<br />
! Alt+D<br />
|adjust clipping distance of sprite||edit||||<center>'''x'''</center>||||<center>'''y'''</center>||<center>n</center>||42<br />
|-<br />
! ;V<br />
|set sector visibility on all selected sectors||edit||<center>'''x'''</center>||||||<center>'''y'''</center>||<center>'''y'''</center>||43<br />
|-<br />
! 3<br />
|toggle Sector over Sector <br>(see http://www.users.on.net/~triforce/cduke3d/)||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||44<br />
|-<br />
! 'BACKSPACE<br />
|clear all flags for wall/sprite||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||45<br />
|-<br />
! 'P<br />
|set palette of all sprites/walls/floors/ceilings <br>(respectively) in all selected sectors||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||46<br />
|-<br />
! ;P<br />
|set palette of all sprites/walls/floors/ceilings <br>in all selected sectors||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||47<br />
|-<br />
! Ctrl+Shift<br>+LENTER<br />
|autoshade wall||edit||||||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||48<br />
|-<br />
! F2<br />
|toggle clipboard preview||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||49<br />
|-<br />
! F2+Shift<br />
|toggle current tile display||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||50<br />
|-<br />
! F3<br />
|toggle mouselook||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||51<br />
|-<br />
! F4<br />
|toggle ambient sounds||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||52<br />
|-<br />
! F5<br />
|toggle mouse navigation||navi||||||||<center>'''y'''</center>||<center>'''y'''</center>||53<br />
|-<br />
! F6<br />
|toggle automatic SE help||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||54<br />
|-<br />
! F7<br />
|toggle automatic ST help||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||55<br />
|-<br />
! F9<br />
|reload and activate maphacks||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||56<br />
|-<br />
! F10<br />
|disable maphacks||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||57<br />
|-<br />
! F11<br />
|cycle brightness||misc||||||||<center>n</center>||<center>n</center>||58<br />
|-<br />
! 'D<br />
|cycle skill level||disp||||||||<center>'''y'''</center>||<center>n</center>||59<br />
|-<br />
! 'X<br />
|toggle sprite shade preview||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||60<br />
|-<br />
! 'W<br />
|toggle sprite display||disp||||||||<center>'''y'''</center>||<center>n</center>||61<br />
|-<br />
! 'Y<br />
|toggle purple background||disp||||||||<center>'''y'''</center>||<center>n</center>||62<br />
|-<br />
! 'C<br />
|copy shade from clipboard to all "same" objects||edit||||||||<center>'''y'''</center>||<center>n</center>||63<br />
|-<br />
! 'R<br />
|toggle framerate display||info||||||||<center>'''y'''</center>||<center>n</center>||64<br />
|-<br />
! Ctrl+T<br />
|when pointing on a letter sprite: text entry tool <br>(alphabets are configurable in tiles.cfg)||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||65<br />
|}</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Build/Mapster32_Keyboard_Commands&diff=11749Build/Mapster32 Keyboard Commands2014-01-25T19:53:40Z<p>Helixhorned: Move interactive scaling/rotation keys to "2D Mode: Mouse" subsection</p>
<hr />
<div>== 3D Mode: Mouse ==<br />
The purpose of mouse in 3D mode is pointing at some objects in a map and looking around ('''F3''' toggles mouse look).<br><br />
<br />
Mouse pointer always points (see info about it at the bottom of the screen) at one of these objects:<br><br />
# wall<br />
# ceiling of sector<br />
# floor of sector<br />
# sprite<br />
# masked wall (non-transparent or semi-transparent wall between sectors)<br />
<br />
It's important to understand this concept:<br><br />
Some commands work differently depending on the current object (the object the mouse points at).<br><br />
Some commands manipulate only the current object, some commands manipulate the selected (also called "highlighted") sprites/sectors in 2D mode, and some commands work globally.<br><br />
<br />
====Mouse buttons====<br />
'''LEFT''' lock the current object. The current object won't be changing as long as the button is pressed.<br><br />
'''WHEEL''' change shade ('''+CTRL''': in increments of 4)<br><br />
'''WHEEL+ALT''' change visibility<br><br />
'''LEFT+WHEEL''' change tile<br><br />
'''RIGHT+WHEEL''' move object up/down<br><br />
'''MIDDLE''' temporary mouse look (when not in UnrealEd-style mouse mode)<br><br />
<br />
Additionally, there is UnrealEd-style mouse navigation in 3D mode (toggle it with '''F5'''), with the following bindings:<br><br />
'''RIGHT''' mouse look<br><br />
'''LEFT''' x: turning, y: move forward/back<br><br />
'''LEFT+RIGHT''' x: strafe left/right, y: move up/down<br><br />
'''MIDDLE''' y: move in viewing direction<br><br />
The console variable ''pk_uedaccel'' changes the speed of navigation exponentially (valid values are 0-5).<br><br />
<br />
It is possible to move around objects using the mouse and holding down specific modifier keys:<br><br />
'''LEFT+ALT''' move object up/down ('''+CTRL''': in larger increments)<br><br />
'''LEFT+SHIFT''' move sprite in horizontal plane ('''+CTRL''': grid-aligned)<br><br />
The two preceding controls also work on a set of sprites highlighted in 2D mode.<br><br />
'''LEFT+SHIFT''' pan ceiling/floor/wall texture<br><br />
'''LEFT+CTRL''' scale wall texture or size of sprite<br><br />
'''LEFT+CTRL''' change slope of floor/ceiling<br><br />
<br />
== 3D Mode: Selecting Tile Mode ==<br />
After pressing the '''V''' key in 3D mode, Mapster32 switches to "select tile" mode.<br><br />
<br />
====Keys====<br />
'''UP/DOWN/LEFT/RIGHT/PGUP/PGDN/HOME/END''' movements ('''CTRL''' modifies some commands)<br><br />
'''KP /''' zoom in<br><br />
'''KP *''' zoom out<br><br />
'''Z''' toggle tile zoom<br><br />
<br />
'''G''' goto specified tile<br><br />
'''U''' goto start of user defined art (3584)<br><br />
'''A''' goto start of Atomic edition's art (4096)<br><br />
'''E''' goto start of extended art (6144,9216)<br><br />
<br />
'''S''' Search for a named tile. When ^ is entered as the first character, anchor string at the beginning.<br />
<br />
'''V''' select from all tiles<br><br />
'''T''' select from pre-defined tile group which can be edited in tiles.cfg or added from within the tile selector. For this, press '''SPACE''' on the tiles to be grouped ('''CTRL-SPACE''' to select a range from starting from the last selection with '''SPACE'''). When you're ready, press '''Ctrl-G''' and you'll be queried for a group hotkey and name. The new tile group should now be saved persistently in tiles.cfg.<br><br />
<br />
'''ESC''' cancel<br><br />
'''ENTER''' accept<br><br />
<br />
====Mouse====<br />
'''LEFT''' select<br><br />
'''CTRL+WHEEL''' zoom<br><br />
'''WHEEL''' scroll<br><br />
'''RIGHT''' smooth scrolling<br><br />
<br />
== 3D Mode: Keys ==<br />
'''UP''' move forward<br><br />
'''DOWN''' move backward<br><br />
'''LEFT+RCTRL''' move left<br><br />
'''RIGHT+RCTRL''' move right<br><br />
'''A''' move up<br><br />
'''Z''' move down<br><br />
'''+LSHIFT''' speed up movements<br><br />
<br />
'''LEFT''' turn left<br><br />
'''RIGHT''' turn right<br><br />
'''A+CTRL''' look down<br><br />
'''Z+CTRL''' look up<br><br />
<br />
'''F1''' toggle help<br><br />
'''F3''' toggle mouselook<br><br />
'''F4''' toggle ambience sounds<br><br />
'''F5''' toggle UnrealEd-style mouse navigation<br><br />
'''F6''' toggle automatic SECTOREFFECTOR help<br><br />
'''F7''' toggle automatic sector tag help<br><br />
'''F9''' load and activate/deactivate maphacks<br><br />
'''F11''' brightness<br><br />
'''F12''' screenshot<br><br />
'''F12+SHIFT''' inverted screenshot<br><br />
<br />
'''' V''' set sector visibility<br><br />
'''; V''' set sector visibility on all selected sectors<br><br />
'''V''' choose tile<br><br />
'''3''' toggle Sector over Sector. See documentation here: http://www.users.on.net/~triforce/cduke3d/<br><br />
'''' BACKSPACE''' clear all flags for wall/sprite<br><br />
'''BACKSPACE''' clear nextwall ("red wall") link for aimed at wall<br><br />
'''' P''' paste palette to all selected sectors<br><br />
'''; P''' paste palette to all selected sectors & sprites<br><br />
<br />
'''S''' insert sprite<br><br />
'''DEL''' delete sprite<br><br />
''',''' rotate sprite<br><br />
'''.''' rotate sprite<br><br />
'''<''' slowly rotate sprite<br><br />
'''>''' slowly rotate sprite<br><br />
<br />
'''.''' (period): search & fix panning of the wall to the right (''',''' (comma): to the left), has 3 modifiers:<br><br />
'''+SHIFT''': auto-align at most one wall<br><br />
'''+ALT''': copy over texel width in world units (i.e. "how much the wall is stretched")<br><br />
'''+'''' (quote): align immediate upper and lower TROR neighbors<br><br />
<br />
'''SPACE''' lock to object (same as left mouse button)<br><br />
'''PGUP/PGDN+ALT''' when aiming at red wall, select the floor or ceiling of the nextsector (useful for e.g. raising a lowered door when standing near it), depending on whether the aim is at the top or bottom of the wall<br><br />
<br />
'''CAPS LOCK''' cycle zmode<br><br />
'''' Z''' cycle zmode<br><br />
'''' L''' change the coordinates of the current object<br><br />
'''' M''' set the extra of the current object<br><br />
'''1''' toggle one sided sprite/wall<br><br />
'''2''' toggle bottom wall swapping<br><br />
'''O''' set top or bottom orientation of wall<br><br />
'''O''' ornament sprite onto wall<br><br />
'''M''' toggle masking wall<br><br />
'''H''' toggle hitscan sensitivity<br><br />
'''H+SHIFT''' toggle one side hitscan sensitivity for the wall<br><br />
'''' H''' set hitag of the current object<br><br />
<br />
'''KP_MINUS''' shades down individual sector/wall/sprite or selected sectors<br><br />
'''KP_MINUS+ALT''' decreases visibility of sector or selected sectors<br><br />
'''KP_MINUS+ALT+SHIFT''' slowly decreases visibility of sector or selected sectors<br><br />
'''KP_MINUS+ALT+CTRL''' decreases global visibility<br><br />
'''KP_PLUS''' shades up individual sector/wall/sprite or selected sectors<br><br />
'''KP_PLUS+ALT''' increases visibility of sector or selected sectors<br><br />
'''KP_PLUS+ALT+SHIFT''' slowly increases visibility of sector or selected sectors<br><br />
'''KP_PLUS+ALT+CTRL''' increases global visibility<br><br />
Note: '''ALT, CTRL, SHIFT''' are modifiers so they work with mouse too.<br><br />
<br />
'''PLUS/MINUS''' cycle tile<br><br />
'''E''' toggle sector texture expansion<br><br />
'''R''' toggle sector texture relativity alignment<br><br />
'''R''' cycle sprite aligment between: wall aligned, floor aligned, view aligned<br><br />
'''' R''' toggle framerate<br><br />
'''F''' flip the current object ('''+SHIFT''': reverse direction)<br><br />
'''F+ALT''' set the first wall of sector<br><br />
<br />
'''PAGE UP''' move up selected sprites or sectors<br><br />
'''PAGE DN''' move down selected sprites or sectors<br><br />
'''PAGE UP+CTRL''' put selected sprites on ceiling<br><br />
'''PAGE DN+CTRL''' put selected sprites on ground<br><br />
'''+CTRL''' speed up movement<br><br />
'''+END''' slow down movement<br><br />
'''+HOME''' slow down movement even more<br><br />
Note: '''CTRL, HOME, END''' are modifiers so they work with mouse too.<br><br />
<br />
'''N''' toggle 'no-autoshade'-bit of sprite<br><br />
'''' I''' toggle sprite invisibility<br><br />
'''' D''' cycle skill level<br><br />
'''' X''' toggle sprite shade and SE light effect preview<br><br />
'''' W''' toggle sprite display by class (no effectors/actors)<br><br />
'''' Y''' toggle purple background<br><br />
'''' C''' copy shade from the clipboard to all objects in the map which are the same tile as the tile of the object that in the clipboard. It works separately for sectors/walls/sprites depending on the current object. (I hope somebody who understands this, will clarify this)<br><br />
'''' T''' set lotag<br><br />
'''' H''' set hitag<br><br />
'''' S''' set shade<br><br />
'''G''' set picnum<br><br />
'''B''' toggle blocking<br><br />
'''B+SHIFT''' toggle one side blocking for the wall<br><br />
'''T''' cycles translucence for sprites/masked walls (and ceilings/floors for ROR)<br><br />
<br />
'''F2''' toggle clipboard preview<br><br />
'''F2+SHIFT''' toggle current sprite preview<br><br />
'''TAB''' copy to the clipboard<br><br />
'''LENTER+CTRL+SHIFT''' autoshade wall<br><br />
'''' LENTER''' paste picnum only<br><br />
'''; LENTER''' on ceilings/floors, auto-align with reference in '''TAB'''bed clipboard (incomplete for relative-aligned references)<br><br />
'''LENTER+SHIFT''' paste some visual (shading+pal) properties of the clipboard on sector/wall/sprite<br><br />
'''LENTER+CTRL''' paste some visual (picnum+shading+pal) properties of the clipboard on sector/wall/sprite<br><br />
'''LENTER''' paste all (picnum+shading+pal+flags+tags+extra) properties of the clipboard on sector/wall/sprite<br><br />
Note: some fields are only pasted if the type of 'thing' in the clipboard (wall/sprite/sector) equals that of the aimed at object<br><br />
<br />
'''C''' toggle center sprite<br><br />
'''ALT+C''' replace all tiles in the map with one from the clipboard<br><br />
<br />
'''' A''' toggle autosave. The interval is configurable (default: every 3 minutes)<br><br />
<br />
'''' N''' toggle noclip for the camera<br><br />
'''N+CTRL''' toggle noclip for sprites<br><br />
<br />
'''[''' slopes up fast<br><br />
'''[+RSHIFT''' slope up with medium speed<br><br />
'''[+LSHIFT''' slope up slowly<br><br />
'''[+ALT''' align slope to the floor of adjoining sector<br><br />
''']''' slope down fast<br><br />
''']+RSHIFT''' slope down with medium speed<br><br />
''']+LSHIFT''' slope down slowly<br><br />
''']+ALT''' align slope to the ceiling of adjoining sector<br><br />
<br />
'''KP_4''' panning floor/ceiling horizontally<br><br />
'''KP_6''' panning floor/ceiling horizontally<br><br />
'''KP_2''' panning floor/ceiling vertically<br><br />
'''KP_8''' panning floor/ceiling vertically<br><br />
'''KP_4''' scaling wall/sprite horizontally<br><br />
'''KP_6''' scaling wall/sprite horizontally<br><br />
'''KP_2''' scaling wall/sprite vertically<br><br />
'''KP_8''' scaling wall/sprite vertically<br><br />
'''+SHIFT''' or '''+ALT''' force panning (for walls); the latter is an alternative if Shift-KP5-KP*-combinations are dead.<br><br />
'''+KP_5''' speed up<br><br />
<br />
'''/''' Reset panning, repeat and flags to defaults<br><br />
'''/+SHIFT''' set xrepeat to yrepeat (makes square)<br><br />
<br />
'''P''' enable/disable parallax<br><br />
'''P+CTRL''' change parallax type (works only in classic render, not saved into maps)<br><br />
'''P+CTRL''' Playtest map from current position<br><br />
'''P+ALT+CTRL''' Playtest map from start position<br><br />
'''P+ALT''' change pal of sector/wall/sprite<br><br />
'''D+ALT''' adjust clip distance of the sprite<br><br />
'''RENTER''' switch to 2D mode<br><br />
<br />
'''S+CTRL''' save map<br><br />
'''L+CTRL''' load last saved map<br><br />
<br />
'''ESC''' quit<br><br />
<br />
== 2D Mode: Mouse ==<br />
The purpose of mouse in 2D mode is pointing, selecting, moving object in a map.<br />
<br />
Every time mouse is pointing at one of these:<br><br />
# Nothing<br />
# Sector<br />
# Sector and wall<br />
# Sector and sprite<br />
# Wall (wall without sector - map is corrupt)<br />
# Sprite (sprite without sector - map is corrupt)<br />
<br />
Some commands work differently depending on the current object (the object the mouse points at).<br> To solve the ambiguity between sectors and walls/sprites, one usually must press ALT to work with walls/sprites instead of sectors.<br><br />
<br />
===='''RSHIFT''' (select vertices/sprites) modifiers====<br />
* ''';''': set difference<br><br />
* ''' ' ''' (quote character): set union<br><br />
(note that they have to be depressed when '''RSHIFT''' is ''released'')<br><br />
* '''RCTRL''' select only sprites (not walls)<br />
* '''END''' select from all sectors, even grayed out ones<br />
<br><br />
===='''RALT''' (select sectors) modifiers====<br />
* ''';''': set difference<br><br />
* ''' ' ''' (quote character): set union<br><br />
(note that they have to be depressed when '''RALT''' is ''released'')<br><br />
* when '''RCTRL''' is pressed at '''RALT''' release time, then for a sector to be selected, it must be "inside" the mouse pointer instead of being surrounded by the rectangle<br><br />
* when holding '''RSHIFT''', will select all sectors, even grayed out ones<br><br />
See the [[#TROR related keys|TROR section]] for '''HOME''' and '''END''' modifiers.<br />
<br><br />
<br><br />
'''WHEEL''' zoom<br><br />
'''WHEEL+ALT''' move camera and zoom<br><br />
'''LEFT BUTTON''' drag sectors/vertices/sprites<br><br />
'''RIGHT BUTTON''' move camera<br><br />
'''RIGHT MIDDLE''' move camera<br><br />
<br><br />
'''LSHIFT'''+'''LMB''' (with RSHIFT-highlighted points) interactively scale highlighted points (+'''CTRL''' forces square aspect)<br><br />
'''LSHIFT'''+'''RMB''' (with RSHIFT-highlighted points) interactively rotate highlighted points<br><br />
If '''LSHIFT''' is released before the mouse button, the interactive scaling/rotation is canceled.<br><br />
<br />
== 2D Mode: Keys ==<br />
'''F1''' show help<br><br />
'''F2''' show sound index<br><br />
'''F3''' enter/quit side-view mode<br><br />
'''in side-view mode:'''<br><br />
* '''Q''', '''W''': orbit around center<br />
* '''A''', '''Z''': change azimuth<br />
* '''MMB''': change "player" z<br />
* '''RMB''': change "player" x/y<br />
'''F4''' toggle first wall preview<br><br />
'''F5''' show item count<br><br />
'''F6''' show actor count when pointed at wall<br><br />
'''F6''' show Sector Effector help when pointed at sprite<br><br />
'''F7''' edit sector data<br><br />
'''F8''' edit wall/sprite data<br><br />
'''F9''' show the Sector Tags help<br><br />
'''F12''' screenshot<br><br />
'''F12+SHIFT''' inverted screenshot<br><br />
<br />
'''SCROLL LOCK''' set starting position<br><br />
<br />
'''LSHIFT''' show coordinates/linking sprites<br><br />
'''LSHIFT+[''', '''LSHIFT+]''' cycle linking sprites<br><br />
<br><br />
'''M''' set extra of sector<br><br />
'''M+ALT''' set extra of wall/sprite<br><br />
'''/''' Reset panning, repeat and flags to defaults<br><br />
'''/+SHIFT''' set xrepeat to yrepeat (makes square)<br><br />
<br />
'''KP_4''' scaling sprite horizontally<br><br />
'''KP_6''' scaling sprite horizontally<br><br />
'''KP_2''' scaling sprite vertically<br><br />
'''KP_8''' scaling sprite vertically<br><br />
'''+KP_5''' speed up<br><br />
<br><br />
'''R''' cycle sprite alignment<br><br />
'''' S''' set sprite size<br><br />
'''' F''' function menu<br><br />
'''F7+ALT''' search sector lotag<br><br />
'''F8+ALT''' on wall: search wall lotag<br><br />
'''F8+ALT''' on sprite: generic sprite search<br><br />
'''[''' search backward<br><br />
''']''' search forward<br><br />
'''G''' cycle grid size<br><br />
'''G+SHIFT''' cycle grid size backward<br><br />
'''' L''' set sprite/wall coordinates<br><br />
'''' 3''' cycle modes of showing object's name<br><br />
'''' 7''' swap lotag and hitag of wall/sprite<br><br />
'''' J''' jump to position of object (asks for sector/wall/sprite, or x,y)<br><br />
<br />
'''[+ALT''' goto previous corruption<br><br />
''']+ALT''' goto next corruption<br><br />
<br />
'''X''' flip selected sectors in x<br><br />
'''Y''' flip selected sectors in y<br><br />
'''X+ALT''' mirror selected sectors in x<br><br />
'''Y+ALT''' mirror selected sectors in y<br><br />
<br />
'''B''' toggle blocking<br><br />
'''B+SHIFT''' toggle one side blocking for wall<br><br />
'''F+ALT''' set the first wall of sector<br><br />
'''O''' ornament sprite onto wall<br><br />
<br />
''',''' rotate sprite/selected sectors<br><br />
'''.''' rotate sprite/selected sectors<br><br />
'''<''' [i.e. ''',+SHIFT'''] slowly rotate sprite/selected sectors<br><br />
'''>''' [i.e. '''.+SHIFT'''] slowly rotate sprite/selected sectors<br><br />
''',+ALT''', '''.+ALT''' rotate highlighted sectors by a manually entered angle<br><br />
<br><br />
'''T''' set sector lotag<br><br />
'''T+ALT''' set wall/sprite lotag<br><br />
'''T+CTRL''' toggle show tags<br><br />
<br />
'''H''' set sector hitag<br><br />
'''H+ALT''' set wall/sprite hitag<br><br />
'''H+CTRL''' toggle hitscan sensitivity<br><br />
'''H+CTRL+SHIFT''' toggle hitscan sensitivity<br><br />
<br />
'''P''' set sector pal<br><br />
'''E''' set sprite status list<br><br />
'''TAB''' show sector data<br><br />
'''TAB+SHIFT''' show wall/sprite data<br><br />
'''TAB+CTRL''' enable/disable filling of aimed-at sector<br><br />
<br />
'''LCTRL+RSHIFT''' select all walls of the current sector (point at a wall and holding '''LCTRL''', press and release '''RSHIFT'''). Set ops (see RSHIFT above) work too.<br><br />
'''A''' zoom in<br><br />
'''Z''' zoom out<br><br />
'''L''' toggle grid lock<br><br />
'''J''' join sectors<br><br />
'''S''' insert sprite, pressing a key from '''1''' to '''0''' on the upper row before pressing '''S''' will make the inserted sprite's picnum be 1 to 10, respectively<br><br />
'''S+ALT''' make inner sector<br><br />
'''C''' duplicate sectors/sprites<br><br />
'''C''' start circle attached to a wall<br><br />
'''KP +''' increase amount of walls in circle<br><br />
'''KP -''' decrease amount of walls in circle<br><br />
<br><br />
'''SPACE''' start/end drawing of sector, end drawing of circle<br><br />
'''LENTER''' when having some walls drawn, insert points at intersections with existing walls; clear drawn walls then<br><br />
'''LENTER''' check nextwall pointer for the highlighted line<br><br />
'''LENTER''' when having drawn some walls, batch-insert points where the drawn lines intersect with non-grayed-out walls<br><br />
'''LSHIFT+LCTRL+LENTER''' check ALL pointers (manual attempt to recover map)<br><br />
'''BACKSPACE''' remove the last wall during drawing sector<br><br />
'''DEL''' delete sprite<br><br />
'''DEL+CTRL''' delete sector<br><br />
'''DEL+CTRL+LShift''' delete highlighted sectors<br><br />
'''INS''' duplicate sectors/sprites<br><br />
'''INS''' start circle attached to a wall<br><br />
'''INS''' add vertex to wall<br><br />
'''RENTER''' switch to 3D mode<br><br />
'''ESC''' menu<br><br />
<br><br />
'''' A''' toggle autosave(every 3 minutes)<br><br />
'''' N''' toggle noclip<br><br />
'''S+CTRL''' save map<br><br />
'''L+CTRL''' load map<br><br />
<br />
'''P+CTRL''' Playtest map from current position<br><br />
'''P+CTRL+ALT''' Playtest map from start position<br><br />
<br />
'''R+CTRL''' manual grayout: if some sectors are highlighted, make the editable z range [min ceiling z, max floor z] of those; else reset z limits<br />
<br />
==TROR related keys==<br />
===2D mode===<br />
'''E+CTRL''' sector extension prompt (sectors to extend must be highlighted)<br><br />
'''E+CTRL''' make sandwich [''needs better explanation'']<br><br />
'''E+CTRL''' punch loop through extension (loop points must be highlighted, e.g. with '''RSHIFT'''+'''LCTRL''')<br><br />
<br><br />
'''A+CTRL''' toggle auto-grayout of non-extended sectors<br><br />
'''J+CTRL''' TROR-join sectors. The selection must consist of the two sets of sectors you wish to join.<br><br />
'''U+CTRL''' Clear extension: delete the bunch (i.e. ceiling-floor connection) of the aimed-at sector's floor<br><br />
'''PGUP'''/'''PGDN''' Change 'player' height in discrete steps in order to go through the different levels<br><br />
'''TAB+CTRL''' Display one currently aimed at sector (of potentially many that lie under the mouse crosshair)<br><br />
'''HOME''' and '''END''' (as modifiers to '''RALT'''): select all sectors whose floor's/ceiling's bunchnum equal the bunchnum of the aimed at sector (useful for further operations on whole bunches)<br />
<br />
===3D mode===<br />
'''I''' invisibility preview: toggle fake ROR texture on non-masked portals<br><br />
'''LENTER+CTRL''' When aiming at an extended floor/ceiling, paste to all floors/ceilings of the bunch of the aimed at one<br><br />
'''T''', '''B''' and '''H''' work as with walls, though they set/toggle the bits only on '''one''' side<br><br />
<br />
==Some console commands/variables==<br />
<br />
See "help <console-command/var>" for help on a particular command/variable.<br />
<br />
pk_quickmapcycling<br><br />
pk_uedaccel<br><br />
osd_tryscript<br><br />
sideview_reversehorizrot<br><br />
fixmaponsave_sprites<br><br />
show_heightindicators<br><br />
show_ambiencesounds<br><br />
corruptcheck_noalreadyrefd<br><br />
corruptcheck<br><br />
<br />
==Mapster32 keys as tables (unmaintained and obsolete)==<br />
<br />
Below are the Mapster32 keys as three sortable tables. They are sorted such that the more 'basic' keys are at the top.<br><br />
<br><br />
The column headers have the following meaning:<br><br />
<br />
'''key/keys''': self-explanatory. Where a key starts with a '+' on a line of its own,<br>&nbsp;&nbsp;&nbsp;&nbsp;it means that it should be pressed simultaneously with the first one in the<br />
same table row.<br><br />
'''type''': type of command: info=informational, edit=editing, navi=navigation,<br />
disp=display, misc=miscellany<br><br />
'''sec''', '''spr''','''wal''': in case of an editing command, whether it<br />
potentially acts on '''sec'''tors, '''spr'''ites, and/or '''wal'''ls.<br><br />
'''adv''': whether the command is 'advanced'. This is set somewhat arbitrarily.<br><br />
'''new''': whether the functionality of the command is new to Mapster32. An '''e''' means that it's enhanced from BUILD.<br><br />
'''N''': a running number. To restore the original order, sort by it.<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="2" cellspacing="0"<br />
|+ '''Mapster 32 keys &mdash; shared keys for 2D and 3D mode'''<br />
|- bgcolor="#f0f0f0"<br />
! key/keys!!description!!type!!sec<br>!!spr<br>!!wal<br>!!adv<br>!!new<br>!!N<br />
|-<br />
! F1<br />
|help||info||||||||<center>n</center>||<center>'''y'''</center>||0<br />
|-<br />
! UP/DOWN <br> LEFT/RIGHT <br> &nbsp;&nbsp;+LShift<br />
|move forward/back <br> turn left/right ('''+RCtrl''': strafe) <br> speed up movements||navi||||||||<center>n</center>||<center>n</center>||1<br />
|-<br />
! RENTER<br />
|toggle between 2D and 3D modes||misc||||||||<center>n</center>||<center>n</center>||2<br />
|-<br />
! B <br />
|toggle blocking of wall/sprite ('''+Shift''': one-sided)||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||3<br />
|-<br />
! R<br />
|cycle sprite aligment||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||4<br />
|-<br />
! ,/.<br />
|rotate sprite ('''+Shift''': slowly)||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||5<br />
|-<br />
! DEL<br />
|delete sprite||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||6<br />
|-<br />
! /<br />
|reset panning, repeat and flags||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||7<br />
|-<br />
! Alt+F<br />
|set first wall of sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||8<br />
|-<br />
! /+Shift<br />
|set xrepeat to yrepeat (make square)||edit||||<center>'''x'''</center>||||<center>'''y'''</center>||<center>'''y'''</center>||9<br />
|-<br />
! \'N <br />
|toggle camera clipping||navi||||||||<center>'''y'''</center>||<center>'''y'''</center>||10<br />
|-<br />
! Ctrl+N<br />
|toggle sprite clipping through floors/ceilings||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||11<br />
|-<br />
! \'A <br />
|toggle autosave (interval configurable in mapster32.cfg)||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||12<br />
|-<br />
! (Shift+)F12<br />
|capture (inverted) screenshot||misc||||||||<center>n</center>||<center>n</center>||13<br />
|-<br />
! Ctrl+L<br />
|load map||misc||||||||<center>n</center>||<center>n</center>||14<br />
|-<br />
! Ctrl+S<br />
|save map||misc||||||||<center>n</center>||<center>n</center>||15<br />
|-<br />
! Ctrl+P<br />
|playtest map from current position||misc||||||||<center>n</center>||<center>'''y'''</center>||16<br />
|-<br />
! Ctrl+Alt+P<br />
|playtest map from starting position||misc||||||||<center>n</center>||<center>'''y'''</center>||17<br />
|}<br />
<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="2" cellspacing="0"<br />
|+ '''Mapster 32 keys &mdash; 2D mode'''<br />
|- bgcolor="#f0f0f0"<br />
! key/keys!!description!!type!!sec<br>!!spr<br>!!wal<br>!!adv<br>!!new<br>!!N<br />
|-<br />
! A/Z<br />
|zoom in/out||disp||||||||<center>n</center>||<center>n</center>||0<br />
|-<br />
! L<br />
|toggle grid lock||edit||||||||<center>n</center>||<center>n</center>||1<br />
|-<br />
! G (+Shift)<br />
|cycle grid size (backwards), set auto grid||edit||||||||<center>n</center>||<center>'''e'''</center>||2<br />
|-<br />
! S<br />
|insert sprite <br>(prefix 1-0 on upper row: set picnum to 1-10, resp.)||edit||||||||<center>n</center>||<center>'''e'''</center>||3<br />
|-<br />
! O<br />
|ornament sprite onto wall||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||4<br />
|-<br />
! J<br />
|join sectors||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||5<br />
|-<br />
! P<br />
|set sector pal||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||6<br />
|-<br />
! Ctrl+H<br />
|toggle hitscan sensitivity||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||7<br />
|-<br />
! T (+Alt)<br />
|set lotag of sector (wall/sprite)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||8<br />
|-<br />
! H (+Alt)<br />
|set hitag of sector (wall/sprite)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||9<br />
|-<br />
! KP4/6/2/8<br />
|scale sprite (+'''KP5''': speed up)||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||10<br />
|-<br />
! SPACE<br />
|draw sector; end circle drawing||edit||||||||<center>n</center>||<center>n</center>||11<br />
|-<br />
! BACKSPACE<br />
|remove last wall when drawing sector||edit||||||||<center>n</center>||<center>n</center>||12<br />
|-<br />
! BACKSPACE<br />
|cycle 2D display mode (textured/non-textured)||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||13<br />
|-<br />
! INS<br />
|add vertex to wall||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||14<br />
|-<br />
! DEL+Ctrl<br />
|delete sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||15<br />
|-<br />
! C <br> KP+/KP-<br />
|start circle drawing from wall <br> increase/decrease amount of walls in circle||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||16<br />
|-<br />
! Alt+S<br />
|make sector from inner loop||edit||||||||<center>n</center>||<center>n</center>||17<br />
|-<br />
! RShift <br> &nbsp;&nbsp; +;/'<br />
|select group of walls and sprites <br> set difference/union||edit||||||||<center>n</center>||<center>n</center>||18<br />
|-<br />
! RAlt <br> &nbsp;&nbsp; +;/' <br> &nbsp;&nbsp;+RCtrl<br />
|select group of sectors <br> set difference/union <br> point sector selection||edit||||||||<center>n</center>||<center>n</center>||19<br />
|-<br />
! INS or C<br />
|duplicate selected sectors/sprites||edit||||||||<center>n</center>||<center>n</center>||20<br />
|-<br />
! SCROLLLOCK<br />
|set starting position||edit||||||||<center>n</center>||<center>n</center>||21<br />
|-<br />
! TAB<br />
|show sector data||info||||||||<center>n</center>||<center>n</center>||22<br />
|-<br />
! TAB+Ctrl <br> (or TAB+Shift)<br />
|show wall/sprite data||info||||||||<center>n</center>||<center>'''y'''</center>||23<br />
|-<br />
! LShift<br />
|show coords||info||||||||<center>n</center>||<center>'''y'''</center>||24<br />
|-<br />
! M (+Alt)<br />
|set extra of sector (wall/sprite)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||25<br />
|-<br />
! E<br />
|set sprite status list||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||26<br />
|-<br />
! Ctrl+T<br />
|toggle show tags||disp||||||||<center>'''y'''</center>||<center>n</center>||27<br />
|-<br />
! '3<br />
|cycle modes of showing object's name||disp||||||||<center>'''y'''</center>||<center>n</center>||28<br />
|-<br />
! '7<br />
|swap lotag and hitag of wall/sprite||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||29<br />
|-<br />
! 'J<br />
|jump to position (X,Y)||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||30<br />
|-<br />
! 'S<br />
|set sprite size||edit||||<center>'''x'''</center>||||<center>'''y'''</center>||<center>'''y'''</center>||31<br />
|-<br />
! 'L<br />
|set wall/sprite coordinates||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||32<br />
|-<br />
! 'F<br />
|Special functions menu<blockquote>''Replace invalid tiles''<br>''Delete all spr of tile #''<br>''Set map sky shade''<br>''Set map sky height''<br>''Global Z coord shift''<br>''Resize selection''<br>''Global shade divide''<br>''Global visibility divide''</blockquote>||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||33<br />
|-<br />
! X/Y (+Alt)<br />
|flip (mirror) selected sectors in x/y||edit||<center>'''x'''</center>||||||<center>'''y'''</center>||<center>'''y'''</center>||34<br />
|-<br />
! F2<br />
|show sound index (root CON file to fetch sound <br>definitions from can be specified at startup; <br>default is GAME.CON)||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||35<br />
|-<br />
! F4<br />
|toggle first wall highlighting||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||36<br />
|-<br />
! F5<br />
|show item count||info||||||||<center>'''y'''</center>||<center>n</center>||37<br />
|-<br />
! F6<br />
|show actor count (when pointed at sprite: SE help)||info||||||||<center>'''y'''</center>||<center>n</center>||38<br />
|-<br />
! F7<br />
|edit sector data||edit||<center>'''x'''</center>||||||<center>'''y'''</center>||<center>'''y'''</center>||39<br />
|-<br />
! F8<br />
|edit wall/sprite data||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||40<br />
|-<br />
! F9<br />
|show ST help||info||||||||<center>'''y'''</center>||<center>n</center>||41<br />
|-<br />
! Alt+F7<br />
|search sector by tag||info||||||||<center>'''y'''</center>||<center>n</center>||42<br />
|-<br />
! Alt+F8<br />
|search wall by tag/search sprite||info||||||||<center>'''y'''</center>||<center>'''e'''</center>||43<br />
|-<br />
! ]/[<br />
|search forward/backward||info||||||||<center>'''y'''</center>||<center>n</center>||44<br />
|-<br />
! LCtrl+RShift<br />
|select all walls of current sector <br>(point at a wall and holding '''LCtrl''', press '''RShift''')||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||45<br />
|-<br />
! LENTER<br />
|check pointers for current sector <br>('''+LCtrl+LShift''': check ALL pointers)||edit||||||||<center>'''y'''</center>||<center>n</center>||46<br />
|}<br />
<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="2" cellspacing="0"<br />
|+ '''Mapster 32 keys &mdash; 3D mode'''<br />
|- bgcolor="#f0f0f0"<br />
! key/keys!!description!!type!!sec<br>!!spr<br>!!wal<br>!!adv<br>!!new<br>!!N<br />
|-<br />
! A/Z <br> &nbsp;&nbsp;+Ctrl <br> &nbsp;&nbsp;+LShift<br />
|move up/down <br> look down/up <br> speed up movements||navi||||||||<center>n</center>||<center>n</center>||0<br />
|-<br />
! CAPSLOCK or 'Z<br />
|cycle zmode||navi||||||||<center>n</center>||<center>n</center>||1<br />
|-<br />
! KP+/KP-<br />
|change shade||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||2<br />
|-<br />
! KP+/KP-+Alt <br> &nbsp;&nbsp;+Alt+Shift <br> &nbsp;&nbsp;+Ctrl+Alt<br />
|change visibility <br> change visibility in smaller increments <br> change global visibility||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||3<br />
|-<br />
! ]/[ <br> &nbsp;&nbsp;+RShift <br> &nbsp;&nbsp;+LShift<br />
|slope down/up <br> smaller increments <br> smallest increments ||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||4<br />
|-<br />
! [+Alt<br />
|align slope to floor of adjoining sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||5<br />
|-<br />
! ]+Alt<br />
|align slope to ceiling of adjoining sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||6<br />
|-<br />
! PGUP/PGDN <br> &nbsp;&nbsp;+END <br> &nbsp;&nbsp;+HOME<br />
|move object up/down ('''+Ctrl''' on sectors: 4x) <br> 1/2 of normal increments <br> 1/4 of normal increments||edit||<center>'''x'''</center>||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||7<br />
|-<br />
! PGUP+Ctrl<br />
|put sprite on ceiling||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||8<br />
|-<br />
! PGDN+Ctrl<br />
|put sprite on ground||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||9<br />
|-<br />
! KP4/6/2/8 <br> &nbsp;&nbsp;+Shift or +Alt<br>&nbsp;&nbsp;+KP5<br />
|pan floor/ceiling or scale wall/sprite <br>force panning <br> speed up||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||10<br />
|-<br />
! V<br />
|choose tile||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||11<br />
|-<br />
! S<br />
|insert sprite||edit||||||||<center>n</center>||<center>n</center>||12<br />
|-<br />
! G<br />
|set picnum||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||13<br />
|-<br />
! E<br />
|toggle sector texture expansion||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||14<br />
|-<br />
! F<br />
|flip texture||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||15<br />
|-<br />
! R<br />
|toggle sector texture relativity||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||16<br />
|-<br />
! 'T<br />
|set lotag||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||17<br />
|-<br />
! 'H<br />
|set hitag||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||18<br />
|-<br />
! 'S<br />
|set shade||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||19<br />
|-<br />
! Alt+P<br />
|set pal||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||20<br />
|-<br />
! 1<br />
|toggle one sided sprite/wall||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||21<br />
|-<br />
! 2<br />
|toggle bottom wall swapping||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||22<br />
|-<br />
! M<br />
|toggle masking wall||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||23<br />
|-<br />
! O<br />
|toggle wall orientation||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||24<br />
|-<br />
! O<br />
|ornament sprite onto wall||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||25<br />
|-<br />
! C<br />
|toggle sprite centering||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||26<br />
|-<br />
! H<br />
|toggle hitscan sensitivity ('''+Shift''': one-sided)||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||27<br />
|-<br />
! T<br />
|cycle translucence||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||28<br />
|-<br />
! P<br />
|toggle parallax||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||29<br />
|-<br />
! 'V<br />
|set sector visibility||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||30<br />
|-<br />
! Ctrl+P (obsolete)<br />
|change parallax type (classic renderer only)||edit||||||||<center>n</center>||<center>n</center>||31<br />
|-<br />
! .<br />
|search &amp; fix panning of the wall to the right||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||32<br />
|-<br />
! 'L<br />
|set coordinates||edit||<center>'''x'''</center>||<center>'''x'''</center>||||<center>n</center>||<center>'''y'''</center>||33<br />
|-<br />
! 'M<br />
|set extra||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||34<br />
|-<br />
! +/-<br />
|cycle tile||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||35<br />
|-<br />
! TAB<br />
|copy to clipboard||edit||||||||<center>n</center>||<center>n</center>||36<br />
|-<br />
! LENTER<br />
|paste all (pic+shade+pal+flags+tags+extra)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||37<br />
|-<br />
! 'LENTER<br />
|paste picnum only||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||38<br />
|-<br />
! LENTER+Shift<br />
|paste shading+pal||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||39<br />
|-<br />
! LENTER+Ctrl<br />
|paste picnum+shading+pal||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||40<br />
|-<br />
! Alt+C<br />
|replace all "same" tiles with clipboard tile||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||41<br />
|-<br />
! Alt+D<br />
|adjust clipping distance of sprite||edit||||<center>'''x'''</center>||||<center>'''y'''</center>||<center>n</center>||42<br />
|-<br />
! ;V<br />
|set sector visibility on all selected sectors||edit||<center>'''x'''</center>||||||<center>'''y'''</center>||<center>'''y'''</center>||43<br />
|-<br />
! 3<br />
|toggle Sector over Sector <br>(see http://www.users.on.net/~triforce/cduke3d/)||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||44<br />
|-<br />
! 'BACKSPACE<br />
|clear all flags for wall/sprite||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||45<br />
|-<br />
! 'P<br />
|set palette of all sprites/walls/floors/ceilings <br>(respectively) in all selected sectors||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||46<br />
|-<br />
! ;P<br />
|set palette of all sprites/walls/floors/ceilings <br>in all selected sectors||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||47<br />
|-<br />
! Ctrl+Shift<br>+LENTER<br />
|autoshade wall||edit||||||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||48<br />
|-<br />
! F2<br />
|toggle clipboard preview||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||49<br />
|-<br />
! F2+Shift<br />
|toggle current tile display||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||50<br />
|-<br />
! F3<br />
|toggle mouselook||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||51<br />
|-<br />
! F4<br />
|toggle ambient sounds||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||52<br />
|-<br />
! F5<br />
|toggle mouse navigation||navi||||||||<center>'''y'''</center>||<center>'''y'''</center>||53<br />
|-<br />
! F6<br />
|toggle automatic SE help||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||54<br />
|-<br />
! F7<br />
|toggle automatic ST help||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||55<br />
|-<br />
! F9<br />
|reload and activate maphacks||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||56<br />
|-<br />
! F10<br />
|disable maphacks||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||57<br />
|-<br />
! F11<br />
|cycle brightness||misc||||||||<center>n</center>||<center>n</center>||58<br />
|-<br />
! 'D<br />
|cycle skill level||disp||||||||<center>'''y'''</center>||<center>n</center>||59<br />
|-<br />
! 'X<br />
|toggle sprite shade preview||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||60<br />
|-<br />
! 'W<br />
|toggle sprite display||disp||||||||<center>'''y'''</center>||<center>n</center>||61<br />
|-<br />
! 'Y<br />
|toggle purple background||disp||||||||<center>'''y'''</center>||<center>n</center>||62<br />
|-<br />
! 'C<br />
|copy shade from clipboard to all "same" objects||edit||||||||<center>'''y'''</center>||<center>n</center>||63<br />
|-<br />
! 'R<br />
|toggle framerate display||info||||||||<center>'''y'''</center>||<center>n</center>||64<br />
|-<br />
! Ctrl+T<br />
|when pointing on a letter sprite: text entry tool <br>(alphabets are configurable in tiles.cfg)||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||65<br />
|}</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Palette_(environment)&diff=11733Palette (environment)2014-01-02T17:02:49Z<p>Helixhorned: Base palette colors split by R/G/B</p>
<hr />
<div>This page is an exhaustive listing of the 8-bit palette swaps in Duke Nukem 3D.<br />
<br />
The data controlling them can be found and modified in the [[palette data files]].<br />
<br />
==Colors of the base palette==<br />
<br />
The following plot shows the red, green and blue color intensities of Duke3D's base palette on a 0--1 scale.<br />
[http://lunatic.eduke32.com/basepal0_rgb.png Base palette colors]<br />
<br />
It can be seen that it contains six ramps (sequences in which R, G and B all increase monotonically) of 32 colors, three blocks of 16 colors (two of which are ramps), and 16 remaining fullbright colors. Rearranging consecutive blocks of 16 colors by the permutation [0 1 2 3 5 4 6 7 8 13 10 11 12 9 14 15] makes this stand out more clearly:<br />
[http://lunatic.eduke32.com/basepal0_rgb_reord.png Rearranged base palette colors]<br />
<br />
==Global Palettes==<br />
For use with [[setgamepalette]]:<br />
{| {{simpletable}}<br />
! ID !! Palette !! Image<br />
|- valign=top<br />
|0<br />
|Normal<br />
| [[image:pala.png|48px]]<br />
|- valign=top<br />
|1<br />
|Underwater<br />
| [[image:palb.png|48px]]<br />
|- valign=top<br />
|2<br />
|Night Vision Goggles <br /> Submersible Slime<br />
| [[image:palc.png|48px]]<br />
|- valign=top<br />
|3<br />
|3D Realms Logo <br /> (changed in v1.4)<br />
| [[image:pale.png|48px|v1.3D]] [[image:palf.png|48px|v1.4+]]<br />
|- valign=top<br />
|4<br />
|Title Screen<br />
| [[image:pald.png|48px]]<br />
|- valign=top<br />
|5<br />
|Episode 1 Ending<br />
| [[image:palg.png|48px]]<br />
|- valign=top<br />
|6<br />
|temporary slot for self-contained [[ANM]] palettes <br /> example provided is LOGO.ANM<br />
| [[image:palh.png|48px]]<br />
|}<br />
<br />
==Palette Swaps==<br />
For use with [[spritepal]], [[pal]], et cetera:<br />
{| {{simpletable}}<br />
! ID !! Image !! Effect !! Description<br />
|- valign=top<br />
| 0 <br /> 3 <br /> 9 <br /> [[#Empty Slots|empty]]<br />
| [[image:pala.png|48px]]<br />
| Normal<br />
| Default color <br /> Player 1 (ID 9)<br />
|- valign=top<br />
| 1<br />
| [[image:pal1.png|48px]]<br />
| All blue<br />
| Frozen creatures <br /> Unavailable menu option <br /> Blue lights<br />
|- valign=top<br />
| 2<br />
| [[image:pal2.png|48px]]<br />
| All red<br />
| Blood pool <br />Red lights<br />
|- valign=top<br />
| 4<br />
| [[image:pal4.png|48px]]<br />
| Full black (including fullbrights)<br />
| Shadows<br />
|- valign=top<br />
| 5<br />
| [[image:pal5.png|48px]]<br />
| Red to brown<br />
| Brown Team (Duke-Tag) Exit Level Nuke<br />
|- valign=top<br />
| 6<br />
| [[image:pal6.png|48px]]<br />
| All reverse green<br />
| Night Vision Goggles heat <br /> Protozoid Slimer, Protector Drone, and Alien Queen gibs<br />
|- valign=top<br />
| 7<br />
| [[image:pal7.png|48px]]<br />
| All yellow<br />
| Slime splash, FECES puddle <br /> Yellow/Brown lights<br />
|- valign=top<br />
| 8<br />
| [[image:pal8.png|48px]]<br />
| All green<br />
| Green lights<br />
|- valign=top<br />
| 10<br />
| [[image:pal10.png|48px]]<br />
| Blue to dark red<br />
| Player 2<br />
|- valign=top<br />
| 11 <br /> 22<br />
| [[image:pal11.png|48px]]<br />
| Blue to green<br />
| Player 3 (ID 11) <br /> Assault Trooper (ID 22)<br />
|- valign=top<br />
| 12 <br /> 18<br />
| [[image:pal12.png|48px]]<br />
| Blue to gray<br />
| Player 4 (ID 12)<br />
|- valign=top<br />
| 13<br />
| [[image:pal13.png|48px]]<br />
| Blue and red to dark gray<br />
| Player 5<br />
|- valign=top<br />
| 14<br />
| [[image:pal14.png|48px]]<br />
| Blue and red to dark green<br />
| Player 6 <br /> Secret Exit Level Nuke<br />
|- valign=top<br />
| 15<br />
| [[image:pal15.png|48px]]<br />
| Blue to brown<br />
| Player 7<br />
|- valign=top<br />
| 16<br />
| [[image:pal16.png|48px]]<br />
| Blue to dark blue<br />
| Player 8<br />
|- valign=top<br />
| 17<br />
| [[image:pal17.png|48px]]<br />
| Brown, green, orange and purple to blue <br /> Blue to green<br />
|<br />
|- valign=top<br />
| 19<br />
| [[image:pal19.png|48px]]<br />
| Brown, green, orange and purple to red <br /> Blue to green<br />
|<br />
|- valign=top<br />
| 20<br />
| [[image:pal20.png|48px]]<br />
| Brown, green, orange and purple to blue <br /> Blue to gray<br />
|<br />
|- valign=top<br />
| 21<br />
| [[image:pal21.png|48px]]<br />
| Blue to red<br />
| Red Key Card <br /> Assault Captain <br /> Mini Battlelord<br />
|- valign=top<br />
| 23<br />
| [[image:pal23.png|48px]]<br />
| Blue to yellow<br />
| Yellow Key Card<br />
|- valign=top<br />
| 24<br />
| [[image:pal24.png|48px]]<br />
| Gray to red <br /> Red to gray<br />
|<br />
|- valign=top<br />
| 25<br />
| [[image:pal25.png|48px]]<br />
| Green to red<br />
|<br />
|}<br />
<br />
==Fog Palettes==<br />
EDuke32 includes four [[DEF Language#fogpal|fog palettes]] starting at palette index 26.<br />
<br />
Note that lookup.dat can be modified to support more than 25 palette remaps for 8-bit sprites; in this case, the included fog palettes start wherever the first unused palette position is. For example, a modified copy of lookup.dat with 30 remaps instead of 25 would result in the fog palettes occupying indexes 31, 32, 33, and 34 instead of 26, 27, 28, and 29.<br />
<br />
They are:<br />
fogpal 26 63 63 63<br />
fogpal 27 63 0 0<br />
fogpal 28 0 63 0<br />
fogpal 29 0 0 63<br />
This gives the fog colors of white (26), red (27), green (28) and blue (29).<br />
<br />
==Empty Slots==<br />
<br />
All empty palette swaps, including those without [[DEF Language#fogpal|fog palettes]], default to pal 0.<br />
<br />
If you are using [[DEF Language|defs]] to add additional skins or variations to empty palette slots of a model or texture which do not correspond to any palette swap, or [[DEF Language#fogpal|fog palettes]], it is '''very highly recommended''' to begin the indices for your custom variations at palette value #133. This is because modified [[Palette data files|LOOKUP.DAT and PALETTE.DAT]] files such as [http://lzg.duke4.net/extclut.htm ExtCLUT] can contain up to 128 palette entries. These additional values may conflict with your custom feature. The extra four spaces are to account for the [[#Fog Palettes|predefined fogpals]] explained above.</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Suggestions_for_the_future&diff=11699Suggestions for the future2013-11-01T10:03:39Z<p>Helixhorned: /* Scripting */ add a suggestion by TD</p>
<hr />
<div>This page is intended to provide a list of EDuke32 (not Mapster32) suggestions of features that are moderately or highly complex and thus are not expected to be implemented immediately. Feel free to edit this list, but keep the following format: A leading line with a short description, and a link to a post at the Duke4.net forums.<br />
<br />
== Scripting ==<br />
* Cutscene support - http://forums.duke4.net/topic/2961-paper-cuts-minor-bugs-and-annoyances/page__view__findpost__p__152896<br />
* Access to engine-side tables (e.g. base palette, translucency) - http://forums.duke4.net/topic/775-eduke32-20-and-polymer/page__view__findpost__p__152969<br />
* Expose draw-to-tile functionality - http://forums.duke4.net/topic/2961-paper-cuts-minor-bugs-and-annoyances/page__view__findpost__p__153680<br />
* Creating a palette / lookup table after an image file, similar to tilefromtexture<br />
* A starttrack-style command that can stop a track, or play the title screen or briefing tracks.<br />
* EVENT_CHEAT that returns the ID of an entered cheat.<br />
* "features that enabled scanning of a folder on startup and then adding the maps therein to game volumes" - http://forums.duke4.net/topic/1942-duke-nukem-war-of-attrition/page__view__findpost__p__175140<br />
<br />
== Rendering ==<br />
* "Distorted" skies / other parallax modes in GL renders? - http://forums.duke4.net/topic/6369-duke-nukem-3d-megaton-edition/page__view__findpost__p__153068<br />
* Per-sprite billboarding control - http://forums.duke4.net/topic/775-eduke32-20-and-polymer/page__view__findpost__p__159452<br />
<br />
== Other ==<br />
* Support to programmatically compose loaded tiles to new ones? -- http://forums.duke4.net/topic/5262-resources-community-stockpile/page__view__findpost__p__163743</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Readgamevar&diff=11693Readgamevar2013-10-20T11:20:26Z<p>Helixhorned: clarify what happens when the named var is not in the cfg</p>
<hr />
<div>'''readgamevar''' <varname><br />
<br />
Reads a [[gamevar]] that was saved with [[savegamevar]] from the user's configuration file. If the named gamevar is not found in the configuration file (for example, because [[savegamevar]] was never issued for it), <varname> equals 0 after '''readgamevar''' finishes.<br />
<br />
For per-actor or per-player gamevars, the value at the current actor or player index gets restored, '''not''' the values for all actors or players.<br />
<br />
[[Category:EDuke32 specific commands]]<br />
[[Category:Gamevar manipulation]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=LOGO_FLAGS&diff=11692LOGO FLAGS2013-10-20T10:02:08Z<p>Helixhorned: add NOExBONUSSCENE flags</p>
<hr />
<div>LOGO_FLAGS is a [[gamevar]] that controls the appearance of the introduction and menu.<br />
<br />
It is a [[bitfield]]. The values are:<br />
<br />
'''1''' - LOGO_FLAG_ENABLED<br /><br />
'''2''' - LOGO_FLAG_PLAYANIM<br /><br />
'''4''' - LOGO_FLAG_PLAYMUSIC<br /><br />
'''8''' - LOGO_FLAG_3DRSCREEN<br /><br />
'''16''' - LOGO_FLAG_TITLESCREEN<br /><br />
'''32''' - LOGO_FLAG_DUKENUKEM<br /><br />
'''64''' - LOGO_FLAG_THREEDEE<br /><br />
'''128''' - LOGO_FLAG_PLUTOPAKSPRITE<br /><br />
'''256''' - LOGO_FLAG_SHAREWARESCREENS<br /><br />
'''512''' - LOGO_FLAG_TENSCREEN<br /><br />
'''1024''' - LOGO_FLAG_STOPANIMSOUNDS<br /><br />
'''2048''' - LOGO_FLAG_NOE4CUTSCENE<br /><br />
'''4096''' - LOGO_FLAG_NOE1BONUSSCENE<br /><br />
'''8192''' - LOGO_FLAG_NOE2BONUSSCENE<br /><br />
'''16384''' - LOGO_FLAG_NOE3BONUSSCENE<br /><br />
'''32768''' - LOGO_FLAG_NOE4BONUSSCENE<br /><br />
<br />
(The names following the numeric values are merely informational, they do not denote labels predefined from CON.)<br/><br />
The default value is 255. That is, all the bits below 256 are set.<br />
<br />
[[Category:Bitfields]]<br />
[[Category:Pre-defined gamevars]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Mapster32_Map_Checking&diff=11687Mapster32 Map Checking2013-08-13T11:05:15Z<p>Helixhorned: /* level 3 */ suggest another resultion for "wall has length 0"</p>
<hr />
<div>Mapster32 supports validation of loaded map files via the '''corruptcheck''' OSD command. It is also able to repair certain cases of damaged maps.<br><br />
<br />
The severity of a map error is judged by a "level" number from 1 to 5, and can be interpreted like follows:<br />
# warning (very minor issue)<br />
# warning (minor issue)<br />
# worth looking into: may have consequences<br />
# '''serious/very serious corruption''': must not occur in a clean map<br />
# panic: something is very, very wrong!<br />
<br />
Levels 3 and 4 are the ones that occur most often. Currently, Mapster32 prints only the maximal corruption level when checking. For levels 4 and above, it is advisable to restart Mapster32 and reload the map after fixing the particular corruption, since the internal state of the editor itself may have become corrupt.<br><br />
<br />
After listing the corruptions, you can jump to each of them (provided they're not outside the editing grid) using the '''Alt'''+'''[''' and '''Alt'''+''']''' shortcuts.<br />
<br />
== "corruptcheck" options ==<br />
'''corruptcheck now''': prints out a list of all map corruptions, along with numbers used to refer to them and a short description<br><br />
'''corruptcheck tryfix''' ['''num''']: attempts to repair the corruption '''num''' if given, or all of them otherwise<br><br />
<br />
== all "corruptcheck" messages ==<br />
=== sectors ===<br />
==== level 4 ====<br />
* SECTOR[''num1''].WALLPTR=''num2'' out of range (numwalls=''num3'')<br />
* SECTOR[''num1''].WALLPTR=''num2'' inconsistent, expected ''num3''<br />
* SECTOR[''num1'']: wallptr+wallnum=''num2'' out of range: numwalls=''num3''<br />
resolution: manual (expert use)<br><br />
<br />
* SECTOR[''num1''].WALLNUM=2, expected at least 3<br />
resolution: highlight and delete the sector. (See [http://forums.duke4.net/topic/5728-polymer-renderer-crash-when-loading-user-map-dharga-map-fixed/page__view__findpost__p__136111 topic at Duke4.net forums] for an example)<br />
<br />
=== walls ===<br />
==== level 4 ====<br />
* WALL[''num1''].POINT2=''num2'' out of range [''num3'', ''num4'']<br />
* WALL[''num1''].NEXTWALL=''num2'' out of range: numwalls=''num3''<br />
* WALL[''num1''].NEXTSECTOR=''num2'' out of range: numsectors=''num3''<br />
* WALL[''num1''].NEXTWALL is its own sector's wall<br />
resolution: manual (expert use). Newer Mapster32 versions will make these walls white (may need specifying '??' alternative).<br><br />
<br />
'''TODO''': various messages about TROR<br><br />
<br />
* WALL[''num1''].NEXTSECTOR is its own sector<br />
resolution: '''corruptcheck tryfix''' will reset .nextwall and .nextsector or attempt to find matching ones<br />
<br />
* WALL[''num1''].NEXTSECTOR=''num2'' and .NEXTWALL=''num3'' inconsistent: missing one next pointer<br />
* WALL[''num1''].NEXTWALL=''num2'' out of .NEXTSECTOR=''num3'''s bounds [''num4'' .. ''num5'']<br />
Possible problems: crashes, "undefined behavior". Specifically, the quick path of sectorofwall() may return -1 even though the passed wall number is inside the [0..numwalls-1] bounds.<br><br />
Resolution: '''corruptcheck tryfix''' will attempt to find a matching .nextwall/.nextsector. When none are found, passing '??' to 'corruptcheck' tells it to make these walls white instead.<br />
<br />
==== level 3 ====<br />
* WALL[''num1''] has length 0<br />
Poossible problems: divides by zero in engine/game code.<br><br />
Resolution: one point should be dragged away, or if the corresponding sector is degenerate (has zero area), it should be deleted. See [http://forums.duke4.net/topic/6698-please-review-this-currently-unfinished-map/page__view__findpost__p__168306 this post at Duke4.net], for example.<br><br />
<br />
* WALL[''num1''].NEXTWALL=''num2'' already referenced from wall ''num3''<br />
Issue: generally, red walls are supposed to have a 1-to-1 relationship, though there are certain uses for 1-to-N connections. Entering '''corruptcheck_noalreadyrefd''' will toggle the ignore state of this "corruption".<br />
<br />
=== sprites ===<br />
==== level 4 ====<br />
* SPRITE[''num1''].SECTNUM=''num2''. Expect problems!<br />
* SPRITE[''num1''].STATNUM=''num2'' Expect problems!<br />
These happen when the statnum or sectnum of a sprite is out of bounds.<br><br />
resolution: delete or reinsert the sprites, or manually set the stat- or sectnums.<br />
<br />
* SPRITE ''num1'' at [''num2'', ''num3''] is out of the maximal grid range [''num4'', ''num5'']<br />
possible problems: integer overflows in engine or game code<br><br />
resolution: '''corruptcheck tryfix''' will place the sprite at its sector's first point.</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Template:Build_Intro&diff=11686Template:Build Intro2013-08-13T10:50:49Z<p>Helixhorned: Add "Mapster32 Map Checking"</p>
<hr />
<div></div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Suggestions_for_the_future&diff=11674Suggestions for the future2013-07-05T11:44:25Z<p>Helixhorned: /* Other */</p>
<hr />
<div>This page is intended to provide a list of EDuke32 (not Mapster32) suggestions of features that are moderately or highly complex and thus are not expected to be implemented immediately. Feel free to edit this list, but keep the following format: A leading line with a short description, and a link to a post at the Duke4.net forums.<br />
<br />
== Scripting ==<br />
* Cutscene support - http://forums.duke4.net/topic/2961-paper-cuts-minor-bugs-and-annoyances/page__view__findpost__p__152896<br />
* Access to engine-side tables (e.g. base palette, translucency) - http://forums.duke4.net/topic/775-eduke32-20-and-polymer/page__view__findpost__p__152969<br />
* Expose draw-to-tile functionality - http://forums.duke4.net/topic/2961-paper-cuts-minor-bugs-and-annoyances/page__view__findpost__p__153680<br />
* Creating a palette / lookup table after an image file, similar to tilefromtexture<br />
* A starttrack-style command that can stop a track, or play the title screen or briefing tracks.<br />
* EVENT_CHEAT that returns the ID of an entered cheat.<br />
<br />
== Rendering ==<br />
* "Distorted" skies / other parallax modes in GL renders? - http://forums.duke4.net/topic/6369-duke-nukem-3d-megaton-edition/page__view__findpost__p__153068<br />
* Per-sprite billboarding control - http://forums.duke4.net/topic/775-eduke32-20-and-polymer/page__view__findpost__p__159452<br />
<br />
== Other ==<br />
* Support to programmatically compose loaded tiles to new ones? -- http://forums.duke4.net/topic/5262-resources-community-stockpile/page__view__findpost__p__163743</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Polymer_Deficiencies&diff=11664Polymer Deficiencies2013-06-16T12:56:03Z<p>Helixhorned: add masked wall/sprite drawing issue</p>
<hr />
<div>This is a list of problems in the Polymer renderer that need to be fixed.<br />
[[Plagman]] is master of everything Polymer.<br />
<br />
*certain major optimizations remain to be done (the sole issue is lack of time)<br />
*implement new sky support; would solve:<br />
**limited to one skybox<br />
**level geometry is displayed through skyboxes when it should not<br />
**[[showview]] command does not work<br />
**changing skies at runtime<br />
*no voxel support<br />
*doesn't save known good geometry in savegames for use as a fallback when map effects become corrupt, revealing errors that otherwise would be avoided<br />
*not hooked up to [[User:TX|TX]]'s Sector Effector-based [[ROR]] (which remains useful for retrofitting existing maps)<br />
*polymer does not modify roll when transforming HUD models during changes to rotscrnang (per polymost).<br />
*ATI cards cast no shadows with any spotlights.<br />
*Better sprite/model sector tracking; would solve:<br />
**Models disappearing from view<br />
**Lights affecting sprites through walls<br />
*Translucent/masked-out texels of sprites draw incorrectly in front of translucent TROR boundaries (may be multiple issues)<br />
#Non-hightile, lighting enabled: in trueror1.map, shoot with the chaingun at the TROR water. The water will not show where the splash texture has masked-out texels. Bug disappears with lighting disabled.<br />
*Mapster32: sector visibility doesn't get updated on the walls, may have in-game implications. http://forums.duke4.net/topic/1348-mapster32-problems-and-bugs/page__view__findpost__p__161649<br />
*Both Polymodes: the drawing order between sprites and masked walls can be incorrect on occasion. This is only noticeable with translucent walls, since otherwise depth testing makes the scene appear to be drawn correctly. http://forums.duke4.net/topic/5340-bug-with-masked-walls/page__view__findpost__p__156015</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Polymer_Deficiencies&diff=11661Polymer Deficiencies2013-06-12T08:55:46Z<p>Helixhorned: add mapster32 issue</p>
<hr />
<div>This is a list of problems in the Polymer renderer that need to be fixed.<br />
[[Plagman]] is master of everything Polymer.<br />
<br />
*certain major optimizations remain to be done (the sole issue is lack of time)<br />
*implement new sky support; would solve:<br />
**limited to one skybox<br />
**level geometry is displayed through skyboxes when it should not<br />
**[[showview]] command does not work<br />
**changing skies at runtime<br />
*no voxel support<br />
*doesn't save known good geometry in savegames for use as a fallback when map effects become corrupt, revealing errors that otherwise would be avoided<br />
*not hooked up to [[User:TX|TX]]'s Sector Effector-based [[ROR]] (which remains useful for retrofitting existing maps)<br />
*polymer does not modify roll when transforming HUD models during changes to rotscrnang (per polymost).<br />
*ATI cards cast no shadows with any spotlights.<br />
*Better sprite/model sector tracking; would solve:<br />
**Models disappearing from view<br />
**Lights affecting sprites through walls<br />
*Translucent/masked-out texels of sprites draw incorrectly in front of translucent TROR boundaries (may be multiple issues)<br />
#Non-hightile, lighting enabled: in trueror1.map, shoot with the chaingun at the TROR water. The water will not show where the splash texture has masked-out texels. Bug disappears with lighting disabled.<br />
*Mapster32: sector visibility doesn't get updated on the walls, may have in-game implications. http://forums.duke4.net/topic/1348-mapster32-problems-and-bugs/page__view__findpost__p__161649</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Polymer_Deficiencies&diff=11660Polymer Deficiencies2013-06-12T08:52:40Z<p>Helixhorned: add one translucent tror boundary issue</p>
<hr />
<div>This is a list of problems in the Polymer renderer that need to be fixed.<br />
[[Plagman]] is master of everything Polymer.<br />
<br />
*certain major optimizations remain to be done (the sole issue is lack of time)<br />
*implement new sky support; would solve:<br />
**limited to one skybox<br />
**level geometry is displayed through skyboxes when it should not<br />
**[[showview]] command does not work<br />
**changing skies at runtime<br />
*no voxel support<br />
*doesn't save known good geometry in savegames for use as a fallback when map effects become corrupt, revealing errors that otherwise would be avoided<br />
*not hooked up to [[User:TX|TX]]'s Sector Effector-based [[ROR]] (which remains useful for retrofitting existing maps)<br />
*polymer does not modify roll when transforming HUD models during changes to rotscrnang (per polymost).<br />
*ATI cards cast no shadows with any spotlights.<br />
*Better sprite/model sector tracking; would solve:<br />
**Models disappearing from view<br />
**Lights affecting sprites through walls<br />
*Translucent/masked-out texels of sprites draw incorrectly in front of translucent TROR boundaries (may be multiple issues)<br />
#Non-hightile, lighting enabled: in trueror1.map, shoot with the chaingun at the TROR water. The water will not show where the splash texture has masked-out texels. Bug disappears with lighting disabled.</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Suggestions_for_the_future&diff=11611Suggestions for the future2013-05-24T16:21:08Z<p>Helixhorned: /* Rendering */ Add "Per-sprite billboarding control"</p>
<hr />
<div>This page is intended to provide a list of EDuke32 (not Mapster32) suggestions of features that are moderately or highly complex and thus are not expected to be implemented immediately. Feel free to edit this list, but keep the following format: A leading line with a short description, and a link to a post at the Duke4.net forums.<br />
<br />
== Scripting ==<br />
* Cutscene support - http://forums.duke4.net/topic/2961-paper-cuts-minor-bugs-and-annoyances/page__view__findpost__p__152896<br />
* Access to engine-side tables (e.g. base palette, translucency) - http://forums.duke4.net/topic/775-eduke32-20-and-polymer/page__view__findpost__p__152969<br />
* Expose draw-to-tile functionality - http://forums.duke4.net/topic/2961-paper-cuts-minor-bugs-and-annoyances/page__view__findpost__p__153680<br />
* Creating a palette / lookup table after an image file, similar to tilefromtexture<br />
* A starttrack-style command that can stop a track, or play the title screen or briefing tracks.<br />
* EVENT_CHEAT that returns the ID of an entered cheat.<br />
<br />
== Rendering ==<br />
* "Distorted" skies / other parallax modes in GL renders? - http://forums.duke4.net/topic/6369-duke-nukem-3d-megaton-edition/page__view__findpost__p__153068<br />
* Per-sprite billboarding control - http://forums.duke4.net/topic/775-eduke32-20-and-polymer/page__view__findpost__p__159452<br />
<br />
== Other ==</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Htmovflag&diff=11610Htmovflag2013-05-20T11:30:56Z<p>Helixhorned: </p>
<hr />
<div>'''htmovflag''' has a nonzero value if the sprite is using a move command and it bumps into something (htmovflag is set to the return value of the [[movesprite]] function). <br />
<br />
Depending if the moving sprite bumped into another sprite, wall, floor or ceiling, a different value will be added to the collided object's index:<br><br />
(Compare with [[getzrange]].)<br />
<br />
* 16384 + sectnum, if a ceiling or floor was hit first<br />
* 32768 + wallnum, if a wall was hit first<br />
* 49152 + spritenum, if a sprite was hit first<br />
<br />
Thus, to determine what was hit, one should check the value in this order:<br />
* == 0 -- nothing hit.<br />
* >= 49152 -- sprite hit.<br />
* >= 32768 -- wall hit.<br />
* >= 16384 -- ceiling/floor hit.<br />
and then subtract the corresponding constant to get a sector, wall or sprite index. Note how the the values do not overlap for different objects becuase of the s/w/s limits.<br />
<br />
[[Category:Sprite structure members]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Movesprite&diff=11609Movesprite2013-05-20T11:19:01Z<p>Helixhorned: Strike out incorrect instructions.</p>
<hr />
<div>'''movesprite''' <[[sprite id]]> <xvel> <yvel> <zvel> <[[clipmask]]> <returnvar><br />
<br />
''This page is incomplete. Please help us by filling in additional information.''<br />
<br />
movesprite gives the capability to move an [[actor]] along an arbitrary x, y, or z velocity and adjust the [[clipmask]] used, thereby changing what the actor will collide with. The variable <returnvar> will equal [[htmovflag]], which will be either 0 or the id of what was hit. This is sectioned by different areas of the struct. <s>Add 16384 to <returnvar> to get the result of the sprite structure member that may have been hit for example.</s><br />
<br />
'''Critical notes:''' It is possible that <zvel> will be non-functional unless "fall" is called immediately before movesprite. Also movesprite and [[move]] commands do not mix well. You are likely to get unintended results.<br />
<br />
[[Category:EDuke32 specific commands]]<br />
[[Category:Sprite manipulation]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Htmovflag&diff=11608Htmovflag2013-05-20T11:14:42Z<p>Helixhorned: htmovflag: replace with hopefully correct description. Still a bit confusing (htmovflag is set "behind the back").</p>
<hr />
<div>'''htmovflag''' has a nonzero value if the sprite is using a move command and it bumps into something (htmovflag is set to the return value of the [[movesprite]] function). <br />
<br />
Depending if the moving sprite bumped into another sprite, wall, floor or ceiling, a different value will be added to the collided object's index:<br><br />
(Compare with [[getzrange]].)<br />
<br />
* 16384 + sectnum, if a ceiling or floor was hit first<br />
* 32768 + wallnum, if a wall was hit first<br />
* 49152 + spritenum, if a sprite was hit first<br />
<br />
[[Category:Sprite structure members]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Loadmapstate&diff=11607Loadmapstate2013-05-18T19:22:08Z<p>Helixhorned: loadmapstate: Mention that startlevel+loadmapstate won't work.</p>
<hr />
<div>'''loadmapstate''' restores the current map to the state it was in when the [[savemapstate]] command was last used in that map.<br />
<br />
Thus, all the sprites will be in the positions they were in at that time, any sectors that were activated will still be activated. Per-player and per-actor variables will be restored to the values they had at that time unless they were declared with [[Gamevar|GAMEVAR_FLAG_NORESET]], etc.<br />
<br />
If there is no cached copy of the map (either because [[savemapstate]] was not used in the map or the state was cleared using [[clearmapstate]]) then '''loadmapstate''' does nothing.<br />
<br />
It is sensible to run '''loadmapstate''' from [[EVENT_ENTERLEVEL]] because running it after a [[startlevel]] command won't work as expected.</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Startlevel&diff=11606Startlevel2013-05-18T19:18:09Z<p>Helixhorned: Mention why startlevel+loadmapstate won't work.</p>
<hr />
<div>'''startlevel''' <volume> <level><br />
<br />
Tells EDuke32 to load the map given by <volume> and <level>, bypassing the End of Level screen.<br />
<br />
The map is not loaded it immediately: this command only sets variables that are checked at a later time. Thus, issuing a [[loadmapstate]] after a '''startlevel''' does not restore the map state.<br />
<br />
[[Category:EDuke commands]]<br />
[[Category:Game manipulation]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Loadmapstate&diff=11605Loadmapstate2013-05-18T18:33:21Z<p>Helixhorned: Specify loadmapstate a bit more precisely.</p>
<hr />
<div>'''loadmapstate''' restores the current map to the state it was in when the [[savemapstate]] command was last used in that map.<br />
<br />
Thus, all the sprites will be in the positions they were in at that time, any sectors that were activated will still be activated. Per-player and per-actor variables will be restored to the values they had at that time unless they were declared with [[Gamevar|GAMEVAR_FLAG_NORESET]], etc.<br />
<br />
If there is no cached copy of the map (either because [[savemapstate]] was not used in the map or the state was cleared using [[clearmapstate]]) then '''loadmapstate''' does nothing.</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Mapster32_Map_Checking&diff=11602Mapster32 Map Checking2013-05-10T12:49:57Z<p>Helixhorned: /* level 4 */ add some info</p>
<hr />
<div>Mapster32 supports validation of loaded map files via the '''corruptcheck''' OSD command. It is also able to repair certain cases of damaged maps.<br><br />
<br />
The severity of a map error is judged by a "level" number from 1 to 5, and can be interpreted like follows:<br />
# warning (very minor issue)<br />
# warning (minor issue)<br />
# worth looking into: may have consequences<br />
# '''serious/very serious corruption''': must not occur in a clean map<br />
# panic: something is very, very wrong!<br />
<br />
Levels 3 and 4 are the ones that occur most often. Currently, Mapster32 prints only the maximal corruption level when checking. For levels 4 and above, it is advisable to restart Mapster32 and reload the map after fixing the particular corruption, since the internal state of the editor itself may have become corrupt.<br><br />
<br />
After listing the corruptions, you can jump to each of them (provided they're not outside the editing grid) using the '''Alt'''+'''[''' and '''Alt'''+''']''' shortcuts.<br />
<br />
== "corruptcheck" options ==<br />
'''corruptcheck now''': prints out a list of all map corruptions, along with numbers used to refer to them and a short description<br><br />
'''corruptcheck tryfix''' ['''num''']: attempts to repair the corruption '''num''' if given, or all of them otherwise<br><br />
<br />
== all "corruptcheck" messages ==<br />
=== sectors ===<br />
==== level 4 ====<br />
* SECTOR[''num1''].WALLPTR=''num2'' out of range (numwalls=''num3'')<br />
* SECTOR[''num1''].WALLPTR=''num2'' inconsistent, expected ''num3''<br />
* SECTOR[''num1'']: wallptr+wallnum=''num2'' out of range: numwalls=''num3''<br />
resolution: manual (expert use)<br><br />
<br />
* SECTOR[''num1''].WALLNUM=2, expected at least 3<br />
resolution: highlight and delete the sector. (See [http://forums.duke4.net/topic/5728-polymer-renderer-crash-when-loading-user-map-dharga-map-fixed/page__view__findpost__p__136111 topic at Duke4.net forums] for an example)<br />
<br />
=== walls ===<br />
==== level 4 ====<br />
* WALL[''num1''].POINT2=''num2'' out of range [''num3'', ''num4'']<br />
* WALL[''num1''].NEXTWALL=''num2'' out of range: numwalls=''num3''<br />
* WALL[''num1''].NEXTSECTOR=''num2'' out of range: numsectors=''num3''<br />
* WALL[''num1''].NEXTWALL is its own sector's wall<br />
resolution: manual (expert use). Newer Mapster32 versions will make these walls white (may need specifying '??' alternative).<br><br />
<br />
'''TODO''': various messages about TROR<br><br />
<br />
* WALL[''num1''].NEXTSECTOR is its own sector<br />
resolution: '''corruptcheck tryfix''' will reset .nextwall and .nextsector or attempt to find matching ones<br />
<br />
* WALL[''num1''].NEXTSECTOR=''num2'' and .NEXTWALL=''num3'' inconsistent: missing one next pointer<br />
* WALL[''num1''].NEXTWALL=''num2'' out of .NEXTSECTOR=''num3'''s bounds [''num4'' .. ''num5'']<br />
Possible problems: crashes, "undefined behavior". Specifically, the quick path of sectorofwall() may return -1 even though the passed wall number is inside the [0..numwalls-1] bounds.<br><br />
Resolution: '''corruptcheck tryfix''' will attempt to find a matching .nextwall/.nextsector. When none are found, passing '??' to 'corruptcheck' tells it to make these walls white instead.<br />
<br />
==== level 3 ====<br />
* WALL[''num1''] has length 0<br />
possible problems: divides by zero in engine/game code<br><br />
resolution: one point should be dragged away<br><br />
<br />
* WALL[''num1''].NEXTWALL=''num2'' already referenced from wall ''num3''<br />
issue: generally, red walls are supposed to have a 1-to-1 relationship, though there are certain uses for 1-to-N connections. Entering '''corruptcheck_noalreadyrefd''' will toggle the ignore state of this "corruption".<br />
<br />
=== sprites ===<br />
==== level 4 ====<br />
* SPRITE[''num1''].SECTNUM=''num2''. Expect problems!<br />
* SPRITE[''num1''].STATNUM=''num2'' Expect problems!<br />
These happen when the statnum or sectnum of a sprite is out of bounds.<br><br />
resolution: delete or reinsert the sprites, or manually set the stat- or sectnums.<br />
<br />
* SPRITE ''num1'' at [''num2'', ''num3''] is out of the maximal grid range [''num4'', ''num5'']<br />
possible problems: integer overflows in engine or game code<br><br />
resolution: '''corruptcheck tryfix''' will place the sprite at its sector's first point.</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=New_BUILD_map_format&diff=11601New BUILD map format2013-05-06T20:01:32Z<p>Helixhorned: /* map-text (TerminX) */ minor correction.</p>
<hr />
<div>This page serves to collect and discuss ideas about a potential future map format for the BUILD engine.<br />
<br />
UPDATE: As of 2013-05-06, there's a prototype implementation supporting saving and loading in the LUNATIC=1 build of EDuke32.<br/><br />
Comments, suggestions and/or criticism welcome!<br />
<br />
<br />
==Current proposal==<br />
<br />
===map-int (helixhorned)===<br />
<br />
The internal, in-memory representation of the map. Pretty much the same thing as now, but with some fields rearranged for convenience, and others added.<br />
<br />
* <s>sector[] .ceiling*, .floor* --> sector[].cf*[2], indexed by YAX_CEILING (0) or YAX_FLOOR (1). So that less code is almost-duplicated. Downside: worse readability?</s><br />
** DONE: ceiling* and floor* members contiguous (respectively). From Lunatic, we can have e.g.<br />
fl = sector[i].floor<br />
fl.pal = 1<br />
using the anonymous struct/union extension of the LuaJIT FFI (TODO).<br />
<br />
* <s>sector[].cfbunch[2], to keep xpanning free; wall[].ynextwall[2], because</s> packing TROR nextwalls into lotag and extra is ugly.<br />
** DONE: the members are named wall[].upwall and wall[].dnwall.<br />
<br />
* (Plagman): for each wall[] (and sector[].cf*?), a 3x3 matrix specifying an affine transformation of the 2D texture coordinates instead of panning/repeat. Base data type: float? Feasible to store only 2x3 submatrix?<br />
<br />
* support for 1:N red wall connections? This would help constructing elevators with TROR.<br />
<br />
* (Hendricks266): parallax sky projection information for sector[].cf*, like SW (as a starting point)<br />
<br />
===map-text (TerminX)===<br />
<br />
Purely textual external map representation, similar to the "Universal Doom Map Format" (UDMF).<br />
<br />
Advantage: decouple external representation from in-memory layout.<br />
<br />
* Support for additional information (author, per-map settings, ...). The most general way of accomplishing that is packing scripting code that would be run on map entry (near/similar-to EVENT_ENTERLEVEL) into the map<br />
<br />
* Support for per-s/w/s variables initialized at map load time instead of overloading existing members. Need to work out interaction with scripting system.<br />
<br />
* DONE: Implementation: a map-text file is written in a safe subset of the Lua language (e.g. only assignments and table constructors). <s>Parse that with LPeg, and then simply</s> load into a Lua state, where it is validated and converted to the internal representation. <-- Needs LJ in the engine!<br />
<br />
* Desirable: work out the format such that editor changes produce small textual changes<s>, for example by "relativifying" references to nextwalls and the like. Example: ''s'':=wall[''w''].nextsector is relative to sector sectorofwall(''w''), .nextwall is relative to sector[''s''].wallptr.</s><br />
<br />
==Behavior of the editor==<br />
<br />
We'd still want to save old map formats on occasion, like when making test maps that need to be opened in e.g. Duke3D 1.5, and when creating maps for other BUILD games.<br />
<br/><br />
DONE: Mapster32 will save V7 or V8 binary formats if there is no TROR, depending on whether V7 limits were exceeded. It will never save V9 (binary TROR) format, though the engine can still read it.<br />
<br />
<br/><br />
[[Category:Developer's corner]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=New_BUILD_map_format&diff=11600New BUILD map format2013-05-06T20:00:09Z<p>Helixhorned: Update.</p>
<hr />
<div>This page serves to collect and discuss ideas about a potential future map format for the BUILD engine.<br />
<br />
UPDATE: As of 2013-05-06, there's a prototype implementation supporting saving and loading in the LUNATIC=1 build of EDuke32.<br/><br />
Comments, suggestions and/or criticism welcome!<br />
<br />
<br />
==Current proposal==<br />
<br />
===map-int (helixhorned)===<br />
<br />
The internal, in-memory representation of the map. Pretty much the same thing as now, but with some fields rearranged for convenience, and others added.<br />
<br />
* <s>sector[] .ceiling*, .floor* --> sector[].cf*[2], indexed by YAX_CEILING (0) or YAX_FLOOR (1). So that less code is almost-duplicated. Downside: worse readability?</s><br />
** DONE: ceiling* and floor* members contiguous (respectively). From Lunatic, we can have e.g.<br />
fl = sector[i].floor<br />
fl.pal = 1<br />
using the anonymous struct/union extension of the LuaJIT FFI (TODO).<br />
<br />
* <s>sector[].cfbunch[2], to keep xpanning free; wall[].ynextwall[2], because</s> packing TROR nextwalls into lotag and extra is ugly.<br />
** DONE: the members are named wall[].upwall and wall[].dnwall.<br />
<br />
* (Plagman): for each wall[] (and sector[].cf*?), a 3x3 matrix specifying an affine transformation of the 2D texture coordinates instead of panning/repeat. Base data type: float? Feasible to store only 2x3 submatrix?<br />
<br />
* support for 1:N red wall connections? This would help constructing elevators with TROR.<br />
<br />
* (Hendricks266): parallax sky projection information for sector[].cf*, like SW (as a starting point)<br />
<br />
===map-text (TerminX)===<br />
<br />
Purely textual external map representation, similar to the "Universal Doom Map Format" (UDMF).<br />
<br />
Advantage: decouple external representation from in-memory layout.<br />
<br />
* Support for additional information (author, per-map settings, ...). The most general way of accomplishing that is packing scripting code that would be run on map entry (near/similar-to EVENT_ENTERLEVEL) into the map<br />
<br />
* Support for per-s/w/s variables initialized at map load time instead of overloading existing members. Need to work out interaction with scripting system.<br />
<br />
* DONE: Implementation: a map-text file is written in a safe subset of the Lua language (e.g. only assignments and table constructors). Parse that with LPeg, and then simply load into a Lua state, where it is validated and converted to the internal representation. <-- Needs LJ in the engine!<br />
<br />
* Desirable: work out the format such that editor changes produce small textual changes<s>, for example by "relativifying" references to nextwalls and the like. Example: ''s'':=wall[''w''].nextsector is relative to sector sectorofwall(''w''), .nextwall is relative to sector[''s''].wallptr.</s><br />
<br />
==Behavior of the editor==<br />
<br />
We'd still want to save old map formats on occasion, like when making test maps that need to be opened in e.g. Duke3D 1.5, and when creating maps for other BUILD games.<br />
<br/><br />
DONE: Mapster32 will save V7 or V8 binary formats if there is no TROR, depending on whether V7 limits were exceeded. It will never save V9 (binary TROR) format, though the engine can still read it.<br />
<br />
<br/><br />
[[Category:Developer's corner]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Suggestions_for_the_future&diff=11576Suggestions for the future2013-04-05T10:04:40Z<p>Helixhorned: </p>
<hr />
<div>This page is intended to provide a list of EDuke32 (not Mapster32) suggestions of features that are moderately or highly complex and thus are not expected to be implemented immediately. Feel free to edit this list, but keep the following format: A leading line with a short description, and a link to a post at the Duke4.net forums.<br />
<br />
== Scripting ==<br />
* Cutscene support - http://forums.duke4.net/topic/2961-paper-cuts-minor-bugs-and-annoyances/page__view__findpost__p__152896<br />
* Access to engine-side tables (e.g. base palette, translucency) - http://forums.duke4.net/topic/775-eduke32-20-and-polymer/page__view__findpost__p__152969<br />
* Expose draw-to-tile functionality - http://forums.duke4.net/topic/2961-paper-cuts-minor-bugs-and-annoyances/page__view__findpost__p__153680<br />
* Creating a palette / lookup table after an image file, similar to tilefromtexture<br />
* A starttrack-style command that can stop a track, or play the title screen or briefing tracks.<br />
* EVENT_CHEAT that returns the ID of an entered cheat.<br />
<br />
== Rendering ==<br />
* "Distorted" skies / other parallax modes in GL renders? - http://forums.duke4.net/topic/6369-duke-nukem-3d-megaton-edition/page__view__findpost__p__153068<br />
<br />
== Other ==</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Suggestions_for_the_future&diff=11575Suggestions for the future2013-04-05T10:02:27Z<p>Helixhorned: /* Scripting */ add a link to Duke.net forums post</p>
<hr />
<div>This page is intended to provide a list of EDuke32 (not Mapster32) suggestions of features that are moderately or highly complex and thus are not expected to be implemented immediately. Feel free to edit this list, but keep the following format: A leading line with a short description, and a link to a post at the Duke4.net forums.<br />
<br />
== Scripting ==<br />
* Cutscene support - http://forums.duke4.net/topic/2961-paper-cuts-minor-bugs-and-annoyances/page__view__findpost__p__152896<br />
* Access to engine-side tables (e.g. base palette, translucency) - http://forums.duke4.net/topic/775-eduke32-20-and-polymer/page__view__findpost__p__152969<br />
* Expose draw-to-tile functionality - http://forums.duke4.net/topic/2961-paper-cuts-minor-bugs-and-annoyances/page__view__findpost__p__153680<br />
* Creating a palette / lookup table after an image file, similar to tilefromtexture<br />
* A starttrack-style command that can stop a track, or play the title screen or briefing tracks.<br />
* EVENT_CHEAT that returns the ID of an entered cheat.<br />
<br />
== Rendering ==<br />
<br />
== Other ==</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Suggestions_for_the_future&diff=11574Suggestions for the future2013-04-04T13:13:52Z<p>Helixhorned: /* Scripting */</p>
<hr />
<div>This page is intended to provide a list of EDuke32 (not Mapster32) suggestions of features that are moderately or highly complex and thus are not expected to be implemented immediately. Feel free to edit this list, but keep the following format: A leading line with a short description, and a link to a post at the Duke4.net forums.<br />
<br />
== Scripting ==<br />
* Cutscene support - http://forums.duke4.net/topic/2961-paper-cuts-minor-bugs-and-annoyances/page__view__findpost__p__152896<br />
* Access to engine-side tables (e.g. base palette, translucency) - http://forums.duke4.net/topic/775-eduke32-20-and-polymer/page__view__findpost__p__152969<br />
* expose draw-to-tile functionality<br />
* Creating a palette / lookup table after an image file, similar to tilefromtexture<br />
* A starttrack-style command that can stop a track, or play the title screen or briefing tracks.<br />
* EVENT_CHEAT that returns the ID of an entered cheat.<br />
<br />
== Rendering ==<br />
<br />
== Other ==</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=DEF_Language&diff=11566DEF Language2013-03-29T17:54:40Z<p>Helixhorned: /* animsounds */ comment anim tokens.</p>
<hr />
<div>DEF files are parsed scripts which allow definition of textures, 3D models, miscellaneous settings, higher-quality sounds and music, and more.<br />
<br />
Comments can be used by prefixing the text with a double forward-slash <code>//</code>, or surrounding the text with <code>/* (comment here) */</code>.<br />
<br />
__TOC__<br />
<br />
==Setup==<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>include</div>=====<br />
<br />
<span {{Def element}}>include <i><filename></i></span><br /><br />
<span {{Def element}}>#include <i><filename></i></span><br />
<br />
Processes the script commands in <i><filename></i> at the point of the <b>include</b> call.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>includedefault</div>=====<br />
<br />
<span {{Def element}}>includedefault</span><br /><br />
<span {{Def element}}>#includedefault</span><br />
<br />
Processes the script commands in the default .def file at the point of the <b>include</b> call. Only useful for command-line overrides.<br />
<br />
For Duke Nukem 3D, the file is duke3d.def. For NAM, it is nam.def. For WWII GI, it is ww2gi.def.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>define</div>=====<br />
<br />
<span {{Def element}}>define <i><label> <integer-value></i></span><br /><br />
<span {{Def element}}>#define <i><label> <integer-value></i></span><br />
<br />
Declares <i><label></i> to represent the numeric value <i><integer-value></i>. <i><integer-value></i> can be a label, in which case the value of the label given is used.<br />
<br />
NOTE: You may find it convenient to include DEFS.CON or NAMES.H to predefine many of the tile (and sound) names in the art file.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>loadgrp</div>=====<br />
<br />
<span {{Def element}}>loadgrp <i><.grp\.zip file></i></span><br />
<br />
The DEF equivalent of the <b>/g</b> command line switch. <b>loadgrp</b> can only be used in the originating .def file; it is usually <b>duke3d.def</b> or the .def file specified by the <b>/h</b> command line switch.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>noautoload</div>=====<br />
<br />
<span {{Def element}}>noautoload</span><br />
<br />
Disables the autoload dir feature.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>cachesize</div>=====<br />
<br />
<span {{Def element}}>cachesize <i><size></i></span><br />
<br />
Specifies the size of the cache in Kb. Don't use this unless you know what you are doing.<br />
<br />
{{Def table2}}<br />
<br />
==Color Palettes==<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>tint</div>=====<br />
<span {{Def element}}>tint <i>{ ... }</i></span><br />
<br />
Defines a Hightile texture tint to simulate palette effects normally used on ART-file tiles.<br />
<br />
Example:<br />
<br />
tint { pal 1 red 127 green 127 blue 255 flags 0 }<br />
tint { pal 2 green 127 blue 127 }<br />
<br />
The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>pal <i><palnum></i></span><br />
<br />
: The palette number the tint applies to.<br />
<br />
: <span {{Def subelement}}>red <i><value></i></span> (or <span {{Def subelement}}>r <i><value></i></span>)<br /><br />
: <span {{Def subelement}}>green <i><value></i></span> (or <span {{Def subelement}}>g <i><value></i></span>)<br /><br />
: <span {{Def subelement}}>blue <i><value></i></span> (or <span {{Def subelement}}>b <i><value></i></span>)<br />
<br />
: Specifies a color component value, in the range of 0 to 255. Unspecified components are assumed to be 255 and any out of range values are clamped to the maximum or minimum as appropriate.<br />
<br />
: <span {{Def subelement}}>flags <i><flags></i></span><br />
<br />
: Specifies any special processing effects to use for the tint. The value of flags may be the sum of any of these values:<br />
<br />
: 0 = no effects<br /><br />
: 1 = convert to greyscale<br /><br />
: 2 = invert colors<br />
<br />
{{Def table2}}<br />
<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>makepalookup</div>=====<br />
<span {{Def element}}>makepalookup <i>{ ... }</i></span><br />
<br />
Interface to creating palette lookups containing both color index remapping (only in effect for non-hightile textures) and fog. This is in contrast to '''fogpal''', which always resets the remapping to the identity mapping ("pal 0").<br />
<br />
<br />
The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>pal <i><palnum></i></span><br />
<br />
: The palette number, must be from 1 to 250.<br />
<br />
: <span {{Def subelement}}>red <i><value></i></span> (or <span {{Def subelement}}>r <i><value></i></span>)<br /><br />
: <span {{Def subelement}}>green <i><value></i></span> (or <span {{Def subelement}}>g <i><value></i></span>)<br /><br />
: <span {{Def subelement}}>blue <i><value></i></span> (or <span {{Def subelement}}>b <i><value></i></span>)<br />
<br />
: Specifies a color component value, in the range of 0 to 63. Unspecified components are assumed to be 0 and any out of range values are clamped to the maximum or minimum as appropriate.<br />
<br />
: <span {{Def subelement}}>remappal <i><palnum></i></span><br />
<br />
: The palette number to take the index remapping from, i.e. 21 for blue -> red. When absent, defaults to 0.<br />
<br />
: <span {{Def subelement}}>remapself</span><br />
<br />
: The same as '''remappal''' ''<palnum>'', where ''<palnum>'' is the number provided for the '''pal''' token.<br />
<br />
<br />
'''Examples'''<br/><br />
<br />
This creates palookup 200 with a fog of (30,0,0) and a blue-to-yellow remapping (assuming it has not been changed before):<br />
makepalookup { pal 200 red 30 remappal 23 }<br />
<br />
This 'fogifies' palookup 21 with a red fog:<br />
makepalookup { pal 21 red 30 remapself }<br />
<br />
This overwrites palookup 21 with a red fog, but clears the blue-to-red remapping:<br />
makepalookup { pal 21 red 30 }<br />
<br />
{{Def table2}}<br />
<br />
== Definitions ==<br />
<br />
===8-Bit .ART File Replacements===<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>tilefromtexture</div>=====<br />
<br />
<span {{Def element}}>tilefromtexture <tilenum> <i>{ ... }</i></span><br />
<br />
Used to generate an 8-bit tile from an image file. Use the alpha channel for transparency instead of the pink color.<br />
<br />
: <span {{Def subelement}}>file <i><filename></i></span><br /><br />
: <span {{Def subelement}}>name <i><filename></i></span><br />
<br />
: <span {{Def subelement}}>alphacut <i><value></i></span><br />
<br />
: <span {{Def subelement}}>xoffset <i><value></i></span><br /><br />
: <span {{Def subelement}}>xoff <i><value></i></span><br />
<br />
: <span {{Def subelement}}>yoffset <i><value></i></span><br /><br />
: <span {{Def subelement}}>yoff <i><value></i></span><br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>animtilerange</div>=====<br />
<br />
<span {{Def element}}>animtilerange <i><tilenum1> <tilenum2> <speed value> <animation value></i></span><br />
<br />
Sets an animation range identical to the ones embedded in the .ART files. An art tile must be defined first.<br />
<br />
Speed value ranges from 0 to 15, 0 being the fastest.<br />
<br />
Values are:<br />
<br />
0 = none<br /><br />
1 = oscillating<br /><br />
2 = forward<br /><br />
3 = backward<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>voxel</div>=====<br />
<br />
<span {{Def element}}>voxel <i><filename> { ... }</i></span><br />
<br />
Defines a voxel to replace sprites. filename is the name of the .KVX file containing the voxel. The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>tile <i><tilenum></i></span><br /><br />
: <span {{Def subelement}}>tile0 <i><tilenum></i></span><br /><br />
: <span {{Def subelement}}>tile1 <i><tilenum></i></span><br />
<br />
: Use these instructions to map tiles that should be rendered as a voxels. Use <b>tile</b> to map a single tile to be rendered as voxels and <b>tile0</b>, <b>tile1</b> together define a range of tiles to be rendered as voxels. The <b>tile0</b> instruction should appear before the <b>tile1</b> instruction to define a correct range.<br />
<br />
: <span {{Def subelement}}>scale <i><value></i></span><br />
<br />
: <i><value></i> is a (possibly fractional) value specifying a scaling factor for the voxelmodel when it is rendered, eg. 1.5 for one-and-a-half times as big.<br />
<br />
{{Def table2}}<br />
<br />
===High Resolution Art===<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>texture</div>=====<br />
<span {{Def element}}>texture <i><tilenum> { ... }</i></span><br />
<br />
Defines a Hightile texture to replace an ART-file tile. <i><tilenum></i> may be a number, or a defined label.<br />
<br />
Example:<br />
<br />
texture 3586 {<br />
pal 0 { file "mymod/tree.png" }<br />
pal 21 { file "mymod/tree_red.png" xscale 2.0 yscale 2.0 alphacut 0 nodownsize nocompress }<br />
glow { file "mymod/tree_light.png" }<br />
detail { file "mymod/plant_texture.png" scale 0.5 }<br />
}<br />
<br />
The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>pal <i><palnum> { ... }</i></span><br />
<br />
: Replaces the palette <i><palnum></i>. If a palette has no pal definition palette 0 definition will be used. Tint will not be used on palettes defined with this instruction.<br />
<br />
: The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span> (or <span {{Def subelement}}>name <i><filename></i></span>)<br />
<br />
:: Defines which texture file to use. File may be any PNG, JPG, DDS, TGA, BMP, GIF or PCX file. This instruction must be supplied.<br />
<br />
:: <span {{Def subelement}}>alphacut <i><cutoff-value></i></span><br />
<br />
:: Sets the level of transparency at which a pixel in the texture is considered opaque. Pixels with more transparency than the cut-off are not drawn to the screen when rendered. The default setting is 0.32, which is just below the 33% transparency level of Build. If your texture has areas that are more transparent than the default, you can lower the cut-off level to preserve that detail.<br />
<br />
:: <span {{Def subelement}}>nocompress</span><br />
<br />
:: Prevents the texture from being compressed using S3TC if texture compression is enabled.<br />
<br />
:: <span {{Def subelement}}>nodownsize</span><br />
<br />
:: Prevents the texture from being downsized.<br />
<br />
:: <span {{Def subelement}}>xscale <i><value></i></span><br /><br />
:: <span {{Def subelement}}>yscale <i><value></i></span><br />
<br />
:: Sets the scale of the hightile texture in relation to the original texture. A <i><value></i> of 1.0 makes it the same size, higher makes it cover more then the original tile and smaller makes it cover a smaller area. <b>xscale</b> (aka <b>scale</b>, <b>detailscale</b>, <b>intensity</b>) sets the horizontal scale and <b>yscale</b> sets the vertical scale.<br />
<br />
: <span {{Def subelement}}>detail <i>{ ... }</i></span><br />
<br />
: Defines a [[Detail_mapping|detail texture]] for the texture. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
:: Specifies which detail texture file to use. File may be any PNG, JPG, DDS, TGA, BMP, GIF or PCX file. This instruction must be supplied.<br />
<br />
:: <span {{Def subelement}}>scale <i><value></i></span><br />
<br />
:: <i><value></i> is a positive floating-point value that'll determine how much your detail map should repeat on your diffuse map (if you want your detail map to repeat five times, use a 1/5 scale : 0.2).<br />
<br />
: <span {{Def subelement}}>glow <i>{ ... }</i></span><br />
<br />
: Defines a [[Glow_mapping|glow map]] for the texture. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
:: Specifies which glow map file to use. This instruction must be supplied.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>skybox</div>=====<br />
<br />
<span {{Def element}}>skybox <i>{ ... }</i></span><br />
<br />
Defines a skybox that overrides a parallaxing floor or ceiling in OpenGL rendering modes.<br />
<br />
Example:<br />
skybox {<br />
tile 3586 pal 0<br />
front "mymod/sky_1.png" nocompress <br />
right "mymod/sky_2.png" nocompress <br />
back "mymod/sky_3.png" nocompress<br />
left "mymod/sky_4.png" nocompress <br />
top "mymod/sky_5.png" nocompress<br />
down "mymod/sky_6.png" nocompress<br />
}<br />
<br />
The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>tile <i><tilenum></i></span><br />
<br />
: Specifies the ART file tile to override.<br />
<br />
: <span {{Def subelement}}>pal <i><palnum></i></span><br />
<br />
: Specifies the palette number the skybox should happen for.<br />
<br />
: <span {{Def subelement}}>front <i><filename></i></span> (or <span {{Def subelement}}>Front</span> / <span {{Def subelement}}>ft</span> / <span {{Def subelement}}>forward</span>)<br /><br />
: <span {{Def subelement}}>right <i><filename></i></span> (or <span {{Def subelement}}>rt</span> / <span {{Def subelement}}>right</span>)<br /><br />
: <span {{Def subelement}}>back <i><filename></i></span> (or <span {{Def subelement}}>bk</span> / <span {{Def subelement}}>back</span>)<br /><br />
: <span {{Def subelement}}>left <i><filename></i></span> (or <span {{Def subelement}}>lf</span> / <span {{Def subelement}}>left</span>) / <span {{Def subelement}}>lt</span>)<br /><br />
: <span {{Def subelement}}>top <i><filename></i></span> (or <span {{Def subelement}}>up</span> / <span {{Def subelement}}>top</span> / <span {{Def subelement}}>ceiling</span> / <span {{Def subelement}}>ceil</span>)<br /><br />
: <span {{Def subelement}}>down <i><filename></i></span> (or <span {{Def subelement}}>dn</span> / <span {{Def subelement}}>bottom</span> / <span {{Def subelement}}>floor</span> / <span {{Def subelement}}>down</span>)<br />
<br />
: Defines a single face of the skybox where facename may be any of these keywords appropriate for the face in question:<br />
<br />
: NOTE: All six faces are required to be specified.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>model</div>=====<br />
<br />
<span {{Def element}}>model <i><filename> { ... }</i></span><br />
<br />
Defines a model to replace certain sprites in the game when running in 32-bit OpenGL mode. <i><filename></i> is the model file in md2 or md3 format.<br />
<br />
Note: md2 is considered deprecated.<br />
<br />
The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>scale <i><value></i></span><br />
<br />
: <i><value></i> is a (possibly fractional) value specifying a scaling factor for the model when it is rendered, eg. 1.5 for one-and-a-half times as big.<br />
<br />
: <span {{Def subelement}}>shade <i><shade-offset></i></span><br />
<br />
: <i><shade-offset></i> is an integer value specifying how much to bias the sprite's shade value by. A negative value for this makes the model brighter. Conversely, a positive value makes it darker.<br />
<br />
: <span {{Def subelement}}>zadd <i><offset></i></span><br />
<br />
: <i><offset></i> is a (possibly fractional) value specifying a height offset for the model. Quake models are aligned in the center while Build models are aligned at the floor. Using this command will allow Build to use Quake models without modification to the MD2/3 file itself.<br />
<br />
: <span {{Def subelement}}>flags <i><flags></i></span><br />
<br />
: Specifies any special properties the model should have, the values of which should be added together to combine multiple options.<br />
: 0: default value<br /><br />
: 1: Prevents the the model from being affected by the tints.<br /><br />
<br />
: <span {{Def subelement}}>skin <i>{ ... }</i></span><br />
<br />
: Defines a skin to be used on the model for all frames declared after this command. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>pal <i><palnum></i></span><br />
<br />
:: Specifies which palette this skin maps to.<br />
<br />
:: <span {{Def subelement}}>surface <i><surfnum></i></span><br />
<br />
:: Specifies which MD3 surface this skin should be applied to. This has no significance for MD2 models.<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
:: Specifies the texture file to use for the skin. File may be any PNG, JPG, DDS, TGA, BMP, GIF or PCX file<br />
<br />
:: IMPORTANT: If your model exists in a subdirectory (ie. the model filename includes a path to the .md2/3) you will need to give the same path to filename if the skin is in the same directory.<br />
<br />
: <span {{Def subelement}}>anim <i>{ ... }</i></span><br />
<br />
: Defines an animation from a group of frames in the model. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>frame0 <i><framename></i></span><br /><br />
:: <span {{Def subelement}}>frame1 <i><framename></i></span><br />
<br />
:: Specifies the names of the start (<b>frame0</b>) and end (<b>frame1</b>) frames of the animation.<br />
<br />
:: <span {{Def subelement}}>fps <i><fps></i></span><br />
<br />
:: Specifies the frame rate at which the animation should play. This value may be fractional.<br />
<br />
:: <span {{Def subelement}}>flags <i><flags></i></span><br />
<br />
:: Specifies any special properties the animation should have, the values of which should be added together to combine multiple options.<br />
<br />
:: Valid options are:<br />
:: 0 none (looping animation)<br /><br />
:: 1 one-shot (plays beginning to end once and stops on the last frame).<br />
<br />
: <span {{Def subelement}}>frame <i>{ ... }</i></span><br />
<br />
: Defines a range of ART-file tiles to correspond with the given frame/animation of the model. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>name <i><framename></i></span><br /><br />
:: <span {{Def subelement}}>frame <i><framename></i></span><br />
<br />
:: If <i><framename></i> is identical to the starting frame of an animation, the engine will play that animation, otherwise the replacement will be static. You can choose to use the <b>frame</b> or <b>name</b> versions of this instruction as both are identical.<br />
<br />
:: <span {{Def subelement}}>tile <i><tilenum></i></span><br /><br />
:: <span {{Def subelement}}>tile0 <i><tilenum></i></span><br /><br />
:: <span {{Def subelement}}>tile1 <i><tilenum></i></span><br />
<br />
:: Use the tile instruction to specify an ART-file tile which this model should replace. Use the <b>tile0</b> and <b>tile1</b> instructions together to specify a range of ART-file tiles. If you use <b>tile0</b>, you must also have a <b>tile1</b>. You may not use the same instruction twice to specify multiple ranges.<br />
<br />
:: <span {{Def subelement}}>smoothduration <i><value></i></span><br />
<br />
:: If smoothduration is non-zero switching from another animation to the one defined by that frame block will trigger an intermediary animation smoothing state of duration <i><value></i> seconds.<br />
<br />
:: <span {{Def subelement}}>pal <i><value></i></span><br />
<br />
:: Makes the model definition exclusive for the this pal. This allow to assign different models for different pal.<br />
<br />
: <span {{Def subelement}}>hud <i>{ ... }</i></span><br />
<br />
: Defines a range of ART-file tiles to use with a heads-up-display. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>tile <i><tilenum></i></span><br /><br />
:: <span {{Def subelement}}>tile0 <i><tilenum></i></span><br /><br />
:: <span {{Def subelement}}>tile1 <i><tilenum></i></span><br />
<br />
:: <b>tile0</b> and <b>tile1</b> together specify a range of ART-file tiles which this model frame should replace when rendered as part of the HUD. You can specify individual tiles using a single tile command.<br />
<br />
:: <span {{Def subelement}}>xadd <i><offset></i></span><br /><br />
:: <span {{Def subelement}}>yadd <i><offset></i></span><br /><br />
:: <span {{Def subelement}}>zadd <i><offset></i></span><br /><br />
:: <span {{Def subelement}}>angadd <i><offset></i></span><br />
<br />
:: Use these offsets to fine-tune the location of the model placement. <b>xadd</b>, <b>yadd</b>, and <b>zadd</b> are position offsets relative to the viewer's orienation. You can use floating point values with them. <b>angadd</b> is a Build angle offset. (512 90 degrees, 1024 180 degrees, etc...).<br />
<br />
:: <span {{Def subelement}}>hide</span><br />
<br />
:: Some weapons use multiple ART tiles for constructing the gun or animation. Use this option to hide parts that you don't need in your replacement.<br />
<br />
:: <span {{Def subelement}}>nobob</span><br />
<br />
:: By default, the HUD model offset is affected by the player bobbing offset when the player is walking. Use this option to disable that.<br />
<br />
:: <span {{Def subelement}}>flipped</span><br />
<br />
:: Use this option to apply the settings inside the hud block only if the object is normally rendered x-flipped (mirror image). Some weapons, such as the devastator, are rendered in 2 pieces, the left devastator is actually a mirror image of the right.<br />
<br />
:: <span {{Def subelement}}>nodepth</span><br />
<br />
:: Use this to render a HUD model without the use of the depth buffer. Normally, you should avoid this. The one exception where this is useful is for the spinning nuke menu icon because it should always be in front -- and it just happens to be convex, which is the one case that is safe with the depth buffer disabled.<br />
<br />
: <span {{Def subelement}}>detail <i>{ ... }</i></span><br />
<br />
: Defines a [[Detail_mapping|detail texture]] for the model. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
:: Specifies which detail texture file to use. File may be any PNG, JPG, DDS, TGA, BMP, GIF or PCX file. This instruction must be supplied.<br />
<br />
:: <span {{Def subelement}}>scale <i><value></i></span><br />
<br />
:: <i><value></i> is a positive floating-point value that'll determine how much your detail map should repeat on your diffuse map (if you want your detail map to repeat five times, use a 1/5 scale : 0.2).<br />
<br />
:: <span {{Def subelement}}>surface <i><surfnum></i></span><br />
<br />
:: Specifies which MD3 surface this detail texture should be applied to. This has no significance for MD2 models.<br />
<br />
: <span {{Def subelement}}>glow <i>{ ... }</i></span><br />
<br />
: Defines a [[Glow_mapping|glow map]] for the model. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
:: Specifies which glow map file to use. This instruction must be supplied.<br />
<br />
:: <span {{Def subelement}}>surface <i><surfnum></i></span><br />
<br />
:: Specifies which MD3 surface this glow map should be applied to. This has no significance for MD2 models.<br />
<br />
{{Def table2}}<br />
<br />
===Audio===<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>music</div>=====<br />
<span {{Def element}}>music <i>{ ... }</i></span><br />
<br />
Example:<br />
music { id "E1L1" file "stalker1.ogg" }<br />
music { id "intro" file "grabbag.ogg" }<br />
music { id "briefing" file "briefing.ogg" }<br />
music { id "loading" file "menusng2.flac" }<br />
<br />
: <span {{Def subelement}}>id <i><value></i></span><br />
<br />
: <i><value></i> is "intro", "briefing", "loading" or "E'''x'''L'''y'''" (where x is the episode and y is the level).<br /><br />
<br />
: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
: Specifies which audio file to use. File types: MIDI, Ogg Vorbis, FLAC<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>sound</div>=====<br />
<span {{Def element}}>sound <i>{ ... }</i></span><br />
<br />
Example:<br />
sound { id "249" file "bonus.ogg" }<br />
<br />
: <span {{Def subelement}}>id <i><value></i></span><br />
<br />
: Specifies the ID of sound. The ID can be found in DEFS.CON. '''NOTE:''' This should only be used for HRP-like replacement of existing sounds. New sounds should use [[definesound]].<br />
<br />
: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
: Specifies which audio file to use. File types: WAV, VOC, Ogg Vorbis, FLAC<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>animsounds</div>=====<br />
<span {{Def element}}>animsounds <anim> <i>{ frame1 sound1 frame2 sound2 ... }</i></span><br />
<br />
'''<anim>''' has to be one of the following tokens corresponding to hard-coded Duke3D anims:<br />
* cineov2: Episode 2 ending<br />
* cineov3: Episode 3 ending<br />
* RADLOGO: "Come back to bed, Duke..."<br />
* DUKETEAM: Duke3D team still<br />
* logo: Intro nuke logo<br />
* vol41a: Episode 4 intro 1<br />
* vol42a: Episode 4 intro 2<br />
* vol43a: Episode 4 intro 3<br />
* vol4e1: Episode 4 ending 1<br />
* vol4e2: Episode 4 ending 2<br />
* vol4e3: Episode 4 ending 3<br />
<br />
The '''frame'''''N'''s (1-based frame numbers) have to be in ascending order. They do not need to be strictly ascending, so that a frame may have more than one sound.<br />
<br />
Example: for Duke3D's XBLA nuke logo animation (IVF extracted from nuke.webm),<br />
the following definition overlays the video with a sound sequence similar<br />
(identical save for timing) to the original nuke animation:<br />
// frame 1: FLY_BY, frame 64: PIPEBOMB_EXPLODE<br />
animsounds logo { 1 244 64 14 }<br />
{{Def table2}}<br />
<br />
== Un-Definitions ==<br />
<br />
The main use for these is for cases in which the .ART files are somewhat different, and you want to ensure compatibility for the new art without new textures or models. A good example of this is [http://hendricks266.duke4.net/nw_plus.php Duke: Nuclear Winter Plus] by [[Hendricks266]]. (see [http://svn.eduke32.com/nw_plus/nwinter/undef.def undef.def])<br />
<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>undeftexture</div>=====<br />
<span {{Def element}}>undeftexture <i><tile></i></span><br /><br />
<span {{Def element}}>undeftexturerange <i><tile0> <tile1></i></span><br />
<br />
This is for undefining Hightile textures.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>undefmodel</div>=====<br />
<span {{Def element}}>undefmodel <i><tile></i></span><br /><br />
<span {{Def element}}>undefmodelrange <i><tile0> <tile1></i></span><br /><br />
<span {{Def element}}>undefmodelof <i><tile></i></span><sup>1</sup><br />
<br />
This is for undefining 3D models.<br />
<br />
With <b>undefmodelof</b> all the tiles grouped together within the same .def code block are un-defined.<br />
<br />
<sup>1</sup>Support of <b>undefmodelof</b> is disabled indefinitely due to problems with its implementation.<br />
<br />
{{Def table2}}<br />
<br />
== Misc ==<br />
<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>dummytile</div>=====<br />
<br />
<span {{Def element}}>dummytile <i><tilenum> <x-dimension> <y-dimension></i></span><br /><br />
<span {{Def element}}>dummytilerange <i><tilenum1> <tilenum2> <x-dimension> <y-dimension></i></span><br />
<br />
Used in DEF files to create a blank tile at location <b><''tilenum''></b> of the dimensions <b><''x-dimension''></b> and <b><''y-dimension''></b>. This allows the creation of placeholder tiles for use with definetexture\texture without having to edit .ART files.<br />
<br />
'''NOTE:''' In most circumstances '''setuptile''' is a better command to use, unless you specifically want black boxes.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>setuptile</div>=====<br />
<br />
<span {{Def element}}>setuptile <i><tilenum> <x-dimension> <y-dimension> <x-offset> <y-offset></i></span><br /><br />
<span {{Def element}}>setuptilerange <i><tilenum1> <tilenum2> <x-dimension> <y-dimension> <x-offset> <y-offset></i></span><br />
<br />
Used in DEF files to setup the properties which are applied to the highres replacement of the tile. This allows the creation of placeholder tiles for use with definetexture\texture without having to edit .ART files.<br />
<br />
Unlike <b>dummytile</b> this command won't draw black squares and accepts offsets.<br />
<br />
It doesn't affect 8-bit tiles or HUD images.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>dummytilefrompic</div>=====<br />
<br />
<span {{Def element}}>dummytilefrompic <i><tileID> <file></i></span><br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>fogpal</div>=====<br />
<br />
<span {{Def element}}>fogpal <i><palette number> <red intensity> <green intensity> <blue intensity></i></span><br />
<br />
<b>fogpal</b> defines a palette a sector-based fog effect. To use it, change the pal of your sector to the pal defined with <b>fogpal</b>.<br />
<br />
Intensities range from 0-63. Palettes 26, 27, 28 and 29 are pre-defined for you as white, red, green and blue respectively. Sector visibility controls fog density.<br />
<br />
{{Def table2}}<br />
<br />
== Mapster32 ==<br />
<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>2dcol</div>=====<br />
<br />
<span {{Def element}}>2dcol <i><colornum> <red> <green> <blue></i></span><br />
<br />
<b>2dcol</b> is a definition of a color to be used in the 2D mode of [[Mapster32]], in conjunction with <b>spritecol</b> that works similarly to <b>tint</b> and <b>definetint</b>. <i><colornum></i> is a unique identifier, similar to [[define|defines]] and [[gamevar|gamevars]]. <i><red></i>, <i><green></i>, and <i><blue></i> are the RGB color values that are mixed together to get your custom color.<br />
<br />
Certain low values are already hard-coded, and redefining them will change colors of the default layout. If you know the correct value, you can replace the default colors used for <b>all</b> the sprites. You truly have the power to customize Mapster32. Lime green 2D mode background, anyone?<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>spritecol</div>=====<br />
<br />
<span {{Def element}}>spritecol <i><tilenum> <normalcolornum> <blockingcolornum></i></span><br />
<br />
<b>spritecol</b> is a definition of the color a sprite will appear in 2D mode, instead of the standard sky blue and hot pink, or another special color (like yellow for hard-coded enemies or white for the [[Special_Sprite_Reference_Guide|special sprites]]). <b><''normalcolornum''></b> is the <b><''colornum''></b> of the <b>2dcol</b> definition of your color for the standard sprite color as defined by <b><''tilenum''></b>. The same goes for <b><''blockingcolornum''></b>, except that this value is for when the sprite has the first bit of [[cstat]] set (1) (<code>[']+[B]</code> keys in [[Mapster32]]), which is the blocking flag.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>spritehotkey</div>=====<br />
<br />
<span {{Def element}}>spritehotkey <i><key> <spriteID></i></span><br />
<br />
Pressing a key from 1 to 0 on the upper row before pressing S will make the inserted sprite's picnum change according to this definition.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>tilegroup</div>=====<br />
<br />
<span {{Def element}}>tilegroup <i><groupname> { ... }</i></span><br />
<br />
Defines group for the tile selector (press 'T'). Mapster32 loads TILES.CFG on startup.<br />
<br />
: <span {{Def subelement}}>tile <i><tilenum></i></span><br /><br />
: <span {{Def subelement}}>tilerange <i><tilenum1> <tilenum2></i></span><br /><br />
: <span {{Def subelement}}>tiles <i>{ <tile1> <tile2> ... <tileN> }</i></span><br />
<br />
: Adds tiles to the group. Names can be found in DEFS.CON.<br />
<br />
: <span {{Def subelement}}>hotkey <i><value></i></span><br />
<br />
: Specifies the hotkey for the group.<br />
<br />
: <span {{Def subelement}}>colors <i><value1> <value2></i></span><br />
<br />
: Colors are the colors for Blocking OFF and Blocking ON.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>alphabet</div>=====<br />
<br />
<span {{Def element}}>alphabet <i>{ ... }</i></span><br />
<br />
Defines alphabet for the input text feature (Ctrl+T). Mapster32 loads TILES.CFG on startup.<br />
<br />
: <span {{Def subelement}}>map <i><value> <tile></i></span><br />
<br />
: <span {{Def subelement}}>mapa <i><string> <tile></i></span><br />
<br />
: <span {{Def subelement}}>maprange <i><value1> <value2> <tile></i></span><br />
<br />
: <span {{Def subelement}}>maprangea <i><char1> <char2> <tile></i></span><br />
<br />
: <span {{Def subelement}}>offset <i><value> <offset></i></span><br />
<br />
: <span {{Def subelement}}>offseta <i><string> <offset></i></span><br />
<br />
{{Def table2}}<br />
<br />
== Deprecated Commands ==<br />
<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>definetexture</div>=====<br />
<br />
<span {{Def element}}>definetexture <i><tile-number> <palette-number> <x-center> <y-center> <x-size> <y-size> <filename></i></span><br />
<br />
Defines a Hightile texture to replace an ART-file picture. <i><tile-number></i> may be an number, or a defined label. Use a value of 0 for <i><x-center></i> and <i><y-center></i> and a value of -1 for <i><x-size></i> and <i><y-size></i> for now until these values are actually used. <i><filename></i> may be any PNG, JPG, DDS, TGA, BMP, GIF, or PCX file.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>definetint</div>=====<br />
<br />
<span {{Def element}}>definetint <i><palette-number> <red> <green> <blue> <flags></i></span><br />
<br />
Defines a Hightile texture tint to simulate palette effects normally used on ART-file tiles. <i><red></i>, <i><green></i>, and <i><blue></i> are numbers in the range 0 to 255 which specify the color the tint should look like. <i><flags></i> specifies any processing effects to use. Valid values are:<br />
<br />
0 no effects<br /><br />
1 convert to greyscale<br /><br />
2 invert colours<br /><br />
<br />
These values can be added together to produce a combination of effects.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>defineskybox</div>=====<br />
<br />
<span {{Def element}}>defineskybox <i><tile-number> <palette-number> <reserved> <front-face-filename> <right-face-filename> <back-face-filename> <left-face-filename> <top-face-filename> <bottom-face-filename></i></span><br />
<br />
Defines a sky-box composed of six images mapped onto the faces <br />
of a cube to be used when <i><tile-number></i> is set as parallaxing in 32-bit OpenGL mode. <i><reserved></i> should be 0 for now until its meaning is fully conceived.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>definemodel</div>=====<br />
<br />
<span {{Def element}}>definemodel <i><filename> <scale> <shade-offset></i></span><br />
<br />
Defines an MD2/3-format model file to replace certain sprites in the game. See <b>definemodelframe</b> and <b>definemodelanim</b> for details on how to specify the ART-file tiles to replace. <i><filename></i> is the name of the MD2/3 model. <i><scale></i> is a (possibly fractional) value specifying a scaling factor for the model when it is rendered, eg. 1.5 for one-and-a-half times as big. <i><shade-offset></i> is an integer value specifying how much to bias the sprite's shade value by. A negative value for this makes the model brighter. Conversely, a positive value makes it darker.<br />
<br />
: <span {{Def subelement}}>definemodelskin <i><palette-number> <filename></i></span><br />
<br />
: Defines a skin to be used on the model for all frames declared after this command, when the sprite palette is equal to <i><palette-number></i>. (This makes more sense when given a demonstration.) IMPORTANT: If your model exists in a subdirectory (ie. <b>definemodel</b> includes a path to the .md2/3) you will need to give the same path to filename if the skin is in the same directory.<br />
<br />
: <span {{Def subelement}}>selectmodelskin <i><skin ID></i></span><br />
<br />
: Selects a model skin.<br />
<br />
: <span {{Def subelement}}>definemodelanim <i><start-frame> <end-frame> <frame-rate> <flags></i></span><br />
<br />
: Defines an animation from a group of frames in the model given by the last preceding <b>definemodel</b> instruction. <i><start-frame></i> and <i><end-frame></i> specify the names of the starting and ending frames of the animation. <i><frame-rate></i> is the frame rate at which the animation should play. This value can be fractional. <i><flags></i> specifies any special properties the animation should have. Valid options are:<br />
<br />
: 0 none (looping animation)<br /><br />
: 1 one-shot (plays beginning to end once and stops on the last frame)<br />
<br />
: <span {{Def subelement}}>definemodelframe <i><frame-name> <first-tile> <last-tile></i></span><br />
<br />
: Defines a range of ART-file tiles to correspond with the given frame of the model specified in the last preceding <b>definemodel</b> instruction. <i><frame-name></i> is the name of the frame, which if identical to the starting frame of a <b>definemodelanim</b> animation will play that animation. If <i><frame-name></i> is not corresponding with an animation, the replacement will be static. <i><first-tile></i> and <i><last-tile></i> specify a range of ART-file tiles which this model frame should replace.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>definevoxel</div>=====<br />
<br />
<span {{Def element}}>definevoxel <i><filename></i></span><br /><br />
<span {{Def element}}>definevoxeltiles <i><first-tile> <last-tile></i></span><br />
<br />
Defines a voxel to replace sprites in the game. <i><filename></i> is the name of the .KVX file containing the voxel.<br />
<br />
<b>definevoxeltiles</b> defines the range of ART-file tiles to replace with the voxel.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>alphahack</div>=====<br />
<br />
<span {{Def element}}>alphahack <i><tilenum> <value></i></span><br /><br />
<span {{Def element}}>alphahackrange <i><tilenum1> <tilenum2> <value></i></span><br /><br />
<br />
<b>alphahack</b> is a deprecated command previously used to improve alpha filtering of highres art of <i><tilenum></i>. <i><value></i> is always -1.<br />
<br />
{{Def table2}}<br />
<br />
[[Category:All commands]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=DEF_Language&diff=11565DEF Language2013-03-29T17:27:58Z<p>Helixhorned: /* Audio */ add "animsounds", slightly edited from r2242 commit message.</p>
<hr />
<div>DEF files are parsed scripts which allow definition of textures, 3D models, miscellaneous settings, higher-quality sounds and music, and more.<br />
<br />
Comments can be used by prefixing the text with a double forward-slash <code>//</code>, or surrounding the text with <code>/* (comment here) */</code>.<br />
<br />
__TOC__<br />
<br />
==Setup==<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>include</div>=====<br />
<br />
<span {{Def element}}>include <i><filename></i></span><br /><br />
<span {{Def element}}>#include <i><filename></i></span><br />
<br />
Processes the script commands in <i><filename></i> at the point of the <b>include</b> call.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>includedefault</div>=====<br />
<br />
<span {{Def element}}>includedefault</span><br /><br />
<span {{Def element}}>#includedefault</span><br />
<br />
Processes the script commands in the default .def file at the point of the <b>include</b> call. Only useful for command-line overrides.<br />
<br />
For Duke Nukem 3D, the file is duke3d.def. For NAM, it is nam.def. For WWII GI, it is ww2gi.def.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>define</div>=====<br />
<br />
<span {{Def element}}>define <i><label> <integer-value></i></span><br /><br />
<span {{Def element}}>#define <i><label> <integer-value></i></span><br />
<br />
Declares <i><label></i> to represent the numeric value <i><integer-value></i>. <i><integer-value></i> can be a label, in which case the value of the label given is used.<br />
<br />
NOTE: You may find it convenient to include DEFS.CON or NAMES.H to predefine many of the tile (and sound) names in the art file.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>loadgrp</div>=====<br />
<br />
<span {{Def element}}>loadgrp <i><.grp\.zip file></i></span><br />
<br />
The DEF equivalent of the <b>/g</b> command line switch. <b>loadgrp</b> can only be used in the originating .def file; it is usually <b>duke3d.def</b> or the .def file specified by the <b>/h</b> command line switch.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>noautoload</div>=====<br />
<br />
<span {{Def element}}>noautoload</span><br />
<br />
Disables the autoload dir feature.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>cachesize</div>=====<br />
<br />
<span {{Def element}}>cachesize <i><size></i></span><br />
<br />
Specifies the size of the cache in Kb. Don't use this unless you know what you are doing.<br />
<br />
{{Def table2}}<br />
<br />
==Color Palettes==<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>tint</div>=====<br />
<span {{Def element}}>tint <i>{ ... }</i></span><br />
<br />
Defines a Hightile texture tint to simulate palette effects normally used on ART-file tiles.<br />
<br />
Example:<br />
<br />
tint { pal 1 red 127 green 127 blue 255 flags 0 }<br />
tint { pal 2 green 127 blue 127 }<br />
<br />
The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>pal <i><palnum></i></span><br />
<br />
: The palette number the tint applies to.<br />
<br />
: <span {{Def subelement}}>red <i><value></i></span> (or <span {{Def subelement}}>r <i><value></i></span>)<br /><br />
: <span {{Def subelement}}>green <i><value></i></span> (or <span {{Def subelement}}>g <i><value></i></span>)<br /><br />
: <span {{Def subelement}}>blue <i><value></i></span> (or <span {{Def subelement}}>b <i><value></i></span>)<br />
<br />
: Specifies a color component value, in the range of 0 to 255. Unspecified components are assumed to be 255 and any out of range values are clamped to the maximum or minimum as appropriate.<br />
<br />
: <span {{Def subelement}}>flags <i><flags></i></span><br />
<br />
: Specifies any special processing effects to use for the tint. The value of flags may be the sum of any of these values:<br />
<br />
: 0 = no effects<br /><br />
: 1 = convert to greyscale<br /><br />
: 2 = invert colors<br />
<br />
{{Def table2}}<br />
<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>makepalookup</div>=====<br />
<span {{Def element}}>makepalookup <i>{ ... }</i></span><br />
<br />
Interface to creating palette lookups containing both color index remapping (only in effect for non-hightile textures) and fog. This is in contrast to '''fogpal''', which always resets the remapping to the identity mapping ("pal 0").<br />
<br />
<br />
The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>pal <i><palnum></i></span><br />
<br />
: The palette number, must be from 1 to 250.<br />
<br />
: <span {{Def subelement}}>red <i><value></i></span> (or <span {{Def subelement}}>r <i><value></i></span>)<br /><br />
: <span {{Def subelement}}>green <i><value></i></span> (or <span {{Def subelement}}>g <i><value></i></span>)<br /><br />
: <span {{Def subelement}}>blue <i><value></i></span> (or <span {{Def subelement}}>b <i><value></i></span>)<br />
<br />
: Specifies a color component value, in the range of 0 to 63. Unspecified components are assumed to be 0 and any out of range values are clamped to the maximum or minimum as appropriate.<br />
<br />
: <span {{Def subelement}}>remappal <i><palnum></i></span><br />
<br />
: The palette number to take the index remapping from, i.e. 21 for blue -> red. When absent, defaults to 0.<br />
<br />
: <span {{Def subelement}}>remapself</span><br />
<br />
: The same as '''remappal''' ''<palnum>'', where ''<palnum>'' is the number provided for the '''pal''' token.<br />
<br />
<br />
'''Examples'''<br/><br />
<br />
This creates palookup 200 with a fog of (30,0,0) and a blue-to-yellow remapping (assuming it has not been changed before):<br />
makepalookup { pal 200 red 30 remappal 23 }<br />
<br />
This 'fogifies' palookup 21 with a red fog:<br />
makepalookup { pal 21 red 30 remapself }<br />
<br />
This overwrites palookup 21 with a red fog, but clears the blue-to-red remapping:<br />
makepalookup { pal 21 red 30 }<br />
<br />
{{Def table2}}<br />
<br />
== Definitions ==<br />
<br />
===8-Bit .ART File Replacements===<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>tilefromtexture</div>=====<br />
<br />
<span {{Def element}}>tilefromtexture <tilenum> <i>{ ... }</i></span><br />
<br />
Used to generate an 8-bit tile from an image file. Use the alpha channel for transparency instead of the pink color.<br />
<br />
: <span {{Def subelement}}>file <i><filename></i></span><br /><br />
: <span {{Def subelement}}>name <i><filename></i></span><br />
<br />
: <span {{Def subelement}}>alphacut <i><value></i></span><br />
<br />
: <span {{Def subelement}}>xoffset <i><value></i></span><br /><br />
: <span {{Def subelement}}>xoff <i><value></i></span><br />
<br />
: <span {{Def subelement}}>yoffset <i><value></i></span><br /><br />
: <span {{Def subelement}}>yoff <i><value></i></span><br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>animtilerange</div>=====<br />
<br />
<span {{Def element}}>animtilerange <i><tilenum1> <tilenum2> <speed value> <animation value></i></span><br />
<br />
Sets an animation range identical to the ones embedded in the .ART files. An art tile must be defined first.<br />
<br />
Speed value ranges from 0 to 15, 0 being the fastest.<br />
<br />
Values are:<br />
<br />
0 = none<br /><br />
1 = oscillating<br /><br />
2 = forward<br /><br />
3 = backward<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>voxel</div>=====<br />
<br />
<span {{Def element}}>voxel <i><filename> { ... }</i></span><br />
<br />
Defines a voxel to replace sprites. filename is the name of the .KVX file containing the voxel. The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>tile <i><tilenum></i></span><br /><br />
: <span {{Def subelement}}>tile0 <i><tilenum></i></span><br /><br />
: <span {{Def subelement}}>tile1 <i><tilenum></i></span><br />
<br />
: Use these instructions to map tiles that should be rendered as a voxels. Use <b>tile</b> to map a single tile to be rendered as voxels and <b>tile0</b>, <b>tile1</b> together define a range of tiles to be rendered as voxels. The <b>tile0</b> instruction should appear before the <b>tile1</b> instruction to define a correct range.<br />
<br />
: <span {{Def subelement}}>scale <i><value></i></span><br />
<br />
: <i><value></i> is a (possibly fractional) value specifying a scaling factor for the voxelmodel when it is rendered, eg. 1.5 for one-and-a-half times as big.<br />
<br />
{{Def table2}}<br />
<br />
===High Resolution Art===<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>texture</div>=====<br />
<span {{Def element}}>texture <i><tilenum> { ... }</i></span><br />
<br />
Defines a Hightile texture to replace an ART-file tile. <i><tilenum></i> may be a number, or a defined label.<br />
<br />
Example:<br />
<br />
texture 3586 {<br />
pal 0 { file "mymod/tree.png" }<br />
pal 21 { file "mymod/tree_red.png" xscale 2.0 yscale 2.0 alphacut 0 nodownsize nocompress }<br />
glow { file "mymod/tree_light.png" }<br />
detail { file "mymod/plant_texture.png" scale 0.5 }<br />
}<br />
<br />
The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>pal <i><palnum> { ... }</i></span><br />
<br />
: Replaces the palette <i><palnum></i>. If a palette has no pal definition palette 0 definition will be used. Tint will not be used on palettes defined with this instruction.<br />
<br />
: The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span> (or <span {{Def subelement}}>name <i><filename></i></span>)<br />
<br />
:: Defines which texture file to use. File may be any PNG, JPG, DDS, TGA, BMP, GIF or PCX file. This instruction must be supplied.<br />
<br />
:: <span {{Def subelement}}>alphacut <i><cutoff-value></i></span><br />
<br />
:: Sets the level of transparency at which a pixel in the texture is considered opaque. Pixels with more transparency than the cut-off are not drawn to the screen when rendered. The default setting is 0.32, which is just below the 33% transparency level of Build. If your texture has areas that are more transparent than the default, you can lower the cut-off level to preserve that detail.<br />
<br />
:: <span {{Def subelement}}>nocompress</span><br />
<br />
:: Prevents the texture from being compressed using S3TC if texture compression is enabled.<br />
<br />
:: <span {{Def subelement}}>nodownsize</span><br />
<br />
:: Prevents the texture from being downsized.<br />
<br />
:: <span {{Def subelement}}>xscale <i><value></i></span><br /><br />
:: <span {{Def subelement}}>yscale <i><value></i></span><br />
<br />
:: Sets the scale of the hightile texture in relation to the original texture. A <i><value></i> of 1.0 makes it the same size, higher makes it cover more then the original tile and smaller makes it cover a smaller area. <b>xscale</b> (aka <b>scale</b>, <b>detailscale</b>, <b>intensity</b>) sets the horizontal scale and <b>yscale</b> sets the vertical scale.<br />
<br />
: <span {{Def subelement}}>detail <i>{ ... }</i></span><br />
<br />
: Defines a [[Detail_mapping|detail texture]] for the texture. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
:: Specifies which detail texture file to use. File may be any PNG, JPG, DDS, TGA, BMP, GIF or PCX file. This instruction must be supplied.<br />
<br />
:: <span {{Def subelement}}>scale <i><value></i></span><br />
<br />
:: <i><value></i> is a positive floating-point value that'll determine how much your detail map should repeat on your diffuse map (if you want your detail map to repeat five times, use a 1/5 scale : 0.2).<br />
<br />
: <span {{Def subelement}}>glow <i>{ ... }</i></span><br />
<br />
: Defines a [[Glow_mapping|glow map]] for the texture. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
:: Specifies which glow map file to use. This instruction must be supplied.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>skybox</div>=====<br />
<br />
<span {{Def element}}>skybox <i>{ ... }</i></span><br />
<br />
Defines a skybox that overrides a parallaxing floor or ceiling in OpenGL rendering modes.<br />
<br />
Example:<br />
skybox {<br />
tile 3586 pal 0<br />
front "mymod/sky_1.png" nocompress <br />
right "mymod/sky_2.png" nocompress <br />
back "mymod/sky_3.png" nocompress<br />
left "mymod/sky_4.png" nocompress <br />
top "mymod/sky_5.png" nocompress<br />
down "mymod/sky_6.png" nocompress<br />
}<br />
<br />
The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>tile <i><tilenum></i></span><br />
<br />
: Specifies the ART file tile to override.<br />
<br />
: <span {{Def subelement}}>pal <i><palnum></i></span><br />
<br />
: Specifies the palette number the skybox should happen for.<br />
<br />
: <span {{Def subelement}}>front <i><filename></i></span> (or <span {{Def subelement}}>Front</span> / <span {{Def subelement}}>ft</span> / <span {{Def subelement}}>forward</span>)<br /><br />
: <span {{Def subelement}}>right <i><filename></i></span> (or <span {{Def subelement}}>rt</span> / <span {{Def subelement}}>right</span>)<br /><br />
: <span {{Def subelement}}>back <i><filename></i></span> (or <span {{Def subelement}}>bk</span> / <span {{Def subelement}}>back</span>)<br /><br />
: <span {{Def subelement}}>left <i><filename></i></span> (or <span {{Def subelement}}>lf</span> / <span {{Def subelement}}>left</span>) / <span {{Def subelement}}>lt</span>)<br /><br />
: <span {{Def subelement}}>top <i><filename></i></span> (or <span {{Def subelement}}>up</span> / <span {{Def subelement}}>top</span> / <span {{Def subelement}}>ceiling</span> / <span {{Def subelement}}>ceil</span>)<br /><br />
: <span {{Def subelement}}>down <i><filename></i></span> (or <span {{Def subelement}}>dn</span> / <span {{Def subelement}}>bottom</span> / <span {{Def subelement}}>floor</span> / <span {{Def subelement}}>down</span>)<br />
<br />
: Defines a single face of the skybox where facename may be any of these keywords appropriate for the face in question:<br />
<br />
: NOTE: All six faces are required to be specified.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>model</div>=====<br />
<br />
<span {{Def element}}>model <i><filename> { ... }</i></span><br />
<br />
Defines a model to replace certain sprites in the game when running in 32-bit OpenGL mode. <i><filename></i> is the model file in md2 or md3 format.<br />
<br />
Note: md2 is considered deprecated.<br />
<br />
The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>scale <i><value></i></span><br />
<br />
: <i><value></i> is a (possibly fractional) value specifying a scaling factor for the model when it is rendered, eg. 1.5 for one-and-a-half times as big.<br />
<br />
: <span {{Def subelement}}>shade <i><shade-offset></i></span><br />
<br />
: <i><shade-offset></i> is an integer value specifying how much to bias the sprite's shade value by. A negative value for this makes the model brighter. Conversely, a positive value makes it darker.<br />
<br />
: <span {{Def subelement}}>zadd <i><offset></i></span><br />
<br />
: <i><offset></i> is a (possibly fractional) value specifying a height offset for the model. Quake models are aligned in the center while Build models are aligned at the floor. Using this command will allow Build to use Quake models without modification to the MD2/3 file itself.<br />
<br />
: <span {{Def subelement}}>flags <i><flags></i></span><br />
<br />
: Specifies any special properties the model should have, the values of which should be added together to combine multiple options.<br />
: 0: default value<br /><br />
: 1: Prevents the the model from being affected by the tints.<br /><br />
<br />
: <span {{Def subelement}}>skin <i>{ ... }</i></span><br />
<br />
: Defines a skin to be used on the model for all frames declared after this command. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>pal <i><palnum></i></span><br />
<br />
:: Specifies which palette this skin maps to.<br />
<br />
:: <span {{Def subelement}}>surface <i><surfnum></i></span><br />
<br />
:: Specifies which MD3 surface this skin should be applied to. This has no significance for MD2 models.<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
:: Specifies the texture file to use for the skin. File may be any PNG, JPG, DDS, TGA, BMP, GIF or PCX file<br />
<br />
:: IMPORTANT: If your model exists in a subdirectory (ie. the model filename includes a path to the .md2/3) you will need to give the same path to filename if the skin is in the same directory.<br />
<br />
: <span {{Def subelement}}>anim <i>{ ... }</i></span><br />
<br />
: Defines an animation from a group of frames in the model. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>frame0 <i><framename></i></span><br /><br />
:: <span {{Def subelement}}>frame1 <i><framename></i></span><br />
<br />
:: Specifies the names of the start (<b>frame0</b>) and end (<b>frame1</b>) frames of the animation.<br />
<br />
:: <span {{Def subelement}}>fps <i><fps></i></span><br />
<br />
:: Specifies the frame rate at which the animation should play. This value may be fractional.<br />
<br />
:: <span {{Def subelement}}>flags <i><flags></i></span><br />
<br />
:: Specifies any special properties the animation should have, the values of which should be added together to combine multiple options.<br />
<br />
:: Valid options are:<br />
:: 0 none (looping animation)<br /><br />
:: 1 one-shot (plays beginning to end once and stops on the last frame).<br />
<br />
: <span {{Def subelement}}>frame <i>{ ... }</i></span><br />
<br />
: Defines a range of ART-file tiles to correspond with the given frame/animation of the model. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>name <i><framename></i></span><br /><br />
:: <span {{Def subelement}}>frame <i><framename></i></span><br />
<br />
:: If <i><framename></i> is identical to the starting frame of an animation, the engine will play that animation, otherwise the replacement will be static. You can choose to use the <b>frame</b> or <b>name</b> versions of this instruction as both are identical.<br />
<br />
:: <span {{Def subelement}}>tile <i><tilenum></i></span><br /><br />
:: <span {{Def subelement}}>tile0 <i><tilenum></i></span><br /><br />
:: <span {{Def subelement}}>tile1 <i><tilenum></i></span><br />
<br />
:: Use the tile instruction to specify an ART-file tile which this model should replace. Use the <b>tile0</b> and <b>tile1</b> instructions together to specify a range of ART-file tiles. If you use <b>tile0</b>, you must also have a <b>tile1</b>. You may not use the same instruction twice to specify multiple ranges.<br />
<br />
:: <span {{Def subelement}}>smoothduration <i><value></i></span><br />
<br />
:: If smoothduration is non-zero switching from another animation to the one defined by that frame block will trigger an intermediary animation smoothing state of duration <i><value></i> seconds.<br />
<br />
:: <span {{Def subelement}}>pal <i><value></i></span><br />
<br />
:: Makes the model definition exclusive for the this pal. This allow to assign different models for different pal.<br />
<br />
: <span {{Def subelement}}>hud <i>{ ... }</i></span><br />
<br />
: Defines a range of ART-file tiles to use with a heads-up-display. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>tile <i><tilenum></i></span><br /><br />
:: <span {{Def subelement}}>tile0 <i><tilenum></i></span><br /><br />
:: <span {{Def subelement}}>tile1 <i><tilenum></i></span><br />
<br />
:: <b>tile0</b> and <b>tile1</b> together specify a range of ART-file tiles which this model frame should replace when rendered as part of the HUD. You can specify individual tiles using a single tile command.<br />
<br />
:: <span {{Def subelement}}>xadd <i><offset></i></span><br /><br />
:: <span {{Def subelement}}>yadd <i><offset></i></span><br /><br />
:: <span {{Def subelement}}>zadd <i><offset></i></span><br /><br />
:: <span {{Def subelement}}>angadd <i><offset></i></span><br />
<br />
:: Use these offsets to fine-tune the location of the model placement. <b>xadd</b>, <b>yadd</b>, and <b>zadd</b> are position offsets relative to the viewer's orienation. You can use floating point values with them. <b>angadd</b> is a Build angle offset. (512 90 degrees, 1024 180 degrees, etc...).<br />
<br />
:: <span {{Def subelement}}>hide</span><br />
<br />
:: Some weapons use multiple ART tiles for constructing the gun or animation. Use this option to hide parts that you don't need in your replacement.<br />
<br />
:: <span {{Def subelement}}>nobob</span><br />
<br />
:: By default, the HUD model offset is affected by the player bobbing offset when the player is walking. Use this option to disable that.<br />
<br />
:: <span {{Def subelement}}>flipped</span><br />
<br />
:: Use this option to apply the settings inside the hud block only if the object is normally rendered x-flipped (mirror image). Some weapons, such as the devastator, are rendered in 2 pieces, the left devastator is actually a mirror image of the right.<br />
<br />
:: <span {{Def subelement}}>nodepth</span><br />
<br />
:: Use this to render a HUD model without the use of the depth buffer. Normally, you should avoid this. The one exception where this is useful is for the spinning nuke menu icon because it should always be in front -- and it just happens to be convex, which is the one case that is safe with the depth buffer disabled.<br />
<br />
: <span {{Def subelement}}>detail <i>{ ... }</i></span><br />
<br />
: Defines a [[Detail_mapping|detail texture]] for the model. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
:: Specifies which detail texture file to use. File may be any PNG, JPG, DDS, TGA, BMP, GIF or PCX file. This instruction must be supplied.<br />
<br />
:: <span {{Def subelement}}>scale <i><value></i></span><br />
<br />
:: <i><value></i> is a positive floating-point value that'll determine how much your detail map should repeat on your diffuse map (if you want your detail map to repeat five times, use a 1/5 scale : 0.2).<br />
<br />
:: <span {{Def subelement}}>surface <i><surfnum></i></span><br />
<br />
:: Specifies which MD3 surface this detail texture should be applied to. This has no significance for MD2 models.<br />
<br />
: <span {{Def subelement}}>glow <i>{ ... }</i></span><br />
<br />
: Defines a [[Glow_mapping|glow map]] for the model. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
:: Specifies which glow map file to use. This instruction must be supplied.<br />
<br />
:: <span {{Def subelement}}>surface <i><surfnum></i></span><br />
<br />
:: Specifies which MD3 surface this glow map should be applied to. This has no significance for MD2 models.<br />
<br />
{{Def table2}}<br />
<br />
===Audio===<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>music</div>=====<br />
<span {{Def element}}>music <i>{ ... }</i></span><br />
<br />
Example:<br />
music { id "E1L1" file "stalker1.ogg" }<br />
music { id "intro" file "grabbag.ogg" }<br />
music { id "briefing" file "briefing.ogg" }<br />
music { id "loading" file "menusng2.flac" }<br />
<br />
: <span {{Def subelement}}>id <i><value></i></span><br />
<br />
: <i><value></i> is "intro", "briefing", "loading" or "E'''x'''L'''y'''" (where x is the episode and y is the level).<br /><br />
<br />
: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
: Specifies which audio file to use. File types: MIDI, Ogg Vorbis, FLAC<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>sound</div>=====<br />
<span {{Def element}}>sound <i>{ ... }</i></span><br />
<br />
Example:<br />
sound { id "249" file "bonus.ogg" }<br />
<br />
: <span {{Def subelement}}>id <i><value></i></span><br />
<br />
: Specifies the ID of sound. The ID can be found in DEFS.CON. '''NOTE:''' This should only be used for HRP-like replacement of existing sounds. New sounds should use [[definesound]].<br />
<br />
: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
: Specifies which audio file to use. File types: WAV, VOC, Ogg Vorbis, FLAC<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>animsounds</div>=====<br />
<span {{Def element}}>animsounds <anim> <i>{ frame1 sound1 frame2 sound2 ... }</i></span><br />
<br />
'''<anim>''' has to be one of the following tokens corresponding to hard-coded Duke3D anims:<br />
* cineov2<br />
* cineov3<br />
* RADLOGO<br />
* DUKETEAM<br />
* logo<br />
* vol41a<br />
* vol42a<br />
* vol4e1<br />
* vol43a <br />
* vol4e2<br />
* vol4e3,<br />
<br />
The '''frame'''''N'''s (1-based frame numbers) have to be in ascending order. They do not need to be strictly ascending, so that a frame may have more than one sound.<br />
<br />
Example: for Duke3D's XBLA nuke logo animation (IVF extracted from nuke.webm),<br />
the following definition overlays the video with a sound sequence similar<br />
(identical save for timing) to the original nuke animation:<br />
// frame 1: FLY_BY, frame 64: PIPEBOMB_EXPLODE<br />
animsounds logo { 1 244 64 14 }<br />
{{Def table2}}<br />
<br />
== Un-Definitions ==<br />
<br />
The main use for these is for cases in which the .ART files are somewhat different, and you want to ensure compatibility for the new art without new textures or models. A good example of this is [http://hendricks266.duke4.net/nw_plus.php Duke: Nuclear Winter Plus] by [[Hendricks266]]. (see [http://svn.eduke32.com/nw_plus/nwinter/undef.def undef.def])<br />
<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>undeftexture</div>=====<br />
<span {{Def element}}>undeftexture <i><tile></i></span><br /><br />
<span {{Def element}}>undeftexturerange <i><tile0> <tile1></i></span><br />
<br />
This is for undefining Hightile textures.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>undefmodel</div>=====<br />
<span {{Def element}}>undefmodel <i><tile></i></span><br /><br />
<span {{Def element}}>undefmodelrange <i><tile0> <tile1></i></span><br /><br />
<span {{Def element}}>undefmodelof <i><tile></i></span><sup>1</sup><br />
<br />
This is for undefining 3D models.<br />
<br />
With <b>undefmodelof</b> all the tiles grouped together within the same .def code block are un-defined.<br />
<br />
<sup>1</sup>Support of <b>undefmodelof</b> is disabled indefinitely due to problems with its implementation.<br />
<br />
{{Def table2}}<br />
<br />
== Misc ==<br />
<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>dummytile</div>=====<br />
<br />
<span {{Def element}}>dummytile <i><tilenum> <x-dimension> <y-dimension></i></span><br /><br />
<span {{Def element}}>dummytilerange <i><tilenum1> <tilenum2> <x-dimension> <y-dimension></i></span><br />
<br />
Used in DEF files to create a blank tile at location <b><''tilenum''></b> of the dimensions <b><''x-dimension''></b> and <b><''y-dimension''></b>. This allows the creation of placeholder tiles for use with definetexture\texture without having to edit .ART files.<br />
<br />
'''NOTE:''' In most circumstances '''setuptile''' is a better command to use, unless you specifically want black boxes.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>setuptile</div>=====<br />
<br />
<span {{Def element}}>setuptile <i><tilenum> <x-dimension> <y-dimension> <x-offset> <y-offset></i></span><br /><br />
<span {{Def element}}>setuptilerange <i><tilenum1> <tilenum2> <x-dimension> <y-dimension> <x-offset> <y-offset></i></span><br />
<br />
Used in DEF files to setup the properties which are applied to the highres replacement of the tile. This allows the creation of placeholder tiles for use with definetexture\texture without having to edit .ART files.<br />
<br />
Unlike <b>dummytile</b> this command won't draw black squares and accepts offsets.<br />
<br />
It doesn't affect 8-bit tiles or HUD images.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>dummytilefrompic</div>=====<br />
<br />
<span {{Def element}}>dummytilefrompic <i><tileID> <file></i></span><br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>fogpal</div>=====<br />
<br />
<span {{Def element}}>fogpal <i><palette number> <red intensity> <green intensity> <blue intensity></i></span><br />
<br />
<b>fogpal</b> defines a palette a sector-based fog effect. To use it, change the pal of your sector to the pal defined with <b>fogpal</b>.<br />
<br />
Intensities range from 0-63. Palettes 26, 27, 28 and 29 are pre-defined for you as white, red, green and blue respectively. Sector visibility controls fog density.<br />
<br />
{{Def table2}}<br />
<br />
== Mapster32 ==<br />
<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>2dcol</div>=====<br />
<br />
<span {{Def element}}>2dcol <i><colornum> <red> <green> <blue></i></span><br />
<br />
<b>2dcol</b> is a definition of a color to be used in the 2D mode of [[Mapster32]], in conjunction with <b>spritecol</b> that works similarly to <b>tint</b> and <b>definetint</b>. <i><colornum></i> is a unique identifier, similar to [[define|defines]] and [[gamevar|gamevars]]. <i><red></i>, <i><green></i>, and <i><blue></i> are the RGB color values that are mixed together to get your custom color.<br />
<br />
Certain low values are already hard-coded, and redefining them will change colors of the default layout. If you know the correct value, you can replace the default colors used for <b>all</b> the sprites. You truly have the power to customize Mapster32. Lime green 2D mode background, anyone?<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>spritecol</div>=====<br />
<br />
<span {{Def element}}>spritecol <i><tilenum> <normalcolornum> <blockingcolornum></i></span><br />
<br />
<b>spritecol</b> is a definition of the color a sprite will appear in 2D mode, instead of the standard sky blue and hot pink, or another special color (like yellow for hard-coded enemies or white for the [[Special_Sprite_Reference_Guide|special sprites]]). <b><''normalcolornum''></b> is the <b><''colornum''></b> of the <b>2dcol</b> definition of your color for the standard sprite color as defined by <b><''tilenum''></b>. The same goes for <b><''blockingcolornum''></b>, except that this value is for when the sprite has the first bit of [[cstat]] set (1) (<code>[']+[B]</code> keys in [[Mapster32]]), which is the blocking flag.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>spritehotkey</div>=====<br />
<br />
<span {{Def element}}>spritehotkey <i><key> <spriteID></i></span><br />
<br />
Pressing a key from 1 to 0 on the upper row before pressing S will make the inserted sprite's picnum change according to this definition.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>tilegroup</div>=====<br />
<br />
<span {{Def element}}>tilegroup <i><groupname> { ... }</i></span><br />
<br />
Defines group for the tile selector (press 'T'). Mapster32 loads TILES.CFG on startup.<br />
<br />
: <span {{Def subelement}}>tile <i><tilenum></i></span><br /><br />
: <span {{Def subelement}}>tilerange <i><tilenum1> <tilenum2></i></span><br /><br />
: <span {{Def subelement}}>tiles <i>{ <tile1> <tile2> ... <tileN> }</i></span><br />
<br />
: Adds tiles to the group. Names can be found in DEFS.CON.<br />
<br />
: <span {{Def subelement}}>hotkey <i><value></i></span><br />
<br />
: Specifies the hotkey for the group.<br />
<br />
: <span {{Def subelement}}>colors <i><value1> <value2></i></span><br />
<br />
: Colors are the colors for Blocking OFF and Blocking ON.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>alphabet</div>=====<br />
<br />
<span {{Def element}}>alphabet <i>{ ... }</i></span><br />
<br />
Defines alphabet for the input text feature (Ctrl+T). Mapster32 loads TILES.CFG on startup.<br />
<br />
: <span {{Def subelement}}>map <i><value> <tile></i></span><br />
<br />
: <span {{Def subelement}}>mapa <i><string> <tile></i></span><br />
<br />
: <span {{Def subelement}}>maprange <i><value1> <value2> <tile></i></span><br />
<br />
: <span {{Def subelement}}>maprangea <i><char1> <char2> <tile></i></span><br />
<br />
: <span {{Def subelement}}>offset <i><value> <offset></i></span><br />
<br />
: <span {{Def subelement}}>offseta <i><string> <offset></i></span><br />
<br />
{{Def table2}}<br />
<br />
== Deprecated Commands ==<br />
<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>definetexture</div>=====<br />
<br />
<span {{Def element}}>definetexture <i><tile-number> <palette-number> <x-center> <y-center> <x-size> <y-size> <filename></i></span><br />
<br />
Defines a Hightile texture to replace an ART-file picture. <i><tile-number></i> may be an number, or a defined label. Use a value of 0 for <i><x-center></i> and <i><y-center></i> and a value of -1 for <i><x-size></i> and <i><y-size></i> for now until these values are actually used. <i><filename></i> may be any PNG, JPG, DDS, TGA, BMP, GIF, or PCX file.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>definetint</div>=====<br />
<br />
<span {{Def element}}>definetint <i><palette-number> <red> <green> <blue> <flags></i></span><br />
<br />
Defines a Hightile texture tint to simulate palette effects normally used on ART-file tiles. <i><red></i>, <i><green></i>, and <i><blue></i> are numbers in the range 0 to 255 which specify the color the tint should look like. <i><flags></i> specifies any processing effects to use. Valid values are:<br />
<br />
0 no effects<br /><br />
1 convert to greyscale<br /><br />
2 invert colours<br /><br />
<br />
These values can be added together to produce a combination of effects.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>defineskybox</div>=====<br />
<br />
<span {{Def element}}>defineskybox <i><tile-number> <palette-number> <reserved> <front-face-filename> <right-face-filename> <back-face-filename> <left-face-filename> <top-face-filename> <bottom-face-filename></i></span><br />
<br />
Defines a sky-box composed of six images mapped onto the faces <br />
of a cube to be used when <i><tile-number></i> is set as parallaxing in 32-bit OpenGL mode. <i><reserved></i> should be 0 for now until its meaning is fully conceived.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>definemodel</div>=====<br />
<br />
<span {{Def element}}>definemodel <i><filename> <scale> <shade-offset></i></span><br />
<br />
Defines an MD2/3-format model file to replace certain sprites in the game. See <b>definemodelframe</b> and <b>definemodelanim</b> for details on how to specify the ART-file tiles to replace. <i><filename></i> is the name of the MD2/3 model. <i><scale></i> is a (possibly fractional) value specifying a scaling factor for the model when it is rendered, eg. 1.5 for one-and-a-half times as big. <i><shade-offset></i> is an integer value specifying how much to bias the sprite's shade value by. A negative value for this makes the model brighter. Conversely, a positive value makes it darker.<br />
<br />
: <span {{Def subelement}}>definemodelskin <i><palette-number> <filename></i></span><br />
<br />
: Defines a skin to be used on the model for all frames declared after this command, when the sprite palette is equal to <i><palette-number></i>. (This makes more sense when given a demonstration.) IMPORTANT: If your model exists in a subdirectory (ie. <b>definemodel</b> includes a path to the .md2/3) you will need to give the same path to filename if the skin is in the same directory.<br />
<br />
: <span {{Def subelement}}>selectmodelskin <i><skin ID></i></span><br />
<br />
: Selects a model skin.<br />
<br />
: <span {{Def subelement}}>definemodelanim <i><start-frame> <end-frame> <frame-rate> <flags></i></span><br />
<br />
: Defines an animation from a group of frames in the model given by the last preceding <b>definemodel</b> instruction. <i><start-frame></i> and <i><end-frame></i> specify the names of the starting and ending frames of the animation. <i><frame-rate></i> is the frame rate at which the animation should play. This value can be fractional. <i><flags></i> specifies any special properties the animation should have. Valid options are:<br />
<br />
: 0 none (looping animation)<br /><br />
: 1 one-shot (plays beginning to end once and stops on the last frame)<br />
<br />
: <span {{Def subelement}}>definemodelframe <i><frame-name> <first-tile> <last-tile></i></span><br />
<br />
: Defines a range of ART-file tiles to correspond with the given frame of the model specified in the last preceding <b>definemodel</b> instruction. <i><frame-name></i> is the name of the frame, which if identical to the starting frame of a <b>definemodelanim</b> animation will play that animation. If <i><frame-name></i> is not corresponding with an animation, the replacement will be static. <i><first-tile></i> and <i><last-tile></i> specify a range of ART-file tiles which this model frame should replace.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>definevoxel</div>=====<br />
<br />
<span {{Def element}}>definevoxel <i><filename></i></span><br /><br />
<span {{Def element}}>definevoxeltiles <i><first-tile> <last-tile></i></span><br />
<br />
Defines a voxel to replace sprites in the game. <i><filename></i> is the name of the .KVX file containing the voxel.<br />
<br />
<b>definevoxeltiles</b> defines the range of ART-file tiles to replace with the voxel.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>alphahack</div>=====<br />
<br />
<span {{Def element}}>alphahack <i><tilenum> <value></i></span><br /><br />
<span {{Def element}}>alphahackrange <i><tilenum1> <tilenum2> <value></i></span><br /><br />
<br />
<b>alphahack</b> is a deprecated command previously used to improve alpha filtering of highres art of <i><tilenum></i>. <i><value></i> is always -1.<br />
<br />
{{Def table2}}<br />
<br />
[[Category:All commands]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Suggestions_for_the_future&diff=11560Suggestions for the future2013-03-28T20:04:35Z<p>Helixhorned: /* Scripting */ add "Access to engine-side tables"</p>
<hr />
<div>This page is intended to prodive a list of EDuke32 (not Mapster32) suggestions of features that are moderately or highly complex and thus are not expected to be implemented immediately. Feel free to edit this list, but keep the following format: A leading line with a short description, and a link to a post at the Duke4.net forums.<br />
<br />
== Scripting ==<br />
Cutscene support - http://forums.duke4.net/topic/2961-paper-cuts-minor-bugs-and-annoyances/page__view__findpost__p__152896<br/><br />
Access to engine-side tables (e.g. base palette, translucency) - http://forums.duke4.net/topic/775-eduke32-20-and-polymer/page__view__findpost__p__152969<br/><br />
<br />
== Rendering ==<br />
<br />
== Other ==</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Suggestions_for_the_future&diff=11559Suggestions for the future2013-03-28T14:29:32Z<p>Helixhorned: Add some categories.</p>
<hr />
<div>This page is intended to prodive a list of EDuke32 (not Mapster32) suggestions of features that are moderately or highly complex and thus are not expected to be implemented immediately. Feel free to edit this list, but keep the following format: A leading line with a short description, and a link to a post at the Duke4.net forums.<br />
<br />
== Scripting ==<br />
Cutscene support - http://forums.duke4.net/topic/2961-paper-cuts-minor-bugs-and-annoyances/page__view__findpost__p__152896<br />
<br />
== Rendering ==<br />
<br />
== Other ==</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Suggestions_for_the_future&diff=11557Suggestions for the future2013-03-28T14:05:30Z<p>Helixhorned: Add "Suggestions for the future" page</p>
<hr />
<div>This page is intended to prodive a list of EDuke32 (not Mapster32) suggestions of features that are moderately or highly complex and thus are not expected to be implemented immediately. Feel free to edit this list, but keep the following format: A leading line with a short description, and a link to a post at the Duke4.net forums.<br />
<br />
Scriptable cutscene support - http://forums.duke4.net/topic/2961-paper-cuts-minor-bugs-and-annoyances/page__view__findpost__p__152896</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Category:If_conditions&diff=11546Category:If conditions2013-03-18T16:36:31Z<p>Helixhorned: Remove completely wrong info about "dangling else". CON doesn't have that; remains to be written.</p>
<hr />
<div>If conditions evaluate the specified statement, and run code based on the returned value of the evaluation. If conditions are boolean (true or false), and may be strung together.<br />
<br />
Example code:<br />
<br />
[[ifdead]] { [[spawn]] BLOODPOOL [[killit]] } <br />
<br />
If conditions may be used in conjunction with an [[else]].<br />
[[Category:All commands]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Readgamevar&diff=11541Readgamevar2013-03-17T12:48:26Z<p>Helixhorned: Clarify usage with per-actor or per-player gamevars.</p>
<hr />
<div>'''readgamevar''' <varname><br />
<br />
Reads a [[gamevar]] that was saved with [[savegamevar]] from the user's configuration file.<br />
<br />
For per-actor or per-player gamevars, the value at the current actor or player index gets restored, '''not''' the values for all actors or players.<br />
<br />
[[Category:EDuke32 specific commands]]<br />
[[Category:Gamevar manipulation]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Savegamevar&diff=11540Savegamevar2013-03-17T12:47:19Z<p>Helixhorned: Clarify usage with per-actor or per-player gamevars.</p>
<hr />
<div>'''savegamevar''' <varname><br />
<br />
Saves a [[gamevar]] to the user's configuration file for restoration at a later point with [[readgamevar]].<br />
<br />
For per-actor or per-player gamevars, the value at the current actor or player index gets saved, '''not''' the values for all actors or players.<br />
<br />
[[Category:EDuke32 specific commands]]<br />
[[Category:Gamevar manipulation]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=LOGO_FLAGS&diff=11531LOGO FLAGS2013-03-15T17:04:01Z<p>Helixhorned: Add LOGO_FLAGS bit 2048.</p>
<hr />
<div>LOGO_FLAGS is a [[gamevar]] that controls the appearance of the introduction and menu.<br />
<br />
It is a [[bitfield]]. The values are:<br />
<br />
'''1''' - LOGO_FLAG_ENABLED<br /><br />
'''2''' - LOGO_FLAG_PLAYANIM<br /><br />
'''4''' - LOGO_FLAG_PLAYMUSIC<br /><br />
'''8''' - LOGO_FLAG_3DRSCREEN<br /><br />
'''16''' - LOGO_FLAG_TITLESCREEN<br /><br />
'''32''' - LOGO_FLAG_DUKENUKEM<br /><br />
'''64''' - LOGO_FLAG_THREEDEE<br /><br />
'''128''' - LOGO_FLAG_PLUTOPAKSPRITE<br /><br />
'''256''' - LOGO_FLAG_SHAREWARESCREENS<br /><br />
'''512''' - LOGO_FLAG_TENSCREEN<br /><br />
'''1024''' - LOGO_FLAG_STOPANIMSOUNDS<br /><br />
'''2048''' - LOGO_FLAG_NOE4CUTSCENE<br /><br />
<br />
(The names following the numeric values are merely informational, they do not denote labels predefined from CON.)<br/><br />
The default value is 255. That is, all the bits are set except the last two.<br />
<br />
[[Category:Bitfields]]<br />
[[Category:Pre-defined gamevars]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Htflags&diff=11529Htflags2013-03-14T17:12:23Z<p>Helixhorned: add label names</p>
<hr />
<div>A per-actor property, this controls special flags for sprites. In the following listing, whenever a label for a value is defined in the global CON namespace by default, it is shown after the numeric value:<br />
<br />
'''1''' - SFLAG_SHADOW - Generates a shadow. See [[spriteshadow]].<br /><br />
'''2''' - SFLAG_NVG - Turns [[spritepal|palette]] 6 whenever night vision goggles are used. See [[spritenvg]].<br /><br />
'''4''' - SFLAG_NOSHADE - The sprite's shade is unaffected by the shade of its sector. See [[spritenoshade]].<br /><br />
'''8''' - Is a [[defineprojectile|projectile]].<br /><br />
'''16''' - Prevents teleporting. The sprite is not entered into the [[decal deletion queue]].<br /><br />
'''32''' - SFLAG_BADGUY - Is an enemy. See [[useractor]].<br /><br />
'''64''' - SFLAG_NOPAL - Sprite will be insusceptible to floor palette of sector containing this sprite. See [[spritenopal]].<br /><br />
'''128''' - SFLAG_NOEVENTS - Sprite will not be run through [[event]] code.<br /><br />
'''256''' - SFLAG_NOLIGHT - Sprite will not emit hardcoded Polymer-based lights.<br /><br />
'''512''' - SFLAG_USEACTIVATOR - ''needs description''<br /><br />
'''1024''' - internal, do not use<br /><br />
'''2048''' - SFLAG_NOCLIP - Sprite will call "[[clipmove]]()" with a [[clipmask]] of 0, skipping collision detection with other sprites to increase performance. (Specifically, to prevent runtime behavior that is quadratic with the number of sprites.) Useful for particle effects.<br /><br />
SFLAG_SMOOTHMOVE - ''needs description''<br /><br />
SFLAG_NOTELEPORT - ''needs description''<br /><br />
<br />
'''htflags''' is a [[bitfield]], so add together the values you want and then set htflags to the sum.<br/><br />
This member can also be set using the per-sprite form of the [[spriteflags]] command.<br />
<br />
[[Category:Bitfields]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Qgetsysstr&diff=11518Qgetsysstr2013-02-21T13:10:10Z<p>Helixhorned: "quote file"?</p>
<hr />
<div>'''qgetsysstr''' <quoteID> <strID><br />
<br />
This command copies system strings to the quote given by <quoteID>, and can be used to display things like the level or the player's name.<br />
<br />
<strID> can be:<br />
*STR_MAPNAME<br />
*STR_MAPFILENAME<br />
*STR_PLAYERNAME<br />
*STR_VERSION<br />
*STR_GAMETYPE<br />
*STR_VOLUMENAME<br />
<br />
[[Category:EDuke32 specific commands]]<br />
[[Category:String manipulation]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Findnearactor&diff=11516Findnearactor2013-02-17T12:55:37Z<p>Helixhorned: Fix findnear* semantics. If they returned the closest sprite, there would be no point having the <distance> argument.</p>
<hr />
<div>'''findnearactor''' <[[tile number]]> <distance> <[[gamevar]]><br><br />
'''findnearactorvar''' <[[tile number]]> <distance> <[[gamevar]]><br><br />
'''findnearactorz''' <[[tile number]]> <xydistance> <zdistance> <[[gamevar]]><br><br />
'''findnearactorzvar''' <[[tile number]]> <xydistance> <zdistance> <[[gamevar]]><br><br />
'''findnearactor3d''' <[[tile number]]> <distance> <[[gamevar]]><br><br />
'''findnearactor3dvar''' <[[tile number]]> <distance> <[[gamevar]]><br><br />
'''findnearsprite''' <[[tile number]]> <distance> <[[gamevar]]><br><br />
'''findnearspritevar''' <[[tile number]]> <distance> <[[gamevar]]><br><br />
'''findnearspritez''' <[[tile number]]> <xydistance> <zdistance> <[[gamevar]]><br><br />
'''findnearspritezvar''' <[[tile number]]> <xydistance> <zdistance> <[[gamevar]]><br><br />
'''findnearsprite3d''' <[[tile number]]> <distance> <[[gamevar]]><br><br />
'''findnearsprite3dvar''' <[[tile number]]> <distance> <[[gamevar]]><br />
<br />
These commands get the sprite ID of ''one'' <[[tile number]]> with distance strictly less than <distance> into a <[[gamevar]]>. Note that this does not have to be the ''closest'' such <[[tile number]]>. If no sprite within range is found, the [[gamevar]] is set to -1. The input for <[[tile number]]> may be its tile number (example: 2000) or its defined label (example: PIGCOP).<br />
<br />
By getting the actor ID of a nearby actor, the current actor can use [[getactor]]/[[setactor]] to edit the properties of the target actor or [[getangle]] to face the target actor, among other potential uses.<br />
<br />
The ''actor'' finding commands work on a subset of sprites: currently awake, valid actors. The ''sprite'' finding commands work on a superset of actors: all sprites, including non-actor sprites or sleeping actors.<br />
<br />
The normal finding commands limit distance on the x and y plane only. If you were to visualize its range, it would be an infinitely tall/deep vertical cylinder, with a radius of <distance>. The "z" commands work within a finite cylinder, with a radius of <xydistance> and a height extending <zdistance> both above and below. The "3d" commands work within a sphere, with a radius of <distance>.<br />
<br />
{{varsuffix}}<br />
<br />
[[Category:EDuke commands]]<br />
[[Category:Sprite manipulation]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Rotatepoint&diff=11515Rotatepoint2013-02-17T12:46:07Z<p>Helixhorned: suggest a more readable way to rotate clockwise</p>
<hr />
<div>'''rotatepoint''' <xpivot> <ypivot> <x> <y> <ang> <xreturnvar> <yreturnvar><br />
<br />
Rotates the point around the pivot by the specified angle and returns the coordinates into ''xreturnvar'' and ''yreturnvar''.<br />
<br />
:<xpivot>, <ypivot>: the coordinates (X and Y) of the central pivot point<br />
:<x>, <y>: the coordinates of a point to rotate in relation to the pivot point<br />
:<ang>: how many units to rotate (2048 per revolution; clockwise)<br />
:<xreturnvar>, <yreturnvar>: the post-rotate coordinates of the point<br />
<br />
This command can be used in conjunction with [[dragpoint]] for rotating sectors. The rotatepoint command calculates the end position for a wall point after rotating. To move the point to that position, use [[dragpoint]].<br />
<br />
Swapping the X and Y axes or negating <ang> gives the effect of rotating in the opposite direction (CCW instead of CW).<br />
<br />
[[Category:EDuke32 specific commands]]<br />
[[Category:Sector manipulation]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=How_to_make_a_clock&diff=11513How to make a clock2013-02-15T18:58:13Z<p>Helixhorned: grammar</p>
<hr />
<div>In this tutorial we will create an in-game clock that displays the users current desktop time in the top right hand corner of the screen.<br />
<br />
We will need the following [[gamevar]] definitions:<br />
<br />
<pre><br />
gamevar sec 0 1<br />
gamevar min 0 1<br />
gamevar hour 0 1<br />
gamevar mday 0 1<br />
gamevar mon 0 1<br />
gamevar year 0 1<br />
gamevar wday 0 1<br />
gamevar yday 0 1<br />
</pre><br />
<br />
Next, the code itself which must be used in an event because [[digitalnumberz]] and [[rotatesprite]] only work during display events. We will be using [[EVENT_DISPLAYREST]] in this case.<br />
<br />
<pre><br />
onevent EVENT_DISPLAYREST<br />
<br />
gettimedate sec min hour mday mon year wday yday<br />
ifvarl hour 20 ifvarg hour 9 { digitalnumberz 2992 285 16 hour 0 0 0 0 0 xdim ydim 65536 }<br />
ifvarg hour 19 { digitalnumberz 2992 282 16 hour 0 0 0 0 0 xdim ydim 65536 }<br />
ifvarl hour 10 { digitalnumberz 2992 288 16 hour 0 0 0 0 0 xdim ydim 65536 rotatesprite 269 16 65536 0 2992 0 0 0 0 0 xdim ydim }<br />
ifvarg min 9 { digitalnumberz 2992 308 16 min 0 0 0 0 0 xdim ydim 65536 }<br />
ifvarl min 10 { digitalnumberz 2992 315 16 min 0 0 0 0 0 xdim ydim 65536 rotatesprite 296 16 65536 0 2992 0 0 0 0 0 xdim ydim }<br />
<br />
endevent<br />
</pre><br />
<br />
The uses for this code are just about endless, it could be used to make certain events trigger at a certain time during the day. For example, if we add the following code to our example it will display a special message for the end user exactly at midnight for one minute. Try it out and see what it is. :)<br />
<br />
<pre><br />
ifvare hour 0 ifvare min 0 { quote 28 }<br />
</pre><br />
<br />
It should be noted that the end user can change their in-game clock time by changing their desktop time.<br />
<br />
[[Category: Tutorials]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Gettimedate&diff=11512Gettimedate2013-02-15T18:52:30Z<p>Helixhorned: fix member meanings (we add 1900 to <year>), add value ranges (from C99)</p>
<hr />
<div>'''getdate''' <sec> <min> <hour> <mday> <mon> <year> <wday> <yday><br />
<br />
Gets the local time and date into gamevars. The values in brackets denote inclusive ranges that the individual members can take on.<br />
<br />
<sec> seconds after the minute [0, '''60'''] (note the possibility of a leap second)<br />
<min> minutes after the hour [0, 59]<br />
<hour> hours since midnight [0, 23]<br />
<mday> day of the month '''[1,31]''' (note that it is 1-based)<br />
<mon> months since January [0, 11]<br />
<year> years since 0 A.D.<br />
<wday> days since Sunday [0, 6]<br />
<yday> days since January 1 [0, 365]<br />
<br />
A tutorial on how this command can be used can be viewed here: [[How_to_make_a_clock|make an in-game clock]]<br />
<br />
[[Category:EDuke32 specific commands]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Smaxammo&diff=11497Smaxammo2013-01-23T21:56:21Z<p>Helixhorned: fix amaxammo</p>
<hr />
<div>'''smaxammo''' <WeaponID> <maxamount><br />
<br />
Sets the global maximum amount of ammo for <WeaponID>. This change will be displayed in the player's HUD.<br />
<br />
[[Category:EDuke32 specific commands]]</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Build/Mapster32_Keyboard_Commands&diff=11494Build/Mapster32 Keyboard Commands2013-01-16T20:43:21Z<p>Helixhorned: /* 3D Mode: Keys */ update auto-aligning for r3396</p>
<hr />
<div>== 3D Mode: Mouse ==<br />
The purpose of mouse in 3D mode is pointing at some objects in a map and looking around ('''F3''' toggles mouse look).<br><br />
<br />
Mouse pointer always points (see info about it at the bottom of the screen) at one of these objects:<br><br />
# wall<br />
# ceiling of sector<br />
# floor of sector<br />
# sprite<br />
# masked wall (non-transparent or semi-transparent wall between sectors)<br />
<br />
It's important to understand this concept:<br><br />
Some commands work differently depending on the current object (the object the mouse points at).<br><br />
Some commands manipulate only the current object, some commands manipulate the selected (also called "highlighted") sprites/sectors in 2D mode, and some commands work globally.<br><br />
<br />
====Mouse buttons====<br />
'''LEFT''' lock the current object. The current object won't be changing as long as the button is pressed.<br><br />
'''WHEEL''' change shade ('''+CTRL''': in increments of 4)<br><br />
'''WHEEL+ALT''' change visibility<br><br />
'''LEFT+WHEEL''' change tile<br><br />
'''RIGHT+WHEEL''' move object up/down<br><br />
'''MIDDLE''' temporary mouse look (when not in UnrealEd-style mouse mode)<br><br />
<br />
Additionally, there is UnrealEd-style mouse navigation in 3D mode (toggle it with '''F5'''), with the following bindings:<br><br />
'''RIGHT''' mouse look<br><br />
'''LEFT''' x: turning, y: move forward/back<br><br />
'''LEFT+RIGHT''' x: strafe left/right, y: move up/down<br><br />
'''MIDDLE''' y: move in viewing direction<br><br />
The console variable ''pk_uedaccel'' changes the speed of navigation exponentially (valid values are 0-5).<br><br />
<br />
It is possible to move around objects using the mouse and holding down specific modifier keys:<br><br />
'''LEFT+ALT''' move object up/down ('''+CTRL''': in larger increments)<br><br />
'''LEFT+SHIFT''' move sprite in horizontal plane ('''+CTRL''': grid-aligned)<br><br />
The two preceding controls also work on a set of sprites highlighted in 2D mode.<br><br />
'''LEFT+SHIFT''' pan ceiling/floor/wall texture<br><br />
'''LEFT+CTRL''' scale wall texture or size of sprite<br><br />
'''LEFT+CTRL''' change slope of floor/ceiling<br><br />
<br />
== 3D Mode: Selecting Tile Mode ==<br />
After pressing the '''V''' key in 3D mode, Mapster32 switches to "select tile" mode.<br><br />
<br />
====Keys====<br />
'''UP/DOWN/LEFT/RIGHT/PGUP/PGDN/HOME/END''' movements ('''CTRL''' modifies some commands)<br><br />
'''KP /''' zoom in<br><br />
'''KP *''' zoom out<br><br />
'''Z''' toggle tile zoom<br><br />
<br />
'''G''' goto specified tile<br><br />
'''U''' goto start of user defined art (3584)<br><br />
'''A''' goto start of Atomic edition's art (4096)<br><br />
'''E''' goto start of extended art (6144,9216)<br><br />
<br />
'''S''' Search for a named tile. When ^ is entered as the first character, anchor string at the beginning.<br />
<br />
'''V''' select from all tiles<br><br />
'''T''' select from pre-defined tile group which can be edited in tiles.cfg or added from within the tile selector. For this, press '''SPACE''' on the tiles to be grouped ('''CTRL-SPACE''' to select a range from starting from the last selection with '''SPACE'''). When you're ready, press '''Ctrl-G''' and you'll be queried for a group hotkey and name. The new tile group should now be saved persistently in tiles.cfg.<br><br />
<br />
'''ESC''' cancel<br><br />
'''ENTER''' accept<br><br />
<br />
====Mouse====<br />
'''LEFT''' select<br><br />
'''CTRL+WHEEL''' zoom<br><br />
'''WHEEL''' scroll<br><br />
'''RIGHT''' smooth scrolling<br><br />
<br />
== 3D Mode: Keys ==<br />
'''UP''' move forward<br><br />
'''DOWN''' move backward<br><br />
'''LEFT+RCTRL''' move left<br><br />
'''RIGHT+RCTRL''' move right<br><br />
'''A''' move up<br><br />
'''Z''' move down<br><br />
'''+LSHIFT''' speed up movements<br><br />
<br />
'''LEFT''' turn left<br><br />
'''RIGHT''' turn right<br><br />
'''A+CTRL''' look down<br><br />
'''Z+CTRL''' look up<br><br />
<br />
'''F1''' toggle help<br><br />
'''F3''' toggle mouselook<br><br />
'''F4''' toggle ambience sounds<br><br />
'''F5''' toggle UnrealEd-style mouse navigation<br><br />
'''F6''' toggle automatic SECTOREFFECTOR help<br><br />
'''F7''' toggle automatic sector tag help<br><br />
'''F9''' load and activate/deactivate maphacks<br><br />
'''F11''' brightness<br><br />
'''F12''' screenshot<br><br />
'''F12+SHIFT''' inverted screenshot<br><br />
<br />
'''' V''' set sector visibility<br><br />
'''; V''' set sector visibility on all selected sectors<br><br />
'''V''' choose tile<br><br />
'''3''' toggle Sector over Sector. See documentation here: http://www.users.on.net/~triforce/cduke3d/<br><br />
'''' BACKSPACE''' clear all flags for wall/sprite<br><br />
'''BACKSPACE''' clear nextwall ("red wall") link for aimed at wall<br><br />
'''' P''' paste palette to all selected sectors<br><br />
'''; P''' paste palette to all selected sectors & sprites<br><br />
<br />
'''S''' insert sprite<br><br />
'''DEL''' delete sprite<br><br />
''',''' rotate sprite<br><br />
'''.''' rotate sprite<br><br />
'''<''' slowly rotate sprite<br><br />
'''>''' slowly rotate sprite<br><br />
<br />
'''.''' (period): search & fix panning of the wall to the right (''',''' (comma): to the left), has 3 modifiers:<br><br />
'''+SHIFT''': auto-align at most one wall<br><br />
'''+ALT''': copy over texel width in world units (i.e. "how much the wall is stretched")<br><br />
'''+'''' (quote): align immediate upper and lower TROR neighbors<br><br />
<br />
'''SPACE''' lock to object (same as left mouse button)<br><br />
'''PGUP/PGDN+ALT''' when aiming at red wall, select the floor or ceiling of the nextsector (useful for e.g. raising a lowered door when standing near it), depending on whether the aim is at the top or bottom of the wall<br><br />
<br />
'''CAPS LOCK''' cycle zmode<br><br />
'''' Z''' cycle zmode<br><br />
'''' L''' change the coordinates of the current object<br><br />
'''' M''' set the extra of the current object<br><br />
'''1''' toggle one sided sprite/wall<br><br />
'''2''' toggle bottom wall swapping<br><br />
'''O''' set top or bottom orientation of wall<br><br />
'''O''' ornament sprite onto wall<br><br />
'''M''' toggle masking wall<br><br />
'''H''' toggle hitscan sensitivity<br><br />
'''H+SHIFT''' toggle one side hitscan sensitivity for the wall<br><br />
'''' H''' set hitag of the current object<br><br />
<br />
'''KP_MINUS''' shades down individual sector/wall/sprite or selected sectors<br><br />
'''KP_MINUS+ALT''' decreases visibility of sector or selected sectors<br><br />
'''KP_MINUS+ALT+SHIFT''' slowly decreases visibility of sector or selected sectors<br><br />
'''KP_MINUS+ALT+CTRL''' decreases global visibility<br><br />
'''KP_PLUS''' shades up individual sector/wall/sprite or selected sectors<br><br />
'''KP_PLUS+ALT''' increases visibility of sector or selected sectors<br><br />
'''KP_PLUS+ALT+SHIFT''' slowly increases visibility of sector or selected sectors<br><br />
'''KP_PLUS+ALT+CTRL''' increases global visibility<br><br />
Note: '''ALT, CTRL, SHIFT''' are modifiers so they work with mouse too.<br><br />
<br />
'''PLUS/MINUS''' cycle tile<br><br />
'''E''' toggle sector texture expansion<br><br />
'''R''' toggle sector texture relativity alignment<br><br />
'''R''' cycle sprite aligment between: wall aligned, floor aligned, view aligned<br><br />
'''' R''' toggle framerate<br><br />
'''F''' flip the current object ('''+SHIFT''': reverse direction)<br><br />
'''F+ALT''' set the first wall of sector<br><br />
<br />
'''PAGE UP''' move up selected sprites or sectors<br><br />
'''PAGE DN''' move down selected sprites or sectors<br><br />
'''PAGE UP+CTRL''' put selected sprites on ceiling<br><br />
'''PAGE DN+CTRL''' put selected sprites on ground<br><br />
'''+CTRL''' speed up movement<br><br />
'''+END''' slow down movement<br><br />
'''+HOME''' slow down movement even more<br><br />
Note: '''CTRL, HOME, END''' are modifiers so they work with mouse too.<br><br />
<br />
'''N''' toggle 'no-autoshade'-bit of sprite<br><br />
'''' I''' toggle sprite invisibility<br><br />
'''' D''' cycle skill level<br><br />
'''' X''' toggle sprite shade and SE light effect preview<br><br />
'''' W''' toggle sprite display by class (no effectors/actors)<br><br />
'''' Y''' toggle purple background<br><br />
'''' C''' copy shade from the clipboard to all objects in the map which are the same tile as the tile of the object that in the clipboard. It works separately for sectors/walls/sprites depending on the current object. (I hope somebody who understands this, will clarify this)<br><br />
'''' T''' set lotag<br><br />
'''' H''' set hitag<br><br />
'''' S''' set shade<br><br />
'''G''' set picnum<br><br />
'''B''' toggle blocking<br><br />
'''B+SHIFT''' toggle one side blocking for the wall<br><br />
'''T''' cycles translucence for sprites/masked walls (and ceilings/floors for ROR)<br><br />
<br />
'''F2''' toggle clipboard preview<br><br />
'''F2+SHIFT''' toggle current sprite preview<br><br />
'''TAB''' copy to the clipboard<br><br />
'''LENTER+CTRL+SHIFT''' autoshade wall<br><br />
'''' LENTER''' paste picnum only<br><br />
'''; LENTER''' on ceilings/floors, auto-align with reference in '''TAB'''bed clipboard (incomplete for relative-aligned references)<br><br />
'''LENTER+SHIFT''' paste some visual (shading+pal) properties of the clipboard on sector/wall/sprite<br><br />
'''LENTER+CTRL''' paste some visual (picnum+shading+pal) properties of the clipboard on sector/wall/sprite<br><br />
'''LENTER''' paste all (picnum+shading+pal+flags+tags+extra) properties of the clipboard on sector/wall/sprite<br><br />
Note: some fields are only pasted if the type of 'thing' in the clipboard (wall/sprite/sector) equals that of the aimed at object<br><br />
<br />
'''C''' toggle center sprite<br><br />
'''ALT+C''' replace all tiles in the map with one from the clipboard<br><br />
<br />
'''' A''' toggle autosave. The interval is configurable (default: every 3 minutes)<br><br />
<br />
'''' N''' toggle noclip for the camera<br><br />
'''N+CTRL''' toggle noclip for sprites<br><br />
<br />
'''[''' slopes up fast<br><br />
'''[+RSHIFT''' slope up with medium speed<br><br />
'''[+LSHIFT''' slope up slowly<br><br />
'''[+ALT''' align slope to the floor of adjoining sector<br><br />
''']''' slope down fast<br><br />
''']+RSHIFT''' slope down with medium speed<br><br />
''']+LSHIFT''' slope down slowly<br><br />
''']+ALT''' align slope to the ceiling of adjoining sector<br><br />
<br />
'''KP_4''' panning floor/ceiling horizontally<br><br />
'''KP_6''' panning floor/ceiling horizontally<br><br />
'''KP_2''' panning floor/ceiling vertically<br><br />
'''KP_8''' panning floor/ceiling vertically<br><br />
'''KP_4''' scaling wall/sprite horizontally<br><br />
'''KP_6''' scaling wall/sprite horizontally<br><br />
'''KP_2''' scaling wall/sprite vertically<br><br />
'''KP_8''' scaling wall/sprite vertically<br><br />
'''+SHIFT''' or '''+ALT''' force panning (for walls); the latter is an alternative if Shift-KP5-KP*-combinations are dead.<br><br />
'''+KP_5''' speed up<br><br />
<br />
'''/''' Reset panning, repeat and flags to defaults<br><br />
'''/+SHIFT''' set xrepeat to yrepeat (makes square)<br><br />
<br />
'''P''' enable/disable parallax<br><br />
'''P+CTRL''' change parallax type (works only in classic render, not saved into maps)<br><br />
'''P+CTRL''' Playtest map from current position<br><br />
'''P+ALT+CTRL''' Playtest map from start position<br><br />
'''P+ALT''' change pal of sector/wall/sprite<br><br />
'''D+ALT''' adjust clip distance of the sprite<br><br />
'''RENTER''' switch to 2D mode<br><br />
<br />
'''S+CTRL''' save map<br><br />
'''L+CTRL''' load last saved map<br><br />
<br />
'''ESC''' quit<br><br />
<br />
== 2D Mode: Mouse ==<br />
The purpose of mouse in 2D mode is pointing, selecting, moving object in a map.<br />
<br />
Every time mouse is pointing at one of these:<br><br />
# Nothing<br />
# Sector<br />
# Sector and wall<br />
# Sector and sprite<br />
# Wall (wall without sector - map is corrupt)<br />
# Sprite (sprite without sector - map is corrupt)<br />
<br />
Some commands work differently depending on the current object (the object the mouse points at).<br> To solve the ambiguity between sectors and walls/sprites, one usually must press ALT to work with walls/sprites instead of sectors.<br><br />
<br />
===='''RSHIFT''' (select vertices/sprites) modifiers====<br />
* ''';''': set difference<br><br />
* ''' ' ''' (quote character): set union<br><br />
(note that they have to be depressed when '''RSHIFT''' is ''released'')<br><br />
* '''RCTRL''' select only sprites (not walls)<br />
* '''END''' select from all sectors, even grayed out ones<br />
<br><br />
===='''RALT''' (select sectors) modifiers====<br />
* ''';''': set difference<br><br />
* ''' ' ''' (quote character): set union<br><br />
(note that they have to be depressed when '''RALT''' is ''released'')<br><br />
* when '''RCTRL''' is pressed at '''RALT''' release time, then for a sector to be selected, it must be "inside" the mouse pointer instead of being surrounded by the rectangle<br><br />
* when holding '''RSHIFT''', will select all sectors, even grayed out ones<br><br />
See the [[#TROR related keys|TROR section]] for '''HOME''' and '''END''' modifiers.<br />
<br><br />
<br><br />
'''WHEEL''' zoom<br><br />
'''WHEEL+ALT''' move camera and zoom<br><br />
'''LEFT BUTTON''' drag sectors/vertices/sprites<br><br />
'''RIGHT BUTTON''' move camera<br><br />
'''RIGHT MIDDLE''' move camera<br><br />
<br />
== 2D Mode: Keys ==<br />
'''F1''' show help<br><br />
'''F2''' show sound index<br><br />
'''F3''' enter/quit side-view mode<br><br />
'''in side-view mode:'''<br><br />
* '''Q''', '''W''': orbit around center<br />
* '''A''', '''Z''': change azimuth<br />
* '''MMB''': change "player" z<br />
* '''RMB''': change "player" x/y<br />
'''F4''' toggle first wall preview<br><br />
'''F5''' show item count<br><br />
'''F6''' show actor count when pointed at wall<br><br />
'''F6''' show Sector Effector help when pointed at sprite<br><br />
'''F7''' edit sector data<br><br />
'''F8''' edit wall/sprite data<br><br />
'''F9''' show the Sector Tags help<br><br />
'''F12''' screenshot<br><br />
'''F12+SHIFT''' inverted screenshot<br><br />
<br />
'''SCROLL LOCK''' set starting position<br><br />
<br />
'''LSHIFT''' show coordinates/linking sprites<br><br />
'''LSHIFT+[''', '''LSHIFT+]''' cycle linking sprites<br><br />
<br><br />
'''LSHIFT'''+'''LMB''' (with RSHIFT-highlighted points) interactively scale highlighted points (+'''CTRL''' forces square aspect)<br><br />
'''LSHIFT'''+'''RMB''' (with RSHIFT-highlighted points) interactively rotate highlighted points<br><br />
If '''LSHIFT''' is released before the mouse button, the interactive scaling/rotation is canceled.<br><br />
<br><br />
'''M''' set extra of sector<br><br />
'''M+ALT''' set extra of wall/sprite<br><br />
'''/''' Reset panning, repeat and flags to defaults<br><br />
'''/+SHIFT''' set xrepeat to yrepeat (makes square)<br><br />
<br />
'''KP_4''' scaling sprite horizontally<br><br />
'''KP_6''' scaling sprite horizontally<br><br />
'''KP_2''' scaling sprite vertically<br><br />
'''KP_8''' scaling sprite vertically<br><br />
'''+KP_5''' speed up<br><br />
<br><br />
'''R''' cycle sprite alignment<br><br />
'''' S''' set sprite size<br><br />
'''' F''' function menu<br><br />
'''F7+ALT''' search sector lotag<br><br />
'''F8+ALT''' on wall: search wall lotag<br><br />
'''F8+ALT''' on sprite: generic sprite search<br><br />
'''[''' search backward<br><br />
''']''' search forward<br><br />
'''G''' cycle grid size<br><br />
'''G+SHIFT''' cycle grid size backward<br><br />
'''' L''' set sprite/wall coordinates<br><br />
'''' 3''' cycle modes of showing object's name<br><br />
'''' 7''' swap lotag and hitag of wall/sprite<br><br />
'''' J''' jump to position of object (asks for sector/wall/sprite, or x,y)<br><br />
<br />
'''[+ALT''' goto previous corruption<br><br />
''']+ALT''' goto next corruption<br><br />
<br />
'''X''' flip selected sectors in x<br><br />
'''Y''' flip selected sectors in y<br><br />
'''X+ALT''' mirror selected sectors in x<br><br />
'''Y+ALT''' mirror selected sectors in y<br><br />
<br />
'''B''' toggle blocking<br><br />
'''B+SHIFT''' toggle one side blocking for wall<br><br />
'''F+ALT''' set the first wall of sector<br><br />
'''O''' ornament sprite onto wall<br><br />
<br />
''',''' rotate sprite/selected sectors<br><br />
'''.''' rotate sprite/selected sectors<br><br />
'''<''' [i.e. ''',+SHIFT'''] slowly rotate sprite/selected sectors<br><br />
'''>''' [i.e. '''.+SHIFT'''] slowly rotate sprite/selected sectors<br><br />
''',+ALT''', '''.+ALT''' rotate highlighted sectors by a manually entered angle<br><br />
<br><br />
'''T''' set sector lotag<br><br />
'''T+ALT''' set wall/sprite lotag<br><br />
'''T+CTRL''' toggle show tags<br><br />
<br />
'''H''' set sector hitag<br><br />
'''H+ALT''' set wall/sprite hitag<br><br />
'''H+CTRL''' toggle hitscan sensitivity<br><br />
'''H+CTRL+SHIFT''' toggle hitscan sensitivity<br><br />
<br />
'''P''' set sector pal<br><br />
'''E''' set sprite status list<br><br />
'''TAB''' show sector data<br><br />
'''TAB+SHIFT''' show wall/sprite data<br><br />
'''TAB+CTRL''' enable/disable filling of aimed-at sector<br><br />
<br />
'''LCTRL+RSHIFT''' select all walls of the current sector (point at a wall and holding '''LCTRL''', press and release '''RSHIFT'''). Set ops (see RSHIFT above) work too.<br><br />
'''A''' zoom in<br><br />
'''Z''' zoom out<br><br />
'''L''' toggle grid lock<br><br />
'''J''' join sectors<br><br />
'''S''' insert sprite, pressing a key from '''1''' to '''0''' on the upper row before pressing '''S''' will make the inserted sprite's picnum be 1 to 10, respectively<br><br />
'''S+ALT''' make inner sector<br><br />
'''C''' duplicate sectors/sprites<br><br />
'''C''' start circle attached to a wall<br><br />
'''KP +''' increase amount of walls in circle<br><br />
'''KP -''' decrease amount of walls in circle<br><br />
<br><br />
'''SPACE''' start/end drawing of sector, end drawing of circle<br><br />
'''LENTER''' when having some walls drawn, insert points at intersections with existing walls; clear drawn walls then<br><br />
'''LENTER''' check nextwall pointer for the highlighted line<br><br />
'''LENTER''' when having drawn some walls, batch-insert points where the drawn lines intersect with non-grayed-out walls<br><br />
'''LSHIFT+LCTRL+LENTER''' check ALL pointers (manual attempt to recover map)<br><br />
'''BACKSPACE''' remove the last wall during drawing sector<br><br />
'''DEL''' delete sprite<br><br />
'''DEL+CTRL''' delete sector<br><br />
'''DEL+CTRL+LShift''' delete highlighted sectors<br><br />
'''INS''' duplicate sectors/sprites<br><br />
'''INS''' start circle attached to a wall<br><br />
'''INS''' add vertex to wall<br><br />
'''RENTER''' switch to 3D mode<br><br />
'''ESC''' menu<br><br />
<br><br />
'''' A''' toggle autosave(every 3 minutes)<br><br />
'''' N''' toggle noclip<br><br />
'''S+CTRL''' save map<br><br />
'''L+CTRL''' load map<br><br />
<br />
'''P+CTRL''' Playtest map from current position<br><br />
'''P+CTRL+ALT''' Playtest map from start position<br><br />
<br />
'''R+CTRL''' manual grayout: if some sectors are highlighted, make the editable z range [min ceiling z, max floor z] of those; else reset z limits<br />
<br />
==TROR related keys==<br />
===2D mode===<br />
'''E+CTRL''' sector extension prompt (sectors to extend must be highlighted)<br><br />
'''E+CTRL''' make sandwich [''needs better explanation'']<br><br />
'''E+CTRL''' punch loop through extension (loop points must be highlighted, e.g. with '''RSHIFT'''+'''LCTRL''')<br><br />
<br><br />
'''A+CTRL''' toggle auto-grayout of non-extended sectors<br><br />
'''J+CTRL''' TROR-join sectors. The selection must consist of the two sets of sectors you wish to join.<br><br />
'''U+CTRL''' Clear extension: delete the bunch (i.e. ceiling-floor connection) of the aimed-at sector's floor<br><br />
'''PGUP'''/'''PGDN''' Change 'player' height in discrete steps in order to go through the different levels<br><br />
'''TAB+CTRL''' Display one currently aimed at sector (of potentially many that lie under the mouse crosshair)<br><br />
'''HOME''' and '''END''' (as modifiers to '''RALT'''): select all sectors whose floor's/ceiling's bunchnum equal the bunchnum of the aimed at sector (useful for further operations on whole bunches)<br />
<br />
===3D mode===<br />
'''I''' invisibility preview: toggle fake ROR texture on non-masked portals<br><br />
'''LENTER+CTRL''' When aiming at an extended floor/ceiling, paste to all floors/ceilings of the bunch of the aimed at one<br><br />
'''T''', '''B''' and '''H''' work as with walls, though they set/toggle the bits only on '''one''' side<br><br />
<br />
==Some console commands/variables==<br />
<br />
See "help <console-command/var>" for help on a particular command/variable.<br />
<br />
pk_quickmapcycling<br><br />
pk_uedaccel<br><br />
osd_tryscript<br><br />
sideview_reversehorizrot<br><br />
fixmaponsave_sprites<br><br />
show_heightindicators<br><br />
show_ambiencesounds<br><br />
corruptcheck_noalreadyrefd<br><br />
corruptcheck<br><br />
<br />
==Mapster32 keys as tables (unmaintained and obsolete)==<br />
<br />
Below are the Mapster32 keys as three sortable tables. They are sorted such that the more 'basic' keys are at the top.<br><br />
<br><br />
The column headers have the following meaning:<br><br />
<br />
'''key/keys''': self-explanatory. Where a key starts with a '+' on a line of its own,<br>&nbsp;&nbsp;&nbsp;&nbsp;it means that it should be pressed simultaneously with the first one in the<br />
same table row.<br><br />
'''type''': type of command: info=informational, edit=editing, navi=navigation,<br />
disp=display, misc=miscellany<br><br />
'''sec''', '''spr''','''wal''': in case of an editing command, whether it<br />
potentially acts on '''sec'''tors, '''spr'''ites, and/or '''wal'''ls.<br><br />
'''adv''': whether the command is 'advanced'. This is set somewhat arbitrarily.<br><br />
'''new''': whether the functionality of the command is new to Mapster32. An '''e''' means that it's enhanced from BUILD.<br><br />
'''N''': a running number. To restore the original order, sort by it.<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="2" cellspacing="0"<br />
|+ '''Mapster 32 keys &mdash; shared keys for 2D and 3D mode'''<br />
|- bgcolor="#f0f0f0"<br />
! key/keys!!description!!type!!sec<br>!!spr<br>!!wal<br>!!adv<br>!!new<br>!!N<br />
|-<br />
! F1<br />
|help||info||||||||<center>n</center>||<center>'''y'''</center>||0<br />
|-<br />
! UP/DOWN <br> LEFT/RIGHT <br> &nbsp;&nbsp;+LShift<br />
|move forward/back <br> turn left/right ('''+RCtrl''': strafe) <br> speed up movements||navi||||||||<center>n</center>||<center>n</center>||1<br />
|-<br />
! RENTER<br />
|toggle between 2D and 3D modes||misc||||||||<center>n</center>||<center>n</center>||2<br />
|-<br />
! B <br />
|toggle blocking of wall/sprite ('''+Shift''': one-sided)||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||3<br />
|-<br />
! R<br />
|cycle sprite aligment||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||4<br />
|-<br />
! ,/.<br />
|rotate sprite ('''+Shift''': slowly)||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||5<br />
|-<br />
! DEL<br />
|delete sprite||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||6<br />
|-<br />
! /<br />
|reset panning, repeat and flags||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||7<br />
|-<br />
! Alt+F<br />
|set first wall of sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||8<br />
|-<br />
! /+Shift<br />
|set xrepeat to yrepeat (make square)||edit||||<center>'''x'''</center>||||<center>'''y'''</center>||<center>'''y'''</center>||9<br />
|-<br />
! \'N <br />
|toggle camera clipping||navi||||||||<center>'''y'''</center>||<center>'''y'''</center>||10<br />
|-<br />
! Ctrl+N<br />
|toggle sprite clipping through floors/ceilings||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||11<br />
|-<br />
! \'A <br />
|toggle autosave (interval configurable in mapster32.cfg)||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||12<br />
|-<br />
! (Shift+)F12<br />
|capture (inverted) screenshot||misc||||||||<center>n</center>||<center>n</center>||13<br />
|-<br />
! Ctrl+L<br />
|load map||misc||||||||<center>n</center>||<center>n</center>||14<br />
|-<br />
! Ctrl+S<br />
|save map||misc||||||||<center>n</center>||<center>n</center>||15<br />
|-<br />
! Ctrl+P<br />
|playtest map from current position||misc||||||||<center>n</center>||<center>'''y'''</center>||16<br />
|-<br />
! Ctrl+Alt+P<br />
|playtest map from starting position||misc||||||||<center>n</center>||<center>'''y'''</center>||17<br />
|}<br />
<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="2" cellspacing="0"<br />
|+ '''Mapster 32 keys &mdash; 2D mode'''<br />
|- bgcolor="#f0f0f0"<br />
! key/keys!!description!!type!!sec<br>!!spr<br>!!wal<br>!!adv<br>!!new<br>!!N<br />
|-<br />
! A/Z<br />
|zoom in/out||disp||||||||<center>n</center>||<center>n</center>||0<br />
|-<br />
! L<br />
|toggle grid lock||edit||||||||<center>n</center>||<center>n</center>||1<br />
|-<br />
! G (+Shift)<br />
|cycle grid size (backwards), set auto grid||edit||||||||<center>n</center>||<center>'''e'''</center>||2<br />
|-<br />
! S<br />
|insert sprite <br>(prefix 1-0 on upper row: set picnum to 1-10, resp.)||edit||||||||<center>n</center>||<center>'''e'''</center>||3<br />
|-<br />
! O<br />
|ornament sprite onto wall||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||4<br />
|-<br />
! J<br />
|join sectors||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||5<br />
|-<br />
! P<br />
|set sector pal||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||6<br />
|-<br />
! Ctrl+H<br />
|toggle hitscan sensitivity||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||7<br />
|-<br />
! T (+Alt)<br />
|set lotag of sector (wall/sprite)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||8<br />
|-<br />
! H (+Alt)<br />
|set hitag of sector (wall/sprite)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||9<br />
|-<br />
! KP4/6/2/8<br />
|scale sprite (+'''KP5''': speed up)||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||10<br />
|-<br />
! SPACE<br />
|draw sector; end circle drawing||edit||||||||<center>n</center>||<center>n</center>||11<br />
|-<br />
! BACKSPACE<br />
|remove last wall when drawing sector||edit||||||||<center>n</center>||<center>n</center>||12<br />
|-<br />
! BACKSPACE<br />
|cycle 2D display mode (textured/non-textured)||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||13<br />
|-<br />
! INS<br />
|add vertex to wall||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||14<br />
|-<br />
! DEL+Ctrl<br />
|delete sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||15<br />
|-<br />
! C <br> KP+/KP-<br />
|start circle drawing from wall <br> increase/decrease amount of walls in circle||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||16<br />
|-<br />
! Alt+S<br />
|make sector from inner loop||edit||||||||<center>n</center>||<center>n</center>||17<br />
|-<br />
! RShift <br> &nbsp;&nbsp; +;/'<br />
|select group of walls and sprites <br> set difference/union||edit||||||||<center>n</center>||<center>n</center>||18<br />
|-<br />
! RAlt <br> &nbsp;&nbsp; +;/' <br> &nbsp;&nbsp;+RCtrl<br />
|select group of sectors <br> set difference/union <br> point sector selection||edit||||||||<center>n</center>||<center>n</center>||19<br />
|-<br />
! INS or C<br />
|duplicate selected sectors/sprites||edit||||||||<center>n</center>||<center>n</center>||20<br />
|-<br />
! SCROLLLOCK<br />
|set starting position||edit||||||||<center>n</center>||<center>n</center>||21<br />
|-<br />
! TAB<br />
|show sector data||info||||||||<center>n</center>||<center>n</center>||22<br />
|-<br />
! TAB+Ctrl <br> (or TAB+Shift)<br />
|show wall/sprite data||info||||||||<center>n</center>||<center>'''y'''</center>||23<br />
|-<br />
! LShift<br />
|show coords||info||||||||<center>n</center>||<center>'''y'''</center>||24<br />
|-<br />
! M (+Alt)<br />
|set extra of sector (wall/sprite)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||25<br />
|-<br />
! E<br />
|set sprite status list||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||26<br />
|-<br />
! Ctrl+T<br />
|toggle show tags||disp||||||||<center>'''y'''</center>||<center>n</center>||27<br />
|-<br />
! '3<br />
|cycle modes of showing object's name||disp||||||||<center>'''y'''</center>||<center>n</center>||28<br />
|-<br />
! '7<br />
|swap lotag and hitag of wall/sprite||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||29<br />
|-<br />
! 'J<br />
|jump to position (X,Y)||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||30<br />
|-<br />
! 'S<br />
|set sprite size||edit||||<center>'''x'''</center>||||<center>'''y'''</center>||<center>'''y'''</center>||31<br />
|-<br />
! 'L<br />
|set wall/sprite coordinates||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||32<br />
|-<br />
! 'F<br />
|Special functions menu<blockquote>''Replace invalid tiles''<br>''Delete all spr of tile #''<br>''Set map sky shade''<br>''Set map sky height''<br>''Global Z coord shift''<br>''Resize selection''<br>''Global shade divide''<br>''Global visibility divide''</blockquote>||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||33<br />
|-<br />
! X/Y (+Alt)<br />
|flip (mirror) selected sectors in x/y||edit||<center>'''x'''</center>||||||<center>'''y'''</center>||<center>'''y'''</center>||34<br />
|-<br />
! F2<br />
|show sound index (root CON file to fetch sound <br>definitions from can be specified at startup; <br>default is GAME.CON)||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||35<br />
|-<br />
! F4<br />
|toggle first wall highlighting||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||36<br />
|-<br />
! F5<br />
|show item count||info||||||||<center>'''y'''</center>||<center>n</center>||37<br />
|-<br />
! F6<br />
|show actor count (when pointed at sprite: SE help)||info||||||||<center>'''y'''</center>||<center>n</center>||38<br />
|-<br />
! F7<br />
|edit sector data||edit||<center>'''x'''</center>||||||<center>'''y'''</center>||<center>'''y'''</center>||39<br />
|-<br />
! F8<br />
|edit wall/sprite data||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||40<br />
|-<br />
! F9<br />
|show ST help||info||||||||<center>'''y'''</center>||<center>n</center>||41<br />
|-<br />
! Alt+F7<br />
|search sector by tag||info||||||||<center>'''y'''</center>||<center>n</center>||42<br />
|-<br />
! Alt+F8<br />
|search wall by tag/search sprite||info||||||||<center>'''y'''</center>||<center>'''e'''</center>||43<br />
|-<br />
! ]/[<br />
|search forward/backward||info||||||||<center>'''y'''</center>||<center>n</center>||44<br />
|-<br />
! LCtrl+RShift<br />
|select all walls of current sector <br>(point at a wall and holding '''LCtrl''', press '''RShift''')||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||45<br />
|-<br />
! LENTER<br />
|check pointers for current sector <br>('''+LCtrl+LShift''': check ALL pointers)||edit||||||||<center>'''y'''</center>||<center>n</center>||46<br />
|}<br />
<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="2" cellspacing="0"<br />
|+ '''Mapster 32 keys &mdash; 3D mode'''<br />
|- bgcolor="#f0f0f0"<br />
! key/keys!!description!!type!!sec<br>!!spr<br>!!wal<br>!!adv<br>!!new<br>!!N<br />
|-<br />
! A/Z <br> &nbsp;&nbsp;+Ctrl <br> &nbsp;&nbsp;+LShift<br />
|move up/down <br> look down/up <br> speed up movements||navi||||||||<center>n</center>||<center>n</center>||0<br />
|-<br />
! CAPSLOCK or 'Z<br />
|cycle zmode||navi||||||||<center>n</center>||<center>n</center>||1<br />
|-<br />
! KP+/KP-<br />
|change shade||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||2<br />
|-<br />
! KP+/KP-+Alt <br> &nbsp;&nbsp;+Alt+Shift <br> &nbsp;&nbsp;+Ctrl+Alt<br />
|change visibility <br> change visibility in smaller increments <br> change global visibility||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||3<br />
|-<br />
! ]/[ <br> &nbsp;&nbsp;+RShift <br> &nbsp;&nbsp;+LShift<br />
|slope down/up <br> smaller increments <br> smallest increments ||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||4<br />
|-<br />
! [+Alt<br />
|align slope to floor of adjoining sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||5<br />
|-<br />
! ]+Alt<br />
|align slope to ceiling of adjoining sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||6<br />
|-<br />
! PGUP/PGDN <br> &nbsp;&nbsp;+END <br> &nbsp;&nbsp;+HOME<br />
|move object up/down ('''+Ctrl''' on sectors: 4x) <br> 1/2 of normal increments <br> 1/4 of normal increments||edit||<center>'''x'''</center>||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||7<br />
|-<br />
! PGUP+Ctrl<br />
|put sprite on ceiling||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||8<br />
|-<br />
! PGDN+Ctrl<br />
|put sprite on ground||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||9<br />
|-<br />
! KP4/6/2/8 <br> &nbsp;&nbsp;+Shift or +Alt<br>&nbsp;&nbsp;+KP5<br />
|pan floor/ceiling or scale wall/sprite <br>force panning <br> speed up||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||10<br />
|-<br />
! V<br />
|choose tile||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||11<br />
|-<br />
! S<br />
|insert sprite||edit||||||||<center>n</center>||<center>n</center>||12<br />
|-<br />
! G<br />
|set picnum||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||13<br />
|-<br />
! E<br />
|toggle sector texture expansion||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||14<br />
|-<br />
! F<br />
|flip texture||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||15<br />
|-<br />
! R<br />
|toggle sector texture relativity||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||16<br />
|-<br />
! 'T<br />
|set lotag||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||17<br />
|-<br />
! 'H<br />
|set hitag||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||18<br />
|-<br />
! 'S<br />
|set shade||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||19<br />
|-<br />
! Alt+P<br />
|set pal||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||20<br />
|-<br />
! 1<br />
|toggle one sided sprite/wall||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||21<br />
|-<br />
! 2<br />
|toggle bottom wall swapping||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||22<br />
|-<br />
! M<br />
|toggle masking wall||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||23<br />
|-<br />
! O<br />
|toggle wall orientation||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||24<br />
|-<br />
! O<br />
|ornament sprite onto wall||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||25<br />
|-<br />
! C<br />
|toggle sprite centering||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||26<br />
|-<br />
! H<br />
|toggle hitscan sensitivity ('''+Shift''': one-sided)||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||27<br />
|-<br />
! T<br />
|cycle translucence||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||28<br />
|-<br />
! P<br />
|toggle parallax||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||29<br />
|-<br />
! 'V<br />
|set sector visibility||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||30<br />
|-<br />
! Ctrl+P (obsolete)<br />
|change parallax type (classic renderer only)||edit||||||||<center>n</center>||<center>n</center>||31<br />
|-<br />
! .<br />
|search &amp; fix panning of the wall to the right||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||32<br />
|-<br />
! 'L<br />
|set coordinates||edit||<center>'''x'''</center>||<center>'''x'''</center>||||<center>n</center>||<center>'''y'''</center>||33<br />
|-<br />
! 'M<br />
|set extra||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||34<br />
|-<br />
! +/-<br />
|cycle tile||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||35<br />
|-<br />
! TAB<br />
|copy to clipboard||edit||||||||<center>n</center>||<center>n</center>||36<br />
|-<br />
! LENTER<br />
|paste all (pic+shade+pal+flags+tags+extra)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||37<br />
|-<br />
! 'LENTER<br />
|paste picnum only||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||38<br />
|-<br />
! LENTER+Shift<br />
|paste shading+pal||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||39<br />
|-<br />
! LENTER+Ctrl<br />
|paste picnum+shading+pal||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||40<br />
|-<br />
! Alt+C<br />
|replace all "same" tiles with clipboard tile||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||41<br />
|-<br />
! Alt+D<br />
|adjust clipping distance of sprite||edit||||<center>'''x'''</center>||||<center>'''y'''</center>||<center>n</center>||42<br />
|-<br />
! ;V<br />
|set sector visibility on all selected sectors||edit||<center>'''x'''</center>||||||<center>'''y'''</center>||<center>'''y'''</center>||43<br />
|-<br />
! 3<br />
|toggle Sector over Sector <br>(see http://www.users.on.net/~triforce/cduke3d/)||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||44<br />
|-<br />
! 'BACKSPACE<br />
|clear all flags for wall/sprite||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||45<br />
|-<br />
! 'P<br />
|set palette of all sprites/walls/floors/ceilings <br>(respectively) in all selected sectors||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||46<br />
|-<br />
! ;P<br />
|set palette of all sprites/walls/floors/ceilings <br>in all selected sectors||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||47<br />
|-<br />
! Ctrl+Shift<br>+LENTER<br />
|autoshade wall||edit||||||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||48<br />
|-<br />
! F2<br />
|toggle clipboard preview||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||49<br />
|-<br />
! F2+Shift<br />
|toggle current tile display||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||50<br />
|-<br />
! F3<br />
|toggle mouselook||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||51<br />
|-<br />
! F4<br />
|toggle ambient sounds||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||52<br />
|-<br />
! F5<br />
|toggle mouse navigation||navi||||||||<center>'''y'''</center>||<center>'''y'''</center>||53<br />
|-<br />
! F6<br />
|toggle automatic SE help||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||54<br />
|-<br />
! F7<br />
|toggle automatic ST help||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||55<br />
|-<br />
! F9<br />
|reload and activate maphacks||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||56<br />
|-<br />
! F10<br />
|disable maphacks||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||57<br />
|-<br />
! F11<br />
|cycle brightness||misc||||||||<center>n</center>||<center>n</center>||58<br />
|-<br />
! 'D<br />
|cycle skill level||disp||||||||<center>'''y'''</center>||<center>n</center>||59<br />
|-<br />
! 'X<br />
|toggle sprite shade preview||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||60<br />
|-<br />
! 'W<br />
|toggle sprite display||disp||||||||<center>'''y'''</center>||<center>n</center>||61<br />
|-<br />
! 'Y<br />
|toggle purple background||disp||||||||<center>'''y'''</center>||<center>n</center>||62<br />
|-<br />
! 'C<br />
|copy shade from clipboard to all "same" objects||edit||||||||<center>'''y'''</center>||<center>n</center>||63<br />
|-<br />
! 'R<br />
|toggle framerate display||info||||||||<center>'''y'''</center>||<center>n</center>||64<br />
|-<br />
! Ctrl+T<br />
|when pointing on a letter sprite: text entry tool <br>(alphabets are configurable in tiles.cfg)||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||65<br />
|}</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Build/Mapster32_Keyboard_Commands&diff=11493Build/Mapster32 Keyboard Commands2013-01-16T19:42:47Z<p>Helixhorned: add "Some console commands/variables" section.</p>
<hr />
<div>== 3D Mode: Mouse ==<br />
The purpose of mouse in 3D mode is pointing at some objects in a map and looking around ('''F3''' toggles mouse look).<br><br />
<br />
Mouse pointer always points (see info about it at the bottom of the screen) at one of these objects:<br><br />
# wall<br />
# ceiling of sector<br />
# floor of sector<br />
# sprite<br />
# masked wall (non-transparent or semi-transparent wall between sectors)<br />
<br />
It's important to understand this concept:<br><br />
Some commands work differently depending on the current object (the object the mouse points at).<br><br />
Some commands manipulate only the current object, some commands manipulate the selected (also called "highlighted") sprites/sectors in 2D mode, and some commands work globally.<br><br />
<br />
====Mouse buttons====<br />
'''LEFT''' lock the current object. The current object won't be changing as long as the button is pressed.<br><br />
'''WHEEL''' change shade ('''+CTRL''': in increments of 4)<br><br />
'''WHEEL+ALT''' change visibility<br><br />
'''LEFT+WHEEL''' change tile<br><br />
'''RIGHT+WHEEL''' move object up/down<br><br />
'''MIDDLE''' temporary mouse look (when not in UnrealEd-style mouse mode)<br><br />
<br />
Additionally, there is UnrealEd-style mouse navigation in 3D mode (toggle it with '''F5'''), with the following bindings:<br><br />
'''RIGHT''' mouse look<br><br />
'''LEFT''' x: turning, y: move forward/back<br><br />
'''LEFT+RIGHT''' x: strafe left/right, y: move up/down<br><br />
'''MIDDLE''' y: move in viewing direction<br><br />
The console variable ''pk_uedaccel'' changes the speed of navigation exponentially (valid values are 0-5).<br><br />
<br />
It is possible to move around objects using the mouse and holding down specific modifier keys:<br><br />
'''LEFT+ALT''' move object up/down ('''+CTRL''': in larger increments)<br><br />
'''LEFT+SHIFT''' move sprite in horizontal plane ('''+CTRL''': grid-aligned)<br><br />
The two preceding controls also work on a set of sprites highlighted in 2D mode.<br><br />
'''LEFT+SHIFT''' pan ceiling/floor/wall texture<br><br />
'''LEFT+CTRL''' scale wall texture or size of sprite<br><br />
'''LEFT+CTRL''' change slope of floor/ceiling<br><br />
<br />
== 3D Mode: Selecting Tile Mode ==<br />
After pressing the '''V''' key in 3D mode, Mapster32 switches to "select tile" mode.<br><br />
<br />
====Keys====<br />
'''UP/DOWN/LEFT/RIGHT/PGUP/PGDN/HOME/END''' movements ('''CTRL''' modifies some commands)<br><br />
'''KP /''' zoom in<br><br />
'''KP *''' zoom out<br><br />
'''Z''' toggle tile zoom<br><br />
<br />
'''G''' goto specified tile<br><br />
'''U''' goto start of user defined art (3584)<br><br />
'''A''' goto start of Atomic edition's art (4096)<br><br />
'''E''' goto start of extended art (6144,9216)<br><br />
<br />
'''S''' Search for a named tile. When ^ is entered as the first character, anchor string at the beginning.<br />
<br />
'''V''' select from all tiles<br><br />
'''T''' select from pre-defined tile group which can be edited in tiles.cfg or added from within the tile selector. For this, press '''SPACE''' on the tiles to be grouped ('''CTRL-SPACE''' to select a range from starting from the last selection with '''SPACE'''). When you're ready, press '''Ctrl-G''' and you'll be queried for a group hotkey and name. The new tile group should now be saved persistently in tiles.cfg.<br><br />
<br />
'''ESC''' cancel<br><br />
'''ENTER''' accept<br><br />
<br />
====Mouse====<br />
'''LEFT''' select<br><br />
'''CTRL+WHEEL''' zoom<br><br />
'''WHEEL''' scroll<br><br />
'''RIGHT''' smooth scrolling<br><br />
<br />
== 3D Mode: Keys ==<br />
'''UP''' move forward<br><br />
'''DOWN''' move backward<br><br />
'''LEFT+RCTRL''' move left<br><br />
'''RIGHT+RCTRL''' move right<br><br />
'''A''' move up<br><br />
'''Z''' move down<br><br />
'''+LSHIFT''' speed up movements<br><br />
<br />
'''LEFT''' turn left<br><br />
'''RIGHT''' turn right<br><br />
'''A+CTRL''' look down<br><br />
'''Z+CTRL''' look up<br><br />
<br />
'''F1''' toggle help<br><br />
'''F3''' toggle mouselook<br><br />
'''F4''' toggle ambience sounds<br><br />
'''F5''' toggle UnrealEd-style mouse navigation<br><br />
'''F6''' toggle automatic SECTOREFFECTOR help<br><br />
'''F7''' toggle automatic sector tag help<br><br />
'''F9''' load and activate/deactivate maphacks<br><br />
'''F11''' brightness<br><br />
'''F12''' screenshot<br><br />
'''F12+SHIFT''' inverted screenshot<br><br />
<br />
'''' V''' set sector visibility<br><br />
'''; V''' set sector visibility on all selected sectors<br><br />
'''V''' choose tile<br><br />
'''3''' toggle Sector over Sector. See documentation here: http://www.users.on.net/~triforce/cduke3d/<br><br />
'''' BACKSPACE''' clear all flags for wall/sprite<br><br />
'''BACKSPACE''' clear nextwall ("red wall") link for aimed at wall<br><br />
'''' P''' paste palette to all selected sectors<br><br />
'''; P''' paste palette to all selected sectors & sprites<br><br />
<br />
'''S''' insert sprite<br><br />
'''DEL''' delete sprite<br><br />
''',''' rotate sprite<br><br />
'''.''' rotate sprite<br><br />
'''<''' slowly rotate sprite<br><br />
'''>''' slowly rotate sprite<br><br />
<br />
'''.''' (period): search & fix panning of the wall to the right (''',''' (comma): to the left), has 4 modifiers:<br><br />
'''+CTRL''': recurse nextwalls<br><br />
'''+SHIFT''': don't iterate point2's, i.e. affect only the immediate neighbor<br><br />
'''+ALT''': copy over pixel width<br><br />
'''+'''' (quote): align immediate upper and lower TROR neighbors<br><br />
<br />
'''SPACE''' lock to object (same as left mouse button)<br><br />
'''PGUP/PGDN+ALT''' when aiming at red wall, select the floor or ceiling of the nextsector (useful for e.g. raising a lowered door when standing near it), depending on whether the aim is at the top or bottom of the wall<br><br />
<br />
'''CAPS LOCK''' cycle zmode<br><br />
'''' Z''' cycle zmode<br><br />
'''' L''' change the coordinates of the current object<br><br />
'''' M''' set the extra of the current object<br><br />
'''1''' toggle one sided sprite/wall<br><br />
'''2''' toggle bottom wall swapping<br><br />
'''O''' set top or bottom orientation of wall<br><br />
'''O''' ornament sprite onto wall<br><br />
'''M''' toggle masking wall<br><br />
'''H''' toggle hitscan sensitivity<br><br />
'''H+SHIFT''' toggle one side hitscan sensitivity for the wall<br><br />
'''' H''' set hitag of the current object<br><br />
<br />
'''KP_MINUS''' shades down individual sector/wall/sprite or selected sectors<br><br />
'''KP_MINUS+ALT''' decreases visibility of sector or selected sectors<br><br />
'''KP_MINUS+ALT+SHIFT''' slowly decreases visibility of sector or selected sectors<br><br />
'''KP_MINUS+ALT+CTRL''' decreases global visibility<br><br />
'''KP_PLUS''' shades up individual sector/wall/sprite or selected sectors<br><br />
'''KP_PLUS+ALT''' increases visibility of sector or selected sectors<br><br />
'''KP_PLUS+ALT+SHIFT''' slowly increases visibility of sector or selected sectors<br><br />
'''KP_PLUS+ALT+CTRL''' increases global visibility<br><br />
Note: '''ALT, CTRL, SHIFT''' are modifiers so they work with mouse too.<br><br />
<br />
'''PLUS/MINUS''' cycle tile<br><br />
'''E''' toggle sector texture expansion<br><br />
'''R''' toggle sector texture relativity alignment<br><br />
'''R''' cycle sprite aligment between: wall aligned, floor aligned, view aligned<br><br />
'''' R''' toggle framerate<br><br />
'''F''' flip the current object ('''+SHIFT''': reverse direction)<br><br />
'''F+ALT''' set the first wall of sector<br><br />
<br />
'''PAGE UP''' move up selected sprites or sectors<br><br />
'''PAGE DN''' move down selected sprites or sectors<br><br />
'''PAGE UP+CTRL''' put selected sprites on ceiling<br><br />
'''PAGE DN+CTRL''' put selected sprites on ground<br><br />
'''+CTRL''' speed up movement<br><br />
'''+END''' slow down movement<br><br />
'''+HOME''' slow down movement even more<br><br />
Note: '''CTRL, HOME, END''' are modifiers so they work with mouse too.<br><br />
<br />
'''N''' toggle 'no-autoshade'-bit of sprite<br><br />
'''' I''' toggle sprite invisibility<br><br />
'''' D''' cycle skill level<br><br />
'''' X''' toggle sprite shade and SE light effect preview<br><br />
'''' W''' toggle sprite display by class (no effectors/actors)<br><br />
'''' Y''' toggle purple background<br><br />
'''' C''' copy shade from the clipboard to all objects in the map which are the same tile as the tile of the object that in the clipboard. It works separately for sectors/walls/sprites depending on the current object. (I hope somebody who understands this, will clarify this)<br><br />
'''' T''' set lotag<br><br />
'''' H''' set hitag<br><br />
'''' S''' set shade<br><br />
'''G''' set picnum<br><br />
'''B''' toggle blocking<br><br />
'''B+SHIFT''' toggle one side blocking for the wall<br><br />
'''T''' cycles translucence for sprites/masked walls (and ceilings/floors for ROR)<br><br />
<br />
'''F2''' toggle clipboard preview<br><br />
'''F2+SHIFT''' toggle current sprite preview<br><br />
'''TAB''' copy to the clipboard<br><br />
'''LENTER+CTRL+SHIFT''' autoshade wall<br><br />
'''' LENTER''' paste picnum only<br><br />
'''; LENTER''' on ceilings/floors, auto-align with reference in '''TAB'''bed clipboard (incomplete for relative-aligned references)<br><br />
'''LENTER+SHIFT''' paste some visual (shading+pal) properties of the clipboard on sector/wall/sprite<br><br />
'''LENTER+CTRL''' paste some visual (picnum+shading+pal) properties of the clipboard on sector/wall/sprite<br><br />
'''LENTER''' paste all (picnum+shading+pal+flags+tags+extra) properties of the clipboard on sector/wall/sprite<br><br />
Note: some fields are only pasted if the type of 'thing' in the clipboard (wall/sprite/sector) equals that of the aimed at object<br><br />
<br />
'''C''' toggle center sprite<br><br />
'''ALT+C''' replace all tiles in the map with one from the clipboard<br><br />
<br />
'''' A''' toggle autosave. The interval is configurable (default: every 3 minutes)<br><br />
<br />
'''' N''' toggle noclip for the camera<br><br />
'''N+CTRL''' toggle noclip for sprites<br><br />
<br />
'''[''' slopes up fast<br><br />
'''[+RSHIFT''' slope up with medium speed<br><br />
'''[+LSHIFT''' slope up slowly<br><br />
'''[+ALT''' align slope to the floor of adjoining sector<br><br />
''']''' slope down fast<br><br />
''']+RSHIFT''' slope down with medium speed<br><br />
''']+LSHIFT''' slope down slowly<br><br />
''']+ALT''' align slope to the ceiling of adjoining sector<br><br />
<br />
'''KP_4''' panning floor/ceiling horizontally<br><br />
'''KP_6''' panning floor/ceiling horizontally<br><br />
'''KP_2''' panning floor/ceiling vertically<br><br />
'''KP_8''' panning floor/ceiling vertically<br><br />
'''KP_4''' scaling wall/sprite horizontally<br><br />
'''KP_6''' scaling wall/sprite horizontally<br><br />
'''KP_2''' scaling wall/sprite vertically<br><br />
'''KP_8''' scaling wall/sprite vertically<br><br />
'''+SHIFT''' or '''+ALT''' force panning (for walls); the latter is an alternative if Shift-KP5-KP*-combinations are dead.<br><br />
'''+KP_5''' speed up<br><br />
<br />
'''/''' Reset panning, repeat and flags to defaults<br><br />
'''/+SHIFT''' set xrepeat to yrepeat (makes square)<br><br />
<br />
'''P''' enable/disable parallax<br><br />
'''P+CTRL''' change parallax type (works only in classic render, not saved into maps)<br><br />
'''P+CTRL''' Playtest map from current position<br><br />
'''P+ALT+CTRL''' Playtest map from start position<br><br />
'''P+ALT''' change pal of sector/wall/sprite<br><br />
'''D+ALT''' adjust clip distance of the sprite<br><br />
'''RENTER''' switch to 2D mode<br><br />
<br />
'''S+CTRL''' save map<br><br />
'''L+CTRL''' load last saved map<br><br />
<br />
'''ESC''' quit<br><br />
<br />
== 2D Mode: Mouse ==<br />
The purpose of mouse in 2D mode is pointing, selecting, moving object in a map.<br />
<br />
Every time mouse is pointing at one of these:<br><br />
# Nothing<br />
# Sector<br />
# Sector and wall<br />
# Sector and sprite<br />
# Wall (wall without sector - map is corrupt)<br />
# Sprite (sprite without sector - map is corrupt)<br />
<br />
Some commands work differently depending on the current object (the object the mouse points at).<br> To solve the ambiguity between sectors and walls/sprites, one usually must press ALT to work with walls/sprites instead of sectors.<br><br />
<br />
===='''RSHIFT''' (select vertices/sprites) modifiers====<br />
* ''';''': set difference<br><br />
* ''' ' ''' (quote character): set union<br><br />
(note that they have to be depressed when '''RSHIFT''' is ''released'')<br><br />
* '''RCTRL''' select only sprites (not walls)<br />
* '''END''' select from all sectors, even grayed out ones<br />
<br><br />
===='''RALT''' (select sectors) modifiers====<br />
* ''';''': set difference<br><br />
* ''' ' ''' (quote character): set union<br><br />
(note that they have to be depressed when '''RALT''' is ''released'')<br><br />
* when '''RCTRL''' is pressed at '''RALT''' release time, then for a sector to be selected, it must be "inside" the mouse pointer instead of being surrounded by the rectangle<br><br />
* when holding '''RSHIFT''', will select all sectors, even grayed out ones<br><br />
See the [[#TROR related keys|TROR section]] for '''HOME''' and '''END''' modifiers.<br />
<br><br />
<br><br />
'''WHEEL''' zoom<br><br />
'''WHEEL+ALT''' move camera and zoom<br><br />
'''LEFT BUTTON''' drag sectors/vertices/sprites<br><br />
'''RIGHT BUTTON''' move camera<br><br />
'''RIGHT MIDDLE''' move camera<br><br />
<br />
== 2D Mode: Keys ==<br />
'''F1''' show help<br><br />
'''F2''' show sound index<br><br />
'''F3''' enter/quit side-view mode<br><br />
'''in side-view mode:'''<br><br />
* '''Q''', '''W''': orbit around center<br />
* '''A''', '''Z''': change azimuth<br />
* '''MMB''': change "player" z<br />
* '''RMB''': change "player" x/y<br />
'''F4''' toggle first wall preview<br><br />
'''F5''' show item count<br><br />
'''F6''' show actor count when pointed at wall<br><br />
'''F6''' show Sector Effector help when pointed at sprite<br><br />
'''F7''' edit sector data<br><br />
'''F8''' edit wall/sprite data<br><br />
'''F9''' show the Sector Tags help<br><br />
'''F12''' screenshot<br><br />
'''F12+SHIFT''' inverted screenshot<br><br />
<br />
'''SCROLL LOCK''' set starting position<br><br />
<br />
'''LSHIFT''' show coordinates/linking sprites<br><br />
'''LSHIFT+[''', '''LSHIFT+]''' cycle linking sprites<br><br />
<br><br />
'''LSHIFT'''+'''LMB''' (with RSHIFT-highlighted points) interactively scale highlighted points (+'''CTRL''' forces square aspect)<br><br />
'''LSHIFT'''+'''RMB''' (with RSHIFT-highlighted points) interactively rotate highlighted points<br><br />
If '''LSHIFT''' is released before the mouse button, the interactive scaling/rotation is canceled.<br><br />
<br><br />
'''M''' set extra of sector<br><br />
'''M+ALT''' set extra of wall/sprite<br><br />
'''/''' Reset panning, repeat and flags to defaults<br><br />
'''/+SHIFT''' set xrepeat to yrepeat (makes square)<br><br />
<br />
'''KP_4''' scaling sprite horizontally<br><br />
'''KP_6''' scaling sprite horizontally<br><br />
'''KP_2''' scaling sprite vertically<br><br />
'''KP_8''' scaling sprite vertically<br><br />
'''+KP_5''' speed up<br><br />
<br><br />
'''R''' cycle sprite alignment<br><br />
'''' S''' set sprite size<br><br />
'''' F''' function menu<br><br />
'''F7+ALT''' search sector lotag<br><br />
'''F8+ALT''' on wall: search wall lotag<br><br />
'''F8+ALT''' on sprite: generic sprite search<br><br />
'''[''' search backward<br><br />
''']''' search forward<br><br />
'''G''' cycle grid size<br><br />
'''G+SHIFT''' cycle grid size backward<br><br />
'''' L''' set sprite/wall coordinates<br><br />
'''' 3''' cycle modes of showing object's name<br><br />
'''' 7''' swap lotag and hitag of wall/sprite<br><br />
'''' J''' jump to position of object (asks for sector/wall/sprite, or x,y)<br><br />
<br />
'''[+ALT''' goto previous corruption<br><br />
''']+ALT''' goto next corruption<br><br />
<br />
'''X''' flip selected sectors in x<br><br />
'''Y''' flip selected sectors in y<br><br />
'''X+ALT''' mirror selected sectors in x<br><br />
'''Y+ALT''' mirror selected sectors in y<br><br />
<br />
'''B''' toggle blocking<br><br />
'''B+SHIFT''' toggle one side blocking for wall<br><br />
'''F+ALT''' set the first wall of sector<br><br />
'''O''' ornament sprite onto wall<br><br />
<br />
''',''' rotate sprite/selected sectors<br><br />
'''.''' rotate sprite/selected sectors<br><br />
'''<''' [i.e. ''',+SHIFT'''] slowly rotate sprite/selected sectors<br><br />
'''>''' [i.e. '''.+SHIFT'''] slowly rotate sprite/selected sectors<br><br />
''',+ALT''', '''.+ALT''' rotate highlighted sectors by a manually entered angle<br><br />
<br><br />
'''T''' set sector lotag<br><br />
'''T+ALT''' set wall/sprite lotag<br><br />
'''T+CTRL''' toggle show tags<br><br />
<br />
'''H''' set sector hitag<br><br />
'''H+ALT''' set wall/sprite hitag<br><br />
'''H+CTRL''' toggle hitscan sensitivity<br><br />
'''H+CTRL+SHIFT''' toggle hitscan sensitivity<br><br />
<br />
'''P''' set sector pal<br><br />
'''E''' set sprite status list<br><br />
'''TAB''' show sector data<br><br />
'''TAB+SHIFT''' show wall/sprite data<br><br />
'''TAB+CTRL''' enable/disable filling of aimed-at sector<br><br />
<br />
'''LCTRL+RSHIFT''' select all walls of the current sector (point at a wall and holding '''LCTRL''', press and release '''RSHIFT'''). Set ops (see RSHIFT above) work too.<br><br />
'''A''' zoom in<br><br />
'''Z''' zoom out<br><br />
'''L''' toggle grid lock<br><br />
'''J''' join sectors<br><br />
'''S''' insert sprite, pressing a key from '''1''' to '''0''' on the upper row before pressing '''S''' will make the inserted sprite's picnum be 1 to 10, respectively<br><br />
'''S+ALT''' make inner sector<br><br />
'''C''' duplicate sectors/sprites<br><br />
'''C''' start circle attached to a wall<br><br />
'''KP +''' increase amount of walls in circle<br><br />
'''KP -''' decrease amount of walls in circle<br><br />
<br><br />
'''SPACE''' start/end drawing of sector, end drawing of circle<br><br />
'''LENTER''' when having some walls drawn, insert points at intersections with existing walls; clear drawn walls then<br><br />
'''LENTER''' check nextwall pointer for the highlighted line<br><br />
'''LENTER''' when having drawn some walls, batch-insert points where the drawn lines intersect with non-grayed-out walls<br><br />
'''LSHIFT+LCTRL+LENTER''' check ALL pointers (manual attempt to recover map)<br><br />
'''BACKSPACE''' remove the last wall during drawing sector<br><br />
'''DEL''' delete sprite<br><br />
'''DEL+CTRL''' delete sector<br><br />
'''DEL+CTRL+LShift''' delete highlighted sectors<br><br />
'''INS''' duplicate sectors/sprites<br><br />
'''INS''' start circle attached to a wall<br><br />
'''INS''' add vertex to wall<br><br />
'''RENTER''' switch to 3D mode<br><br />
'''ESC''' menu<br><br />
<br><br />
'''' A''' toggle autosave(every 3 minutes)<br><br />
'''' N''' toggle noclip<br><br />
'''S+CTRL''' save map<br><br />
'''L+CTRL''' load map<br><br />
<br />
'''P+CTRL''' Playtest map from current position<br><br />
'''P+CTRL+ALT''' Playtest map from start position<br><br />
<br />
'''R+CTRL''' manual grayout: if some sectors are highlighted, make the editable z range [min ceiling z, max floor z] of those; else reset z limits<br />
<br />
==TROR related keys==<br />
===2D mode===<br />
'''E+CTRL''' sector extension prompt (sectors to extend must be highlighted)<br><br />
'''E+CTRL''' make sandwich [''needs better explanation'']<br><br />
'''E+CTRL''' punch loop through extension (loop points must be highlighted, e.g. with '''RSHIFT'''+'''LCTRL''')<br><br />
<br><br />
'''A+CTRL''' toggle auto-grayout of non-extended sectors<br><br />
'''J+CTRL''' TROR-join sectors. The selection must consist of the two sets of sectors you wish to join.<br><br />
'''U+CTRL''' Clear extension: delete the bunch (i.e. ceiling-floor connection) of the aimed-at sector's floor<br><br />
'''PGUP'''/'''PGDN''' Change 'player' height in discrete steps in order to go through the different levels<br><br />
'''TAB+CTRL''' Display one currently aimed at sector (of potentially many that lie under the mouse crosshair)<br><br />
'''HOME''' and '''END''' (as modifiers to '''RALT'''): select all sectors whose floor's/ceiling's bunchnum equal the bunchnum of the aimed at sector (useful for further operations on whole bunches)<br />
<br />
===3D mode===<br />
'''I''' invisibility preview: toggle fake ROR texture on non-masked portals<br><br />
'''LENTER+CTRL''' When aiming at an extended floor/ceiling, paste to all floors/ceilings of the bunch of the aimed at one<br><br />
'''T''', '''B''' and '''H''' work as with walls, though they set/toggle the bits only on '''one''' side<br><br />
<br />
==Some console commands/variables==<br />
<br />
See "help <console-command/var>" for help on a particular command/variable.<br />
<br />
pk_quickmapcycling<br><br />
pk_uedaccel<br><br />
osd_tryscript<br><br />
sideview_reversehorizrot<br><br />
fixmaponsave_sprites<br><br />
show_heightindicators<br><br />
show_ambiencesounds<br><br />
corruptcheck_noalreadyrefd<br><br />
corruptcheck<br><br />
<br />
==Mapster32 keys as tables (unmaintained and obsolete)==<br />
<br />
Below are the Mapster32 keys as three sortable tables. They are sorted such that the more 'basic' keys are at the top.<br><br />
<br><br />
The column headers have the following meaning:<br><br />
<br />
'''key/keys''': self-explanatory. Where a key starts with a '+' on a line of its own,<br>&nbsp;&nbsp;&nbsp;&nbsp;it means that it should be pressed simultaneously with the first one in the<br />
same table row.<br><br />
'''type''': type of command: info=informational, edit=editing, navi=navigation,<br />
disp=display, misc=miscellany<br><br />
'''sec''', '''spr''','''wal''': in case of an editing command, whether it<br />
potentially acts on '''sec'''tors, '''spr'''ites, and/or '''wal'''ls.<br><br />
'''adv''': whether the command is 'advanced'. This is set somewhat arbitrarily.<br><br />
'''new''': whether the functionality of the command is new to Mapster32. An '''e''' means that it's enhanced from BUILD.<br><br />
'''N''': a running number. To restore the original order, sort by it.<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="2" cellspacing="0"<br />
|+ '''Mapster 32 keys &mdash; shared keys for 2D and 3D mode'''<br />
|- bgcolor="#f0f0f0"<br />
! key/keys!!description!!type!!sec<br>!!spr<br>!!wal<br>!!adv<br>!!new<br>!!N<br />
|-<br />
! F1<br />
|help||info||||||||<center>n</center>||<center>'''y'''</center>||0<br />
|-<br />
! UP/DOWN <br> LEFT/RIGHT <br> &nbsp;&nbsp;+LShift<br />
|move forward/back <br> turn left/right ('''+RCtrl''': strafe) <br> speed up movements||navi||||||||<center>n</center>||<center>n</center>||1<br />
|-<br />
! RENTER<br />
|toggle between 2D and 3D modes||misc||||||||<center>n</center>||<center>n</center>||2<br />
|-<br />
! B <br />
|toggle blocking of wall/sprite ('''+Shift''': one-sided)||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||3<br />
|-<br />
! R<br />
|cycle sprite aligment||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||4<br />
|-<br />
! ,/.<br />
|rotate sprite ('''+Shift''': slowly)||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||5<br />
|-<br />
! DEL<br />
|delete sprite||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||6<br />
|-<br />
! /<br />
|reset panning, repeat and flags||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||7<br />
|-<br />
! Alt+F<br />
|set first wall of sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||8<br />
|-<br />
! /+Shift<br />
|set xrepeat to yrepeat (make square)||edit||||<center>'''x'''</center>||||<center>'''y'''</center>||<center>'''y'''</center>||9<br />
|-<br />
! \'N <br />
|toggle camera clipping||navi||||||||<center>'''y'''</center>||<center>'''y'''</center>||10<br />
|-<br />
! Ctrl+N<br />
|toggle sprite clipping through floors/ceilings||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||11<br />
|-<br />
! \'A <br />
|toggle autosave (interval configurable in mapster32.cfg)||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||12<br />
|-<br />
! (Shift+)F12<br />
|capture (inverted) screenshot||misc||||||||<center>n</center>||<center>n</center>||13<br />
|-<br />
! Ctrl+L<br />
|load map||misc||||||||<center>n</center>||<center>n</center>||14<br />
|-<br />
! Ctrl+S<br />
|save map||misc||||||||<center>n</center>||<center>n</center>||15<br />
|-<br />
! Ctrl+P<br />
|playtest map from current position||misc||||||||<center>n</center>||<center>'''y'''</center>||16<br />
|-<br />
! Ctrl+Alt+P<br />
|playtest map from starting position||misc||||||||<center>n</center>||<center>'''y'''</center>||17<br />
|}<br />
<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="2" cellspacing="0"<br />
|+ '''Mapster 32 keys &mdash; 2D mode'''<br />
|- bgcolor="#f0f0f0"<br />
! key/keys!!description!!type!!sec<br>!!spr<br>!!wal<br>!!adv<br>!!new<br>!!N<br />
|-<br />
! A/Z<br />
|zoom in/out||disp||||||||<center>n</center>||<center>n</center>||0<br />
|-<br />
! L<br />
|toggle grid lock||edit||||||||<center>n</center>||<center>n</center>||1<br />
|-<br />
! G (+Shift)<br />
|cycle grid size (backwards), set auto grid||edit||||||||<center>n</center>||<center>'''e'''</center>||2<br />
|-<br />
! S<br />
|insert sprite <br>(prefix 1-0 on upper row: set picnum to 1-10, resp.)||edit||||||||<center>n</center>||<center>'''e'''</center>||3<br />
|-<br />
! O<br />
|ornament sprite onto wall||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||4<br />
|-<br />
! J<br />
|join sectors||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||5<br />
|-<br />
! P<br />
|set sector pal||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||6<br />
|-<br />
! Ctrl+H<br />
|toggle hitscan sensitivity||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||7<br />
|-<br />
! T (+Alt)<br />
|set lotag of sector (wall/sprite)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||8<br />
|-<br />
! H (+Alt)<br />
|set hitag of sector (wall/sprite)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||9<br />
|-<br />
! KP4/6/2/8<br />
|scale sprite (+'''KP5''': speed up)||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||10<br />
|-<br />
! SPACE<br />
|draw sector; end circle drawing||edit||||||||<center>n</center>||<center>n</center>||11<br />
|-<br />
! BACKSPACE<br />
|remove last wall when drawing sector||edit||||||||<center>n</center>||<center>n</center>||12<br />
|-<br />
! BACKSPACE<br />
|cycle 2D display mode (textured/non-textured)||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||13<br />
|-<br />
! INS<br />
|add vertex to wall||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||14<br />
|-<br />
! DEL+Ctrl<br />
|delete sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||15<br />
|-<br />
! C <br> KP+/KP-<br />
|start circle drawing from wall <br> increase/decrease amount of walls in circle||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||16<br />
|-<br />
! Alt+S<br />
|make sector from inner loop||edit||||||||<center>n</center>||<center>n</center>||17<br />
|-<br />
! RShift <br> &nbsp;&nbsp; +;/'<br />
|select group of walls and sprites <br> set difference/union||edit||||||||<center>n</center>||<center>n</center>||18<br />
|-<br />
! RAlt <br> &nbsp;&nbsp; +;/' <br> &nbsp;&nbsp;+RCtrl<br />
|select group of sectors <br> set difference/union <br> point sector selection||edit||||||||<center>n</center>||<center>n</center>||19<br />
|-<br />
! INS or C<br />
|duplicate selected sectors/sprites||edit||||||||<center>n</center>||<center>n</center>||20<br />
|-<br />
! SCROLLLOCK<br />
|set starting position||edit||||||||<center>n</center>||<center>n</center>||21<br />
|-<br />
! TAB<br />
|show sector data||info||||||||<center>n</center>||<center>n</center>||22<br />
|-<br />
! TAB+Ctrl <br> (or TAB+Shift)<br />
|show wall/sprite data||info||||||||<center>n</center>||<center>'''y'''</center>||23<br />
|-<br />
! LShift<br />
|show coords||info||||||||<center>n</center>||<center>'''y'''</center>||24<br />
|-<br />
! M (+Alt)<br />
|set extra of sector (wall/sprite)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||25<br />
|-<br />
! E<br />
|set sprite status list||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||26<br />
|-<br />
! Ctrl+T<br />
|toggle show tags||disp||||||||<center>'''y'''</center>||<center>n</center>||27<br />
|-<br />
! '3<br />
|cycle modes of showing object's name||disp||||||||<center>'''y'''</center>||<center>n</center>||28<br />
|-<br />
! '7<br />
|swap lotag and hitag of wall/sprite||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||29<br />
|-<br />
! 'J<br />
|jump to position (X,Y)||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||30<br />
|-<br />
! 'S<br />
|set sprite size||edit||||<center>'''x'''</center>||||<center>'''y'''</center>||<center>'''y'''</center>||31<br />
|-<br />
! 'L<br />
|set wall/sprite coordinates||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||32<br />
|-<br />
! 'F<br />
|Special functions menu<blockquote>''Replace invalid tiles''<br>''Delete all spr of tile #''<br>''Set map sky shade''<br>''Set map sky height''<br>''Global Z coord shift''<br>''Resize selection''<br>''Global shade divide''<br>''Global visibility divide''</blockquote>||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||33<br />
|-<br />
! X/Y (+Alt)<br />
|flip (mirror) selected sectors in x/y||edit||<center>'''x'''</center>||||||<center>'''y'''</center>||<center>'''y'''</center>||34<br />
|-<br />
! F2<br />
|show sound index (root CON file to fetch sound <br>definitions from can be specified at startup; <br>default is GAME.CON)||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||35<br />
|-<br />
! F4<br />
|toggle first wall highlighting||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||36<br />
|-<br />
! F5<br />
|show item count||info||||||||<center>'''y'''</center>||<center>n</center>||37<br />
|-<br />
! F6<br />
|show actor count (when pointed at sprite: SE help)||info||||||||<center>'''y'''</center>||<center>n</center>||38<br />
|-<br />
! F7<br />
|edit sector data||edit||<center>'''x'''</center>||||||<center>'''y'''</center>||<center>'''y'''</center>||39<br />
|-<br />
! F8<br />
|edit wall/sprite data||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||40<br />
|-<br />
! F9<br />
|show ST help||info||||||||<center>'''y'''</center>||<center>n</center>||41<br />
|-<br />
! Alt+F7<br />
|search sector by tag||info||||||||<center>'''y'''</center>||<center>n</center>||42<br />
|-<br />
! Alt+F8<br />
|search wall by tag/search sprite||info||||||||<center>'''y'''</center>||<center>'''e'''</center>||43<br />
|-<br />
! ]/[<br />
|search forward/backward||info||||||||<center>'''y'''</center>||<center>n</center>||44<br />
|-<br />
! LCtrl+RShift<br />
|select all walls of current sector <br>(point at a wall and holding '''LCtrl''', press '''RShift''')||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||45<br />
|-<br />
! LENTER<br />
|check pointers for current sector <br>('''+LCtrl+LShift''': check ALL pointers)||edit||||||||<center>'''y'''</center>||<center>n</center>||46<br />
|}<br />
<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="2" cellspacing="0"<br />
|+ '''Mapster 32 keys &mdash; 3D mode'''<br />
|- bgcolor="#f0f0f0"<br />
! key/keys!!description!!type!!sec<br>!!spr<br>!!wal<br>!!adv<br>!!new<br>!!N<br />
|-<br />
! A/Z <br> &nbsp;&nbsp;+Ctrl <br> &nbsp;&nbsp;+LShift<br />
|move up/down <br> look down/up <br> speed up movements||navi||||||||<center>n</center>||<center>n</center>||0<br />
|-<br />
! CAPSLOCK or 'Z<br />
|cycle zmode||navi||||||||<center>n</center>||<center>n</center>||1<br />
|-<br />
! KP+/KP-<br />
|change shade||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||2<br />
|-<br />
! KP+/KP-+Alt <br> &nbsp;&nbsp;+Alt+Shift <br> &nbsp;&nbsp;+Ctrl+Alt<br />
|change visibility <br> change visibility in smaller increments <br> change global visibility||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||3<br />
|-<br />
! ]/[ <br> &nbsp;&nbsp;+RShift <br> &nbsp;&nbsp;+LShift<br />
|slope down/up <br> smaller increments <br> smallest increments ||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||4<br />
|-<br />
! [+Alt<br />
|align slope to floor of adjoining sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||5<br />
|-<br />
! ]+Alt<br />
|align slope to ceiling of adjoining sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||6<br />
|-<br />
! PGUP/PGDN <br> &nbsp;&nbsp;+END <br> &nbsp;&nbsp;+HOME<br />
|move object up/down ('''+Ctrl''' on sectors: 4x) <br> 1/2 of normal increments <br> 1/4 of normal increments||edit||<center>'''x'''</center>||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||7<br />
|-<br />
! PGUP+Ctrl<br />
|put sprite on ceiling||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||8<br />
|-<br />
! PGDN+Ctrl<br />
|put sprite on ground||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||9<br />
|-<br />
! KP4/6/2/8 <br> &nbsp;&nbsp;+Shift or +Alt<br>&nbsp;&nbsp;+KP5<br />
|pan floor/ceiling or scale wall/sprite <br>force panning <br> speed up||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||10<br />
|-<br />
! V<br />
|choose tile||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||11<br />
|-<br />
! S<br />
|insert sprite||edit||||||||<center>n</center>||<center>n</center>||12<br />
|-<br />
! G<br />
|set picnum||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||13<br />
|-<br />
! E<br />
|toggle sector texture expansion||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||14<br />
|-<br />
! F<br />
|flip texture||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||15<br />
|-<br />
! R<br />
|toggle sector texture relativity||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||16<br />
|-<br />
! 'T<br />
|set lotag||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||17<br />
|-<br />
! 'H<br />
|set hitag||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||18<br />
|-<br />
! 'S<br />
|set shade||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||19<br />
|-<br />
! Alt+P<br />
|set pal||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||20<br />
|-<br />
! 1<br />
|toggle one sided sprite/wall||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||21<br />
|-<br />
! 2<br />
|toggle bottom wall swapping||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||22<br />
|-<br />
! M<br />
|toggle masking wall||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||23<br />
|-<br />
! O<br />
|toggle wall orientation||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||24<br />
|-<br />
! O<br />
|ornament sprite onto wall||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||25<br />
|-<br />
! C<br />
|toggle sprite centering||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||26<br />
|-<br />
! H<br />
|toggle hitscan sensitivity ('''+Shift''': one-sided)||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||27<br />
|-<br />
! T<br />
|cycle translucence||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||28<br />
|-<br />
! P<br />
|toggle parallax||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||29<br />
|-<br />
! 'V<br />
|set sector visibility||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||30<br />
|-<br />
! Ctrl+P (obsolete)<br />
|change parallax type (classic renderer only)||edit||||||||<center>n</center>||<center>n</center>||31<br />
|-<br />
! .<br />
|search &amp; fix panning of the wall to the right||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||32<br />
|-<br />
! 'L<br />
|set coordinates||edit||<center>'''x'''</center>||<center>'''x'''</center>||||<center>n</center>||<center>'''y'''</center>||33<br />
|-<br />
! 'M<br />
|set extra||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||34<br />
|-<br />
! +/-<br />
|cycle tile||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||35<br />
|-<br />
! TAB<br />
|copy to clipboard||edit||||||||<center>n</center>||<center>n</center>||36<br />
|-<br />
! LENTER<br />
|paste all (pic+shade+pal+flags+tags+extra)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||37<br />
|-<br />
! 'LENTER<br />
|paste picnum only||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||38<br />
|-<br />
! LENTER+Shift<br />
|paste shading+pal||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||39<br />
|-<br />
! LENTER+Ctrl<br />
|paste picnum+shading+pal||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||40<br />
|-<br />
! Alt+C<br />
|replace all "same" tiles with clipboard tile||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||41<br />
|-<br />
! Alt+D<br />
|adjust clipping distance of sprite||edit||||<center>'''x'''</center>||||<center>'''y'''</center>||<center>n</center>||42<br />
|-<br />
! ;V<br />
|set sector visibility on all selected sectors||edit||<center>'''x'''</center>||||||<center>'''y'''</center>||<center>'''y'''</center>||43<br />
|-<br />
! 3<br />
|toggle Sector over Sector <br>(see http://www.users.on.net/~triforce/cduke3d/)||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||44<br />
|-<br />
! 'BACKSPACE<br />
|clear all flags for wall/sprite||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||45<br />
|-<br />
! 'P<br />
|set palette of all sprites/walls/floors/ceilings <br>(respectively) in all selected sectors||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||46<br />
|-<br />
! ;P<br />
|set palette of all sprites/walls/floors/ceilings <br>in all selected sectors||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||47<br />
|-<br />
! Ctrl+Shift<br>+LENTER<br />
|autoshade wall||edit||||||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||48<br />
|-<br />
! F2<br />
|toggle clipboard preview||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||49<br />
|-<br />
! F2+Shift<br />
|toggle current tile display||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||50<br />
|-<br />
! F3<br />
|toggle mouselook||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||51<br />
|-<br />
! F4<br />
|toggle ambient sounds||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||52<br />
|-<br />
! F5<br />
|toggle mouse navigation||navi||||||||<center>'''y'''</center>||<center>'''y'''</center>||53<br />
|-<br />
! F6<br />
|toggle automatic SE help||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||54<br />
|-<br />
! F7<br />
|toggle automatic ST help||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||55<br />
|-<br />
! F9<br />
|reload and activate maphacks||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||56<br />
|-<br />
! F10<br />
|disable maphacks||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||57<br />
|-<br />
! F11<br />
|cycle brightness||misc||||||||<center>n</center>||<center>n</center>||58<br />
|-<br />
! 'D<br />
|cycle skill level||disp||||||||<center>'''y'''</center>||<center>n</center>||59<br />
|-<br />
! 'X<br />
|toggle sprite shade preview||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||60<br />
|-<br />
! 'W<br />
|toggle sprite display||disp||||||||<center>'''y'''</center>||<center>n</center>||61<br />
|-<br />
! 'Y<br />
|toggle purple background||disp||||||||<center>'''y'''</center>||<center>n</center>||62<br />
|-<br />
! 'C<br />
|copy shade from clipboard to all "same" objects||edit||||||||<center>'''y'''</center>||<center>n</center>||63<br />
|-<br />
! 'R<br />
|toggle framerate display||info||||||||<center>'''y'''</center>||<center>n</center>||64<br />
|-<br />
! Ctrl+T<br />
|when pointing on a letter sprite: text entry tool <br>(alphabets are configurable in tiles.cfg)||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||65<br />
|}</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Mapster32_Map_Checking&diff=11483Mapster32 Map Checking2013-01-11T16:15:52Z<p>Helixhorned: /* level 3 */ corruptcheck_noalreadyrefd</p>
<hr />
<div>Mapster32 supports validation of loaded map files via the '''corruptcheck''' OSD command. It is also able to repair certain cases of damaged maps.<br><br />
<br />
The severity of a map error is judged by a "level" number from 1 to 5, and can be interpreted like follows:<br />
# warning (very minor issue)<br />
# warning (minor issue)<br />
# worth looking into: may have consequences<br />
# '''serious/very serious corruption''': must not occur in a clean map<br />
# panic: something is very, very wrong!<br />
<br />
Levels 3 and 4 are the ones that occur most often. Currently, Mapster32 prints only the maximal corruption level when checking. For levels 4 and above, it is advisable to restart Mapster32 and reload the map after fixing the particular corruption, since the internal state of the editor itself may have become corrupt.<br><br />
<br />
After listing the corruptions, you can jump to each of them (provided they're not outside the editing grid) using the '''Alt'''+'''[''' and '''Alt'''+''']''' shortcuts.<br />
<br />
== "corruptcheck" options ==<br />
'''corruptcheck now''': prints out a list of all map corruptions, along with numbers used to refer to them and a short description<br><br />
'''corruptcheck tryfix''' ['''num''']: attempts to repair the corruption '''num''' if given, or all of them otherwise<br><br />
<br />
== all "corruptcheck" messages ==<br />
=== sectors ===<br />
==== level 4 ====<br />
* SECTOR[''num1''].WALLPTR=''num2'' out of range (numwalls=''num3'')<br />
* SECTOR[''num1''].WALLPTR=''num2'' inconsistent, expected ''num3''<br />
* SECTOR[''num1'']: wallptr+wallnum=''num2'' out of range: numwalls=''num3''<br />
resolution: manual (expert use)<br><br />
<br />
* SECTOR[''num1''].WALLNUM=2, expected at least 3<br />
resolution: highlight and delete the sector. (See [http://forums.duke4.net/topic/5728-polymer-renderer-crash-when-loading-user-map-dharga-map-fixed/page__view__findpost__p__136111 topic at Duke4.net forums] for an example)<br />
<br />
=== walls ===<br />
==== level 4 ====<br />
* WALL[''num1''].POINT2=''num2'' out of range [''num3'', ''num4'']<br />
* WALL[''num1''].NEXTWALL=''num2'' out of range: numwalls=''num3''<br />
* WALL[''num1''].NEXTSECTOR=''num2'' out of range: numsectors=''num3''<br />
* WALL[''num1''].NEXTWALL is its own sector's wall<br />
resolution: manual (expert use)<br><br />
<br />
'''TODO''': various messages about TROR<br><br />
<br />
* WALL[''num1''].NEXTSECTOR is its own sector<br />
resolution: '''corruptcheck tryfix''' will reset .nextwall and .nextsector or attempt to find matching ones<br />
<br />
* WALL[''num1''].NEXTSECTOR=''num2'' and .NEXTWALL=''num3'' inconsistent: missing one next pointer<br />
* WALL[''num1''].NEXTWALL=''num2'' out of .NEXTSECTOR=''num3'''s bounds [''num4'' .. ''num5'']<br />
possible problems: crashes, "undefined behavior"<br><br />
resolution: '''corruptcheck tryfix''' will attempt to find a matching .nextwall/.nextsector<br />
<br />
==== level 3 ====<br />
* WALL[''num1''] has length 0<br />
possible problems: divides by zero in engine/game code<br><br />
resolution: one point should be dragged away<br><br />
<br />
* WALL[''num1''].NEXTWALL=''num2'' already referenced from wall ''num3''<br />
issue: generally, red walls are supposed to have a 1-to-1 relationship, though there are certain uses for 1-to-N connections. Entering '''corruptcheck_noalreadyrefd''' will toggle the ignore state of this "corruption".<br />
<br />
=== sprites ===<br />
==== level 4 ====<br />
* SPRITE[''num1''].SECTNUM=''num2''. Expect problems!<br />
* SPRITE[''num1''].STATNUM=''num2'' Expect problems!<br />
These happen when the statnum or sectnum of a sprite is out of bounds.<br><br />
resolution: delete or reinsert the sprites, or manually set the stat- or sectnums.<br />
<br />
* SPRITE ''num1'' at [''num2'', ''num3''] is out of the maximal grid range [''num4'', ''num5'']<br />
possible problems: integer overflows in engine or game code<br><br />
resolution: '''corruptcheck tryfix''' will place the sprite at its sector's first point.</div>Helixhornedhttps://wiki.eduke32.com/w/index.php?title=Build/Mapster32_Keyboard_Commands&diff=11462Build/Mapster32 Keyboard Commands2013-01-08T18:19:06Z<p>Helixhorned: /* 3D Mode: Keys */ Shift reverses direction when flipping stuff in 3D mode [F].</p>
<hr />
<div>== 3D Mode: Mouse ==<br />
The purpose of mouse in 3D mode is pointing at some objects in a map and looking around ('''F3''' toggles mouse look).<br><br />
<br />
Mouse pointer always points (see info about it at the bottom of the screen) at one of these objects:<br><br />
# wall<br />
# ceiling of sector<br />
# floor of sector<br />
# sprite<br />
# masked wall (non-transparent or semi-transparent wall between sectors)<br />
<br />
It's important to understand this concept:<br><br />
Some commands work differently depending on the current object (the object the mouse points at).<br><br />
Some commands manipulate only the current object, some commands manipulate the selected (also called "highlighted") sprites/sectors in 2D mode, and some commands work globally.<br><br />
<br />
====Mouse buttons====<br />
'''LEFT''' lock the current object. The current object won't be changing as long as the button is pressed.<br><br />
'''WHEEL''' change shade ('''+CTRL''': in increments of 4)<br><br />
'''WHEEL+ALT''' change visibility<br><br />
'''LEFT+WHEEL''' change tile<br><br />
'''RIGHT+WHEEL''' move object up/down<br><br />
'''MIDDLE''' temporary mouse look (when not in UnrealEd-style mouse mode)<br><br />
<br />
Additionally, there is UnrealEd-style mouse navigation in 3D mode (toggle it with '''F5'''), with the following bindings:<br><br />
'''RIGHT''' mouse look<br><br />
'''LEFT''' x: turning, y: move forward/back<br><br />
'''LEFT+RIGHT''' x: strafe left/right, y: move up/down<br><br />
'''MIDDLE''' y: move in viewing direction<br><br />
The console variable ''pk_uedaccel'' changes the speed of navigation exponentially (valid values are 0-5).<br><br />
<br />
It is possible to move around objects using the mouse and holding down specific modifier keys:<br><br />
'''LEFT+ALT''' move object up/down ('''+CTRL''': in larger increments)<br><br />
'''LEFT+SHIFT''' move sprite in horizontal plane ('''+CTRL''': grid-aligned)<br><br />
The two preceding controls also work on a set of sprites highlighted in 2D mode.<br><br />
'''LEFT+SHIFT''' pan ceiling/floor/wall texture<br><br />
'''LEFT+CTRL''' scale wall texture or size of sprite<br><br />
'''LEFT+CTRL''' change slope of floor/ceiling<br><br />
<br />
== 3D Mode: Selecting Tile Mode ==<br />
After pressing the '''V''' key in 3D mode, Mapster32 switches to "select tile" mode.<br><br />
<br />
====Keys====<br />
'''UP/DOWN/LEFT/RIGHT/PGUP/PGDN/HOME/END''' movements ('''CTRL''' modifies some commands)<br><br />
'''KP /''' zoom in<br><br />
'''KP *''' zoom out<br><br />
'''Z''' toggle tile zoom<br><br />
<br />
'''G''' goto specified tile<br><br />
'''U''' goto start of user defined art (3584)<br><br />
'''A''' goto start of Atomic edition's art (4096)<br><br />
'''E''' goto start of extended art (6144,9216)<br><br />
<br />
'''S''' Search for a named tile. When ^ is entered as the first character, anchor string at the beginning.<br />
<br />
'''V''' select from all tiles<br><br />
'''T''' select from pre-defined tile group which can be edited in tiles.cfg or added from within the tile selector. For this, press '''SPACE''' on the tiles to be grouped ('''CTRL-SPACE''' to select a range from starting from the last selection with '''SPACE'''). When you're ready, press '''Ctrl-G''' and you'll be queried for a group hotkey and name. The new tile group should now be saved persistently in tiles.cfg.<br><br />
<br />
'''ESC''' cancel<br><br />
'''ENTER''' accept<br><br />
<br />
====Mouse====<br />
'''LEFT''' select<br><br />
'''CTRL+WHEEL''' zoom<br><br />
'''WHEEL''' scroll<br><br />
'''RIGHT''' smooth scrolling<br><br />
<br />
== 3D Mode: Keys ==<br />
'''UP''' move forward<br><br />
'''DOWN''' move backward<br><br />
'''LEFT+RCTRL''' move left<br><br />
'''RIGHT+RCTRL''' move right<br><br />
'''A''' move up<br><br />
'''Z''' move down<br><br />
'''+LSHIFT''' speed up movements<br><br />
<br />
'''LEFT''' turn left<br><br />
'''RIGHT''' turn right<br><br />
'''A+CTRL''' look down<br><br />
'''Z+CTRL''' look up<br><br />
<br />
'''F1''' toggle help<br><br />
'''F3''' toggle mouselook<br><br />
'''F4''' toggle ambience sounds<br><br />
'''F5''' toggle UnrealEd-style mouse navigation<br><br />
'''F6''' toggle automatic SECTOREFFECTOR help<br><br />
'''F7''' toggle automatic sector tag help<br><br />
'''F9''' load and activate/deactivate maphacks<br><br />
'''F11''' brightness<br><br />
'''F12''' screenshot<br><br />
'''F12+SHIFT''' inverted screenshot<br><br />
<br />
'''' V''' set sector visibility<br><br />
'''; V''' set sector visibility on all selected sectors<br><br />
'''V''' choose tile<br><br />
'''3''' toggle Sector over Sector. See documentation here: http://www.users.on.net/~triforce/cduke3d/<br><br />
'''' BACKSPACE''' clear all flags for wall/sprite<br><br />
'''BACKSPACE''' clear nextwall ("red wall") link for aimed at wall<br><br />
'''' P''' paste palette to all selected sectors<br><br />
'''; P''' paste palette to all selected sectors & sprites<br><br />
<br />
'''S''' insert sprite<br><br />
'''DEL''' delete sprite<br><br />
''',''' rotate sprite<br><br />
'''.''' rotate sprite<br><br />
'''<''' slowly rotate sprite<br><br />
'''>''' slowly rotate sprite<br><br />
<br />
'''.''' (period): search & fix panning of the wall to the right (''',''' (comma): to the left), has 4 modifiers:<br><br />
'''+CTRL''': recurse nextwalls<br><br />
'''+SHIFT''': don't iterate point2's, i.e. affect only the immediate neighbor<br><br />
'''+ALT''': copy over pixel width<br><br />
'''+'''' (quote): align immediate upper and lower TROR neighbors<br><br />
<br />
'''SPACE''' lock to object (same as left mouse button)<br><br />
'''PGUP/PGDN+ALT''' when aiming at red wall, select the floor or ceiling of the nextsector (useful for e.g. raising a lowered door when standing near it), depending on whether the aim is at the top or bottom of the wall<br><br />
<br />
'''CAPS LOCK''' cycle zmode<br><br />
'''' Z''' cycle zmode<br><br />
'''' L''' change the coordinates of the current object<br><br />
'''' M''' set the extra of the current object<br><br />
'''1''' toggle one sided sprite/wall<br><br />
'''2''' toggle bottom wall swapping<br><br />
'''O''' set top or bottom orientation of wall<br><br />
'''O''' ornament sprite onto wall<br><br />
'''M''' toggle masking wall<br><br />
'''H''' toggle hitscan sensitivity<br><br />
'''H+SHIFT''' toggle one side hitscan sensitivity for the wall<br><br />
'''' H''' set hitag of the current object<br><br />
<br />
'''KP_MINUS''' shades down individual sector/wall/sprite or selected sectors<br><br />
'''KP_MINUS+ALT''' decreases visibility of sector or selected sectors<br><br />
'''KP_MINUS+ALT+SHIFT''' slowly decreases visibility of sector or selected sectors<br><br />
'''KP_MINUS+ALT+CTRL''' decreases global visibility<br><br />
'''KP_PLUS''' shades up individual sector/wall/sprite or selected sectors<br><br />
'''KP_PLUS+ALT''' increases visibility of sector or selected sectors<br><br />
'''KP_PLUS+ALT+SHIFT''' slowly increases visibility of sector or selected sectors<br><br />
'''KP_PLUS+ALT+CTRL''' increases global visibility<br><br />
Note: '''ALT, CTRL, SHIFT''' are modifiers so they work with mouse too.<br><br />
<br />
'''PLUS/MINUS''' cycle tile<br><br />
'''E''' toggle sector texture expansion<br><br />
'''R''' toggle sector texture relativity alignment<br><br />
'''R''' cycle sprite aligment between: wall aligned, floor aligned, view aligned<br><br />
'''' R''' toggle framerate<br><br />
'''F''' flip the current object ('''+SHIFT''': reverse direction)<br><br />
'''F+ALT''' set the first wall of sector<br><br />
<br />
'''PAGE UP''' move up selected sprites or sectors<br><br />
'''PAGE DN''' move down selected sprites or sectors<br><br />
'''PAGE UP+CTRL''' put selected sprites on ceiling<br><br />
'''PAGE DN+CTRL''' put selected sprites on ground<br><br />
'''+CTRL''' speed up movement<br><br />
'''+END''' slow down movement<br><br />
'''+HOME''' slow down movement even more<br><br />
Note: '''CTRL, HOME, END''' are modifiers so they work with mouse too.<br><br />
<br />
'''N''' toggle 'no-autoshade'-bit of sprite<br><br />
'''' I''' toggle sprite invisibility<br><br />
'''' D''' cycle skill level<br><br />
'''' X''' toggle sprite shade and SE light effect preview<br><br />
'''' W''' toggle sprite display by class (no effectors/actors)<br><br />
'''' Y''' toggle purple background<br><br />
'''' C''' copy shade from the clipboard to all objects in the map which are the same tile as the tile of the object that in the clipboard. It works separately for sectors/walls/sprites depending on the current object. (I hope somebody who understands this, will clarify this)<br><br />
'''' T''' set lotag<br><br />
'''' H''' set hitag<br><br />
'''' S''' set shade<br><br />
'''G''' set picnum<br><br />
'''B''' toggle blocking<br><br />
'''B+SHIFT''' toggle one side blocking for the wall<br><br />
'''T''' cycles translucence for sprites/masked walls (and ceilings/floors for ROR)<br><br />
<br />
'''F2''' toggle clipboard preview<br><br />
'''F2+SHIFT''' toggle current sprite preview<br><br />
'''TAB''' copy to the clipboard<br><br />
'''LENTER+CTRL+SHIFT''' autoshade wall<br><br />
'''' LENTER''' paste picnum only<br><br />
'''; LENTER''' on ceilings/floors, auto-align with reference in '''TAB'''bed clipboard (incomplete for relative-aligned references)<br><br />
'''LENTER+SHIFT''' paste some visual (shading+pal) properties of the clipboard on sector/wall/sprite<br><br />
'''LENTER+CTRL''' paste some visual (picnum+shading+pal) properties of the clipboard on sector/wall/sprite<br><br />
'''LENTER''' paste all (picnum+shading+pal+flags+tags+extra) properties of the clipboard on sector/wall/sprite<br><br />
Note: some fields are only pasted if the type of 'thing' in the clipboard (wall/sprite/sector) equals that of the aimed at object<br><br />
<br />
'''C''' toggle center sprite<br><br />
'''ALT+C''' replace all tiles in the map with one from the clipboard<br><br />
<br />
'''' A''' toggle autosave. The interval is configurable (default: every 3 minutes)<br><br />
<br />
'''' N''' toggle noclip for the camera<br><br />
'''N+CTRL''' toggle noclip for sprites<br><br />
<br />
'''[''' slopes up fast<br><br />
'''[+RSHIFT''' slope up with medium speed<br><br />
'''[+LSHIFT''' slope up slowly<br><br />
'''[+ALT''' align slope to the floor of adjoining sector<br><br />
''']''' slope down fast<br><br />
''']+RSHIFT''' slope down with medium speed<br><br />
''']+LSHIFT''' slope down slowly<br><br />
''']+ALT''' align slope to the ceiling of adjoining sector<br><br />
<br />
'''KP_4''' panning floor/ceiling horizontally<br><br />
'''KP_6''' panning floor/ceiling horizontally<br><br />
'''KP_2''' panning floor/ceiling vertically<br><br />
'''KP_8''' panning floor/ceiling vertically<br><br />
'''KP_4''' scaling wall/sprite horizontally<br><br />
'''KP_6''' scaling wall/sprite horizontally<br><br />
'''KP_2''' scaling wall/sprite vertically<br><br />
'''KP_8''' scaling wall/sprite vertically<br><br />
'''+SHIFT''' or '''+ALT''' force panning (for walls); the latter is an alternative if Shift-KP5-KP*-combinations are dead.<br><br />
'''+KP_5''' speed up<br><br />
<br />
'''/''' Reset panning, repeat and flags to defaults<br><br />
'''/+SHIFT''' set xrepeat to yrepeat (makes square)<br><br />
<br />
'''P''' enable/disable parallax<br><br />
'''P+CTRL''' change parallax type (works only in classic render, not saved into maps)<br><br />
'''P+CTRL''' Playtest map from current position<br><br />
'''P+ALT+CTRL''' Playtest map from start position<br><br />
'''P+ALT''' change pal of sector/wall/sprite<br><br />
'''D+ALT''' adjust clip distance of the sprite<br><br />
'''RENTER''' switch to 2D mode<br><br />
<br />
'''S+CTRL''' save map<br><br />
'''L+CTRL''' load last saved map<br><br />
<br />
'''ESC''' quit<br><br />
<br />
== 2D Mode: Mouse ==<br />
The purpose of mouse in 2D mode is pointing, selecting, moving object in a map.<br />
<br />
Every time mouse is pointing at one of these:<br><br />
# Nothing<br />
# Sector<br />
# Sector and wall<br />
# Sector and sprite<br />
# Wall (wall without sector - map is corrupt)<br />
# Sprite (sprite without sector - map is corrupt)<br />
<br />
Some commands work differently depending on the current object (the object the mouse points at).<br> To solve the ambiguity between sectors and walls/sprites, one usually must press ALT to work with walls/sprites instead of sectors.<br><br />
<br />
===='''RSHIFT''' (select vertices/sprites) modifiers====<br />
* ''';''': set difference<br><br />
* ''' ' ''' (quote character): set union<br><br />
(note that they have to be depressed when '''RSHIFT''' is ''released'')<br><br />
* '''RCTRL''' select only sprites (not walls)<br />
* '''END''' select from all sectors, even grayed out ones<br />
<br><br />
===='''RALT''' (select sectors) modifiers====<br />
* ''';''': set difference<br><br />
* ''' ' ''' (quote character): set union<br><br />
(note that they have to be depressed when '''RALT''' is ''released'')<br><br />
* when '''RCTRL''' is pressed at '''RALT''' release time, then for a sector to be selected, it must be "inside" the mouse pointer instead of being surrounded by the rectangle<br><br />
* when holding '''RSHIFT''', will select all sectors, even grayed out ones<br><br />
See the [[#TROR related keys|TROR section]] for '''HOME''' and '''END''' modifiers.<br />
<br><br />
<br><br />
'''WHEEL''' zoom<br><br />
'''WHEEL+ALT''' move camera and zoom<br><br />
'''LEFT BUTTON''' drag sectors/vertices/sprites<br><br />
'''RIGHT BUTTON''' move camera<br><br />
'''RIGHT MIDDLE''' move camera<br><br />
<br />
== 2D Mode: Keys ==<br />
'''F1''' show help<br><br />
'''F2''' show sound index<br><br />
'''F3''' enter/quit side-view mode<br><br />
'''in side-view mode:'''<br><br />
* '''Q''', '''W''': orbit around center<br />
* '''A''', '''Z''': change azimuth<br />
* '''MMB''': change "player" z<br />
* '''RMB''': change "player" x/y<br />
'''F4''' toggle first wall preview<br><br />
'''F5''' show item count<br><br />
'''F6''' show actor count when pointed at wall<br><br />
'''F6''' show Sector Effector help when pointed at sprite<br><br />
'''F7''' edit sector data<br><br />
'''F8''' edit wall/sprite data<br><br />
'''F9''' show the Sector Tags help<br><br />
'''F12''' screenshot<br><br />
'''F12+SHIFT''' inverted screenshot<br><br />
<br />
'''SCROLL LOCK''' set starting position<br><br />
<br />
'''LSHIFT''' show coordinates/linking sprites<br><br />
'''LSHIFT+[''', '''LSHIFT+]''' cycle linking sprites<br><br />
<br><br />
'''LSHIFT'''+'''LMB''' (with RSHIFT-highlighted points) interactively scale highlighted points (+'''CTRL''' forces square aspect)<br><br />
'''LSHIFT'''+'''RMB''' (with RSHIFT-highlighted points) interactively rotate highlighted points<br><br />
If '''LSHIFT''' is released before the mouse button, the interactive scaling/rotation is canceled.<br><br />
<br><br />
'''M''' set extra of sector<br><br />
'''M+ALT''' set extra of wall/sprite<br><br />
'''/''' Reset panning, repeat and flags to defaults<br><br />
'''/+SHIFT''' set xrepeat to yrepeat (makes square)<br><br />
<br />
'''KP_4''' scaling sprite horizontally<br><br />
'''KP_6''' scaling sprite horizontally<br><br />
'''KP_2''' scaling sprite vertically<br><br />
'''KP_8''' scaling sprite vertically<br><br />
'''+KP_5''' speed up<br><br />
<br><br />
'''R''' cycle sprite alignment<br><br />
'''' S''' set sprite size<br><br />
'''' F''' function menu<br><br />
'''F7+ALT''' search sector lotag<br><br />
'''F8+ALT''' on wall: search wall lotag<br><br />
'''F8+ALT''' on sprite: generic sprite search<br><br />
'''[''' search backward<br><br />
''']''' search forward<br><br />
'''G''' cycle grid size<br><br />
'''G+SHIFT''' cycle grid size backward<br><br />
'''' L''' set sprite/wall coordinates<br><br />
'''' 3''' cycle modes of showing object's name<br><br />
'''' 7''' swap lotag and hitag of wall/sprite<br><br />
'''' J''' jump to position of object (asks for sector/wall/sprite, or x,y)<br><br />
<br />
'''[+ALT''' goto previous corruption<br><br />
''']+ALT''' goto next corruption<br><br />
<br />
'''X''' flip selected sectors in x<br><br />
'''Y''' flip selected sectors in y<br><br />
'''X+ALT''' mirror selected sectors in x<br><br />
'''Y+ALT''' mirror selected sectors in y<br><br />
<br />
'''B''' toggle blocking<br><br />
'''B+SHIFT''' toggle one side blocking for wall<br><br />
'''F+ALT''' set the first wall of sector<br><br />
'''O''' ornament sprite onto wall<br><br />
<br />
''',''' rotate sprite/selected sectors<br><br />
'''.''' rotate sprite/selected sectors<br><br />
'''<''' [i.e. ''',+SHIFT'''] slowly rotate sprite/selected sectors<br><br />
'''>''' [i.e. '''.+SHIFT'''] slowly rotate sprite/selected sectors<br><br />
''',+ALT''', '''.+ALT''' rotate highlighted sectors by a manually entered angle<br><br />
<br><br />
'''T''' set sector lotag<br><br />
'''T+ALT''' set wall/sprite lotag<br><br />
'''T+CTRL''' toggle show tags<br><br />
<br />
'''H''' set sector hitag<br><br />
'''H+ALT''' set wall/sprite hitag<br><br />
'''H+CTRL''' toggle hitscan sensitivity<br><br />
'''H+CTRL+SHIFT''' toggle hitscan sensitivity<br><br />
<br />
'''P''' set sector pal<br><br />
'''E''' set sprite status list<br><br />
'''TAB''' show sector data<br><br />
'''TAB+SHIFT''' show wall/sprite data<br><br />
'''TAB+CTRL''' enable/disable filling of aimed-at sector<br><br />
<br />
'''LCTRL+RSHIFT''' select all walls of the current sector (point at a wall and holding '''LCTRL''', press and release '''RSHIFT'''). Set ops (see RSHIFT above) work too.<br><br />
'''A''' zoom in<br><br />
'''Z''' zoom out<br><br />
'''L''' toggle grid lock<br><br />
'''J''' join sectors<br><br />
'''S''' insert sprite, pressing a key from '''1''' to '''0''' on the upper row before pressing '''S''' will make the inserted sprite's picnum be 1 to 10, respectively<br><br />
'''S+ALT''' make inner sector<br><br />
'''C''' duplicate sectors/sprites<br><br />
'''C''' start circle attached to a wall<br><br />
'''KP +''' increase amount of walls in circle<br><br />
'''KP -''' decrease amount of walls in circle<br><br />
<br><br />
'''SPACE''' start/end drawing of sector, end drawing of circle<br><br />
'''LENTER''' when having some walls drawn, insert points at intersections with existing walls; clear drawn walls then<br><br />
'''LENTER''' check nextwall pointer for the highlighted line<br><br />
'''LENTER''' when having drawn some walls, batch-insert points where the drawn lines intersect with non-grayed-out walls<br><br />
'''LSHIFT+LCTRL+LENTER''' check ALL pointers (manual attempt to recover map)<br><br />
'''BACKSPACE''' remove the last wall during drawing sector<br><br />
'''DEL''' delete sprite<br><br />
'''DEL+CTRL''' delete sector<br><br />
'''DEL+CTRL+LShift''' delete highlighted sectors<br><br />
'''INS''' duplicate sectors/sprites<br><br />
'''INS''' start circle attached to a wall<br><br />
'''INS''' add vertex to wall<br><br />
'''RENTER''' switch to 3D mode<br><br />
'''ESC''' menu<br><br />
<br><br />
'''' A''' toggle autosave(every 3 minutes)<br><br />
'''' N''' toggle noclip<br><br />
'''S+CTRL''' save map<br><br />
'''L+CTRL''' load map<br><br />
<br />
'''P+CTRL''' Playtest map from current position<br><br />
'''P+CTRL+ALT''' Playtest map from start position<br><br />
<br />
'''R+CTRL''' manual grayout: if some sectors are highlighted, make the editable z range [min ceiling z, max floor z] of those; else reset z limits<br />
<br />
==TROR related keys==<br />
===2D mode===<br />
'''E+CTRL''' sector extension prompt (sectors to extend must be highlighted)<br><br />
'''E+CTRL''' make sandwich [''needs better explanation'']<br><br />
'''E+CTRL''' punch loop through extension (loop points must be highlighted, e.g. with '''RSHIFT'''+'''LCTRL''')<br><br />
<br><br />
'''A+CTRL''' toggle auto-grayout of non-extended sectors<br><br />
'''J+CTRL''' TROR-join sectors. The selection must consist of the two sets of sectors you wish to join.<br><br />
'''U+CTRL''' Clear extension: delete the bunch (i.e. ceiling-floor connection) of the aimed-at sector's floor<br><br />
'''PGUP'''/'''PGDN''' Change 'player' height in discrete steps in order to go through the different levels<br><br />
'''TAB+CTRL''' Display one currently aimed at sector (of potentially many that lie under the mouse crosshair)<br><br />
'''HOME''' and '''END''' (as modifiers to '''RALT'''): select all sectors whose floor's/ceiling's bunchnum equal the bunchnum of the aimed at sector (useful for further operations on whole bunches)<br />
<br />
===3D mode===<br />
'''I''' invisibility preview: toggle fake ROR texture on non-masked portals<br><br />
'''LENTER+CTRL''' When aiming at an extended floor/ceiling, paste to all floors/ceilings of the bunch of the aimed at one<br><br />
'''T''', '''B''' and '''H''' work as with walls, though they set/toggle the bits only on '''one''' side<br><br />
<br />
==Mapster32 keys as tables (unmaintained and obsolete)==<br />
<br />
Below are the Mapster32 keys as three sortable tables. They are sorted such that the more 'basic' keys are at the top.<br><br />
<br><br />
The column headers have the following meaning:<br><br />
<br />
'''key/keys''': self-explanatory. Where a key starts with a '+' on a line of its own,<br>&nbsp;&nbsp;&nbsp;&nbsp;it means that it should be pressed simultaneously with the first one in the<br />
same table row.<br><br />
'''type''': type of command: info=informational, edit=editing, navi=navigation,<br />
disp=display, misc=miscellany<br><br />
'''sec''', '''spr''','''wal''': in case of an editing command, whether it<br />
potentially acts on '''sec'''tors, '''spr'''ites, and/or '''wal'''ls.<br><br />
'''adv''': whether the command is 'advanced'. This is set somewhat arbitrarily.<br><br />
'''new''': whether the functionality of the command is new to Mapster32. An '''e''' means that it's enhanced from BUILD.<br><br />
'''N''': a running number. To restore the original order, sort by it.<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="2" cellspacing="0"<br />
|+ '''Mapster 32 keys &mdash; shared keys for 2D and 3D mode'''<br />
|- bgcolor="#f0f0f0"<br />
! key/keys!!description!!type!!sec<br>!!spr<br>!!wal<br>!!adv<br>!!new<br>!!N<br />
|-<br />
! F1<br />
|help||info||||||||<center>n</center>||<center>'''y'''</center>||0<br />
|-<br />
! UP/DOWN <br> LEFT/RIGHT <br> &nbsp;&nbsp;+LShift<br />
|move forward/back <br> turn left/right ('''+RCtrl''': strafe) <br> speed up movements||navi||||||||<center>n</center>||<center>n</center>||1<br />
|-<br />
! RENTER<br />
|toggle between 2D and 3D modes||misc||||||||<center>n</center>||<center>n</center>||2<br />
|-<br />
! B <br />
|toggle blocking of wall/sprite ('''+Shift''': one-sided)||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||3<br />
|-<br />
! R<br />
|cycle sprite aligment||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||4<br />
|-<br />
! ,/.<br />
|rotate sprite ('''+Shift''': slowly)||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||5<br />
|-<br />
! DEL<br />
|delete sprite||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||6<br />
|-<br />
! /<br />
|reset panning, repeat and flags||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||7<br />
|-<br />
! Alt+F<br />
|set first wall of sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||8<br />
|-<br />
! /+Shift<br />
|set xrepeat to yrepeat (make square)||edit||||<center>'''x'''</center>||||<center>'''y'''</center>||<center>'''y'''</center>||9<br />
|-<br />
! \'N <br />
|toggle camera clipping||navi||||||||<center>'''y'''</center>||<center>'''y'''</center>||10<br />
|-<br />
! Ctrl+N<br />
|toggle sprite clipping through floors/ceilings||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||11<br />
|-<br />
! \'A <br />
|toggle autosave (interval configurable in mapster32.cfg)||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||12<br />
|-<br />
! (Shift+)F12<br />
|capture (inverted) screenshot||misc||||||||<center>n</center>||<center>n</center>||13<br />
|-<br />
! Ctrl+L<br />
|load map||misc||||||||<center>n</center>||<center>n</center>||14<br />
|-<br />
! Ctrl+S<br />
|save map||misc||||||||<center>n</center>||<center>n</center>||15<br />
|-<br />
! Ctrl+P<br />
|playtest map from current position||misc||||||||<center>n</center>||<center>'''y'''</center>||16<br />
|-<br />
! Ctrl+Alt+P<br />
|playtest map from starting position||misc||||||||<center>n</center>||<center>'''y'''</center>||17<br />
|}<br />
<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="2" cellspacing="0"<br />
|+ '''Mapster 32 keys &mdash; 2D mode'''<br />
|- bgcolor="#f0f0f0"<br />
! key/keys!!description!!type!!sec<br>!!spr<br>!!wal<br>!!adv<br>!!new<br>!!N<br />
|-<br />
! A/Z<br />
|zoom in/out||disp||||||||<center>n</center>||<center>n</center>||0<br />
|-<br />
! L<br />
|toggle grid lock||edit||||||||<center>n</center>||<center>n</center>||1<br />
|-<br />
! G (+Shift)<br />
|cycle grid size (backwards), set auto grid||edit||||||||<center>n</center>||<center>'''e'''</center>||2<br />
|-<br />
! S<br />
|insert sprite <br>(prefix 1-0 on upper row: set picnum to 1-10, resp.)||edit||||||||<center>n</center>||<center>'''e'''</center>||3<br />
|-<br />
! O<br />
|ornament sprite onto wall||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||4<br />
|-<br />
! J<br />
|join sectors||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||5<br />
|-<br />
! P<br />
|set sector pal||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||6<br />
|-<br />
! Ctrl+H<br />
|toggle hitscan sensitivity||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||7<br />
|-<br />
! T (+Alt)<br />
|set lotag of sector (wall/sprite)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||8<br />
|-<br />
! H (+Alt)<br />
|set hitag of sector (wall/sprite)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||9<br />
|-<br />
! KP4/6/2/8<br />
|scale sprite (+'''KP5''': speed up)||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||10<br />
|-<br />
! SPACE<br />
|draw sector; end circle drawing||edit||||||||<center>n</center>||<center>n</center>||11<br />
|-<br />
! BACKSPACE<br />
|remove last wall when drawing sector||edit||||||||<center>n</center>||<center>n</center>||12<br />
|-<br />
! BACKSPACE<br />
|cycle 2D display mode (textured/non-textured)||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||13<br />
|-<br />
! INS<br />
|add vertex to wall||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||14<br />
|-<br />
! DEL+Ctrl<br />
|delete sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||15<br />
|-<br />
! C <br> KP+/KP-<br />
|start circle drawing from wall <br> increase/decrease amount of walls in circle||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||16<br />
|-<br />
! Alt+S<br />
|make sector from inner loop||edit||||||||<center>n</center>||<center>n</center>||17<br />
|-<br />
! RShift <br> &nbsp;&nbsp; +;/'<br />
|select group of walls and sprites <br> set difference/union||edit||||||||<center>n</center>||<center>n</center>||18<br />
|-<br />
! RAlt <br> &nbsp;&nbsp; +;/' <br> &nbsp;&nbsp;+RCtrl<br />
|select group of sectors <br> set difference/union <br> point sector selection||edit||||||||<center>n</center>||<center>n</center>||19<br />
|-<br />
! INS or C<br />
|duplicate selected sectors/sprites||edit||||||||<center>n</center>||<center>n</center>||20<br />
|-<br />
! SCROLLLOCK<br />
|set starting position||edit||||||||<center>n</center>||<center>n</center>||21<br />
|-<br />
! TAB<br />
|show sector data||info||||||||<center>n</center>||<center>n</center>||22<br />
|-<br />
! TAB+Ctrl <br> (or TAB+Shift)<br />
|show wall/sprite data||info||||||||<center>n</center>||<center>'''y'''</center>||23<br />
|-<br />
! LShift<br />
|show coords||info||||||||<center>n</center>||<center>'''y'''</center>||24<br />
|-<br />
! M (+Alt)<br />
|set extra of sector (wall/sprite)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||25<br />
|-<br />
! E<br />
|set sprite status list||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||26<br />
|-<br />
! Ctrl+T<br />
|toggle show tags||disp||||||||<center>'''y'''</center>||<center>n</center>||27<br />
|-<br />
! '3<br />
|cycle modes of showing object's name||disp||||||||<center>'''y'''</center>||<center>n</center>||28<br />
|-<br />
! '7<br />
|swap lotag and hitag of wall/sprite||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||29<br />
|-<br />
! 'J<br />
|jump to position (X,Y)||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||30<br />
|-<br />
! 'S<br />
|set sprite size||edit||||<center>'''x'''</center>||||<center>'''y'''</center>||<center>'''y'''</center>||31<br />
|-<br />
! 'L<br />
|set wall/sprite coordinates||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||32<br />
|-<br />
! 'F<br />
|Special functions menu<blockquote>''Replace invalid tiles''<br>''Delete all spr of tile #''<br>''Set map sky shade''<br>''Set map sky height''<br>''Global Z coord shift''<br>''Resize selection''<br>''Global shade divide''<br>''Global visibility divide''</blockquote>||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||33<br />
|-<br />
! X/Y (+Alt)<br />
|flip (mirror) selected sectors in x/y||edit||<center>'''x'''</center>||||||<center>'''y'''</center>||<center>'''y'''</center>||34<br />
|-<br />
! F2<br />
|show sound index (root CON file to fetch sound <br>definitions from can be specified at startup; <br>default is GAME.CON)||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||35<br />
|-<br />
! F4<br />
|toggle first wall highlighting||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||36<br />
|-<br />
! F5<br />
|show item count||info||||||||<center>'''y'''</center>||<center>n</center>||37<br />
|-<br />
! F6<br />
|show actor count (when pointed at sprite: SE help)||info||||||||<center>'''y'''</center>||<center>n</center>||38<br />
|-<br />
! F7<br />
|edit sector data||edit||<center>'''x'''</center>||||||<center>'''y'''</center>||<center>'''y'''</center>||39<br />
|-<br />
! F8<br />
|edit wall/sprite data||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||40<br />
|-<br />
! F9<br />
|show ST help||info||||||||<center>'''y'''</center>||<center>n</center>||41<br />
|-<br />
! Alt+F7<br />
|search sector by tag||info||||||||<center>'''y'''</center>||<center>n</center>||42<br />
|-<br />
! Alt+F8<br />
|search wall by tag/search sprite||info||||||||<center>'''y'''</center>||<center>'''e'''</center>||43<br />
|-<br />
! ]/[<br />
|search forward/backward||info||||||||<center>'''y'''</center>||<center>n</center>||44<br />
|-<br />
! LCtrl+RShift<br />
|select all walls of current sector <br>(point at a wall and holding '''LCtrl''', press '''RShift''')||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||45<br />
|-<br />
! LENTER<br />
|check pointers for current sector <br>('''+LCtrl+LShift''': check ALL pointers)||edit||||||||<center>'''y'''</center>||<center>n</center>||46<br />
|}<br />
<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="2" cellspacing="0"<br />
|+ '''Mapster 32 keys &mdash; 3D mode'''<br />
|- bgcolor="#f0f0f0"<br />
! key/keys!!description!!type!!sec<br>!!spr<br>!!wal<br>!!adv<br>!!new<br>!!N<br />
|-<br />
! A/Z <br> &nbsp;&nbsp;+Ctrl <br> &nbsp;&nbsp;+LShift<br />
|move up/down <br> look down/up <br> speed up movements||navi||||||||<center>n</center>||<center>n</center>||0<br />
|-<br />
! CAPSLOCK or 'Z<br />
|cycle zmode||navi||||||||<center>n</center>||<center>n</center>||1<br />
|-<br />
! KP+/KP-<br />
|change shade||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||2<br />
|-<br />
! KP+/KP-+Alt <br> &nbsp;&nbsp;+Alt+Shift <br> &nbsp;&nbsp;+Ctrl+Alt<br />
|change visibility <br> change visibility in smaller increments <br> change global visibility||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||3<br />
|-<br />
! ]/[ <br> &nbsp;&nbsp;+RShift <br> &nbsp;&nbsp;+LShift<br />
|slope down/up <br> smaller increments <br> smallest increments ||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||4<br />
|-<br />
! [+Alt<br />
|align slope to floor of adjoining sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||5<br />
|-<br />
! ]+Alt<br />
|align slope to ceiling of adjoining sector||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||6<br />
|-<br />
! PGUP/PGDN <br> &nbsp;&nbsp;+END <br> &nbsp;&nbsp;+HOME<br />
|move object up/down ('''+Ctrl''' on sectors: 4x) <br> 1/2 of normal increments <br> 1/4 of normal increments||edit||<center>'''x'''</center>||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||7<br />
|-<br />
! PGUP+Ctrl<br />
|put sprite on ceiling||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||8<br />
|-<br />
! PGDN+Ctrl<br />
|put sprite on ground||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||9<br />
|-<br />
! KP4/6/2/8 <br> &nbsp;&nbsp;+Shift or +Alt<br>&nbsp;&nbsp;+KP5<br />
|pan floor/ceiling or scale wall/sprite <br>force panning <br> speed up||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||10<br />
|-<br />
! V<br />
|choose tile||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||11<br />
|-<br />
! S<br />
|insert sprite||edit||||||||<center>n</center>||<center>n</center>||12<br />
|-<br />
! G<br />
|set picnum||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||13<br />
|-<br />
! E<br />
|toggle sector texture expansion||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||14<br />
|-<br />
! F<br />
|flip texture||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||15<br />
|-<br />
! R<br />
|toggle sector texture relativity||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||16<br />
|-<br />
! 'T<br />
|set lotag||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||17<br />
|-<br />
! 'H<br />
|set hitag||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||18<br />
|-<br />
! 'S<br />
|set shade||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||19<br />
|-<br />
! Alt+P<br />
|set pal||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||20<br />
|-<br />
! 1<br />
|toggle one sided sprite/wall||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||21<br />
|-<br />
! 2<br />
|toggle bottom wall swapping||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||22<br />
|-<br />
! M<br />
|toggle masking wall||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||23<br />
|-<br />
! O<br />
|toggle wall orientation||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||24<br />
|-<br />
! O<br />
|ornament sprite onto wall||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||25<br />
|-<br />
! C<br />
|toggle sprite centering||edit||||<center>'''x'''</center>||||<center>n</center>||<center>n</center>||26<br />
|-<br />
! H<br />
|toggle hitscan sensitivity ('''+Shift''': one-sided)||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||27<br />
|-<br />
! T<br />
|cycle translucence||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||28<br />
|-<br />
! P<br />
|toggle parallax||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||29<br />
|-<br />
! 'V<br />
|set sector visibility||edit||<center>'''x'''</center>||||||<center>n</center>||<center>n</center>||30<br />
|-<br />
! Ctrl+P (obsolete)<br />
|change parallax type (classic renderer only)||edit||||||||<center>n</center>||<center>n</center>||31<br />
|-<br />
! .<br />
|search &amp; fix panning of the wall to the right||edit||||||<center>'''x'''</center>||<center>n</center>||<center>n</center>||32<br />
|-<br />
! 'L<br />
|set coordinates||edit||<center>'''x'''</center>||<center>'''x'''</center>||||<center>n</center>||<center>'''y'''</center>||33<br />
|-<br />
! 'M<br />
|set extra||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||34<br />
|-<br />
! +/-<br />
|cycle tile||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>'''y'''</center>||35<br />
|-<br />
! TAB<br />
|copy to clipboard||edit||||||||<center>n</center>||<center>n</center>||36<br />
|-<br />
! LENTER<br />
|paste all (pic+shade+pal+flags+tags+extra)||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>n</center>||<center>n</center>||37<br />
|-<br />
! 'LENTER<br />
|paste picnum only||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||38<br />
|-<br />
! LENTER+Shift<br />
|paste shading+pal||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||39<br />
|-<br />
! LENTER+Ctrl<br />
|paste picnum+shading+pal||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||40<br />
|-<br />
! Alt+C<br />
|replace all "same" tiles with clipboard tile||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||41<br />
|-<br />
! Alt+D<br />
|adjust clipping distance of sprite||edit||||<center>'''x'''</center>||||<center>'''y'''</center>||<center>n</center>||42<br />
|-<br />
! ;V<br />
|set sector visibility on all selected sectors||edit||<center>'''x'''</center>||||||<center>'''y'''</center>||<center>'''y'''</center>||43<br />
|-<br />
! 3<br />
|toggle Sector over Sector <br>(see http://www.users.on.net/~triforce/cduke3d/)||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||44<br />
|-<br />
! 'BACKSPACE<br />
|clear all flags for wall/sprite||edit||||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||45<br />
|-<br />
! 'P<br />
|set palette of all sprites/walls/floors/ceilings <br>(respectively) in all selected sectors||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||46<br />
|-<br />
! ;P<br />
|set palette of all sprites/walls/floors/ceilings <br>in all selected sectors||edit||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''x'''</center>||<center>'''y'''</center>||<center>'''y'''</center>||47<br />
|-<br />
! Ctrl+Shift<br>+LENTER<br />
|autoshade wall||edit||||||<center>'''x'''</center>||<center>'''y'''</center>||<center>n</center>||48<br />
|-<br />
! F2<br />
|toggle clipboard preview||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||49<br />
|-<br />
! F2+Shift<br />
|toggle current tile display||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||50<br />
|-<br />
! F3<br />
|toggle mouselook||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||51<br />
|-<br />
! F4<br />
|toggle ambient sounds||misc||||||||<center>'''y'''</center>||<center>'''y'''</center>||52<br />
|-<br />
! F5<br />
|toggle mouse navigation||navi||||||||<center>'''y'''</center>||<center>'''y'''</center>||53<br />
|-<br />
! F6<br />
|toggle automatic SE help||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||54<br />
|-<br />
! F7<br />
|toggle automatic ST help||info||||||||<center>'''y'''</center>||<center>'''y'''</center>||55<br />
|-<br />
! F9<br />
|reload and activate maphacks||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||56<br />
|-<br />
! F10<br />
|disable maphacks||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||57<br />
|-<br />
! F11<br />
|cycle brightness||misc||||||||<center>n</center>||<center>n</center>||58<br />
|-<br />
! 'D<br />
|cycle skill level||disp||||||||<center>'''y'''</center>||<center>n</center>||59<br />
|-<br />
! 'X<br />
|toggle sprite shade preview||disp||||||||<center>'''y'''</center>||<center>'''y'''</center>||60<br />
|-<br />
! 'W<br />
|toggle sprite display||disp||||||||<center>'''y'''</center>||<center>n</center>||61<br />
|-<br />
! 'Y<br />
|toggle purple background||disp||||||||<center>'''y'''</center>||<center>n</center>||62<br />
|-<br />
! 'C<br />
|copy shade from clipboard to all "same" objects||edit||||||||<center>'''y'''</center>||<center>n</center>||63<br />
|-<br />
! 'R<br />
|toggle framerate display||info||||||||<center>'''y'''</center>||<center>n</center>||64<br />
|-<br />
! Ctrl+T<br />
|when pointing on a letter sprite: text entry tool <br>(alphabets are configurable in tiles.cfg)||edit||||||||<center>'''y'''</center>||<center>'''y'''</center>||65<br />
|}</div>Helixhorned