<html>
	<head>
		<title>cube map editing reference</title></head>
	<body text="#FFFFFF" bgcolor="#302C28" link="#FFBB00" vlink="#FF9900" alink="#FF9900">
		<font face="verdana,trebuchet ms,zurich bt,tahoma,arial,helvetica,sans-serif">
			<center>
				&nbsp;&nbsp;
				<p>
					<table width="80%">
						<tr>
							<td BGCOLOR="#662222"><font size="3"><strong> Editing related console commands </strong>
								</font>
							</td>
						</tr>
						<tr>
							<td><font size="-1">
									<pre><font size=3>    edittoggle     </font></pre>
									switches between map edit mode and normal (default key = e). In map edit mode 
									you can select bits of the map by clicking or dragging your crosshair on the 
									floor or ceiling (using the "attack" command, normally MOUSE1), then use the 
									commands below to modify the selection. While in edit mode, physics & collision 
									don't apply (noclip), and key repeat is ON. Note that if you fly outside the 
									map, cube still renders the world as if you were standing on the floor directly 
									below the camera.
									<pre><font size=3>    edittex T D     </font></pre>
									Changes the texture on current selection by browsing through a list of textures 
									directly shown on the cubes. T is an integer denoting the type (floor = 0, 
									lower or wall = 1, ceiling = 2, upper wall = 3), D is the direction you want to 
									cycle the textures in (1 = forwards, -1 = backwards). Default keys are the six 
									keys above the cursor keys, which each 2 of them cycle one type (and keypad 7/4 
									for upper).
									<p>
										The way this works is slightly strange at first, but allows for very fast 
										texture assignment. All textures are in 3 individual lists for each type (both 
										wall kinds treated the same), and each time a texture is used, it is moved to 
										the top of the list. So after a bit of editing, all your most frequently used 
										textures will come first when pressing these keys, and the most recently used 
										texture is set immediately when you press the forward key for the type. These 
										lists are saved with the map. make a selection (including wall bits) and press 
										these keys to get a feel for what they do.
										<pre><font size=3>    editheight T D     </font></pre>
										T is the type as above (floors & ceilings only), and D is the delta value to 
										move it in. Default keys are [ and ] for floor level, and o/p for ceiling.
										<pre><font size=3>    solid B     </font></pre>
										makes the current selection all solid (i.e. wall) if B is true (non-zero), or 
										all non-solid if it is false (0). This operation retains floor/ceiling 
										heights/textures while swapping between the two. Default keys f and g 
										respectively.
										<pre><font size=3>    equalize T     </font></pre>
										levels the floor/ceiling of the selection (T as above). default keys , and .
										<pre><font size=3>    heightfield T     </font></pre>
									marks the current selection as a heightfield, with T being floor or ceiling, as 
									above. A surface marked as heightfield will use the vdelta values (see below) 
									of its 4 corners to create a sloped surface. To mark a heightfield as normal 
									again (ignoring vdelta values, set or not) use "solid 0". Default keys are h 
									(floor) and i (ceiling).
									<p>
										Heightfields should be made the exact size that is needed, not more not less. 
										The most important reason for this is that cube automatically generates "caps" 
										(side-faces for heightfields) only on the borders of the heighfield. This also 
										means if you have 2 independant heightfields accidentally touch eachother, you 
										will not get correct caps. Also, a heighfield is slightly slower to render than 
										a non-heighfield floor or ceiling. Last but not least, a heightfield should 
										have all the same baseheight (i.e. the height determined by a normal editheight 
										operation) to get correct results.
										<pre><font size=3>    vdelta N     </font></pre>
									changes the vdelta value of the current selection by N. Note that unlike all 
									other editing functions, this function doesn't affect a cube, but its top-left 
									vertex (market by the dot in the editing cursor). So to edit a N * M 
									heightfield, you will likely have to edit the vdelta of (N+1) * (M+1) cubes, 
									i.e. you have to select 1 row and 1 column more in the opposite direction of 
									the red dot to affect all the vertices of a heightfield of a given size (try 
									it, it makes sense :)
									<p>
										A floor delta offsets vertices to beneath the level set by editheight (and a 
										ceil delta to above). Delta offsets have a precision of a quarter of a unit, 
										however you should use non-unitsize vertices only to touch other such vertices. 
										Default keys are 8 and 9 to decrease/increase the vdelta.
										<pre><font size=3>    corner     </font></pre>
										makes the current selection into a "corner". Currently there is only one type 
										of corner (a 45 degree one), only works on a single unit (cube) at a time. It 
										can be positioned:
										<lu>
    <li> next to 2 solid walls
    <li>
												in the middle of 2 higher floorlevels and 2 lower ones forming a diagonal (and 
												similar with ceiling) </ul> In both cases, the corner will orient itself 
												automatically depending on its neighbours, behaviour with other configurations 
												than the 2 above is unspecified. Since the latter configuration generates 
												possibly 2 floor and 2 ceiling levels, up to 4 textures are used: for example 
												for the 2 floors the higher one will of the cube itself, and the lower one of a 
												neighbouring low cube. Default key = k you can make bigger corners at once by 
												pressing "corner" on grid aligned 2x2/4x4/8x8 selections, with equal size solid 
												blocks next to them.
												<pre><font size=3>    undo     </font></pre>
												one-level undo of any of the changes caused by the above operations (default 
												key = u).
												<pre><font size=3>    copy     </font></pre>
												<pre><font size=3>    paste     </font></pre>
												copy copies the current selection into a buffer. to paste it back requires a 
												same size selection at the destination location. If it is not the same size the 
												selection will be resized automatically prior to the paste operation (with the 
												red dot as anchor), which is easier for large selections. (default keys are c 
												and v respectively).
												<pre><font size=3>    replace     </font></pre>
												repeats your last texture edit thruout the map. The way it works is intuitive: 
												simply edit any texture anywhere, then using "replace" will replace all 
												textures thruout the map in the same way (taking into account wether it was a 
												floor/wall/ceil/upper too). if the there was more than one "old" texture in 
												your selection, the one nearest to the red dot is used. This operation can't be 
												undone.
												<pre><font size=3>    newent type value1 value2     </font></pre>
												adds a new entity where (x,y) is determined by the current selection (the red 
												dot corner) and z by the camera height, of said type. Type is a string giving 
												the type of entity, such as "light", and may optionally take values (depending 
												on the entity):
												<ul>
													<li>
														<pre><font size=3>"light" radius brightness    </font></pre>
														radius in units (1..32), optionally brightness (25..255) Default key l creates 
														a new light (cylindrical) of radius 16, brightness 255.
														<p>
													<li>
														<pre><font size=3>"playerstart"    </font></pre>
														Spawn spot, yaw is taken from the current camera yaw.
														<p>
													<li>
														<pre><font size=3>"shells", "bullets", "rockets", "riflerounds", "health",
"healthboost", "greenarmour", "yellowarmour", "quaddamage"    </font></pre>
														A variety of pickup-able items, see <a href="game.html">here</a>.
														<p>
													<li>
														<pre><font size=3>"teleport" N
"teledest" N    </font></pre>
										creates a teleport connection, teleports are linked to a teledest with the same 
										N (of which there should be exactly one). N can be 0..255. The teledest uses 
										the current camera yaw.
									</p>
									<li>
										<pre><font size=3>"mapmodel" N   </font></pre>
										A map model, i.e. an object rendered as md2 which you collide against but has 
										no behaviour/movement. N determines which mapmodel you want, currently there is 
										only one, a tree (N = 0). yaw of the model is taken from the current camera 
										yaw.
										<p>
									<li>
										<pre><font size=3>"monster" N   </font></pre>
										A monster, currently N = 0..4 (see gameplay docs). Monster entities will be spawned
										when in classic single player mode, and will attack you when you come into view.
										yaw is taken from the current camera yaw.
										<p>
									<li>
										<pre><font size=3>"trigger" N T  </font></pre>
										A trigger of type T affecting all cubes with tag N when triggered in game (see "edittag" on how to set tags on cubes).
										Triggers are rendered as a carrot which, when "eaten", trigger an event (only once).
										The following trigger types are available (currently only one):
										<p>
										0: On being triggered, sets all target cubes to
										SPACE. This has the effect of
										instantly opening doors or other geometry. You edit these "doors" as SPACE, i.e.
										you determine what the "door" looks like when opened, they are then set to SOLID automatically
										when playing (map start / edit toggle).
										<p>
											</ul> Entities are shown in editmode by blue sparklies, and the closest one is 
											indicated on the HUD.
											<pre><font size=3>    delent     </font></pre>
											deletes the entity closest to the player (default key d)
											<pre><font size=3>    clearents type     </font></pre>
											deletes all entities of said type.
											<pre><font size=3>    recalc     </font></pre>
											recomputes all there is to recompute about a map, currently only lighting. 
											Default key = r [note: now deprecated: you should not need to use this function 
											manually]
											<pre><font size=3>    map name     </font></pre>
											<pre><font size=3>    savemap name     </font></pre>
											very predictable :) The menu has a set of maps that can be loaded. savemap 
											makes a backup (.BAK) if a map by that name already exists. A map given as 
											"blah" refers to "packages/base/blah.cgz", "package/blah" refers to 
											"packages/package/blah.cgz"
											<pre><font size=3>    newmap size     </font></pre>
											creates a new map of 2^size cubes. 6 is small, 7 medium, 8 large. You can go up 
											to 12 but theres not a lot of point in that :)
											<pre><font size=3>    mapenlarge     </font></pre>
											if you accidentally made your map too small, this command will make it 1 power 
											of two bigger. So if you created a 6 size map (64x64 units) it will become a 7 
											map (128x128), with your old map in the middle (from 32-96) and the new areas 
											solid.
											<pre><font size=3>    mapmsg "Title by Author"     </font></pre>
											sets the map msg, which will be displayed when the map loads. Either use the 
											above format, or simply "by Author" if the map has no particular title (always 
											displayed after the map load msg).
											<pre><font size=3>    waterlevel H     </font></pre>
											sets the global water level in your map to H (an empty map has levels 0-16), 
											which will render every cube that has a lower floor than H with a nice wavy 
											water alpha texture, and applies water physics to any entity located below it. 
											Performance notes: water is rendered for a whole square encapsulating all 
											visible water areas in the map (try flying above the map in edit mode to see 
											how). So the most efficient water is a single body of water, or multiple water 
											areas that are mostly not visible from eachother. Players can influence how 
											accurate the water is rendered using the "watersubdiv" command (config).
											<pre><font size=3>    fullbright     </font></pre>
											sets all light values to fullbright, so you don't need to edit the map in the 
											dark. Will be reset when you issue a recalc. Only works in edit mode.
											<pre><font size=3>    showmip     </font></pre>
											Toggles between showing what parts of the scenery are rendered using what size 
											cubes, and outputs some stats too. This can give mappers hints as to what 
											architecture to align / textures to change etc.
											<pre><font size=3>    toggleocull     </font></pre>
											turns occlusion culling on & off. the reason you may want to turn it off is to 
											get an overview of your map from above, without having all occluded bits 
											stripped out.
											<pre><font size=3>    texture num subnum filename     </font></pre>
											binds the texture indicated in filename to texture slot num. This is for use in 
											texture.cfg files only. subnum allows secondary textures to be specified for a 
											single texture slot, for use in shaders and other features (unused for now, 
											should be set to 0 to indicate primary texture).
											<pre><font size=3>    slope xdelta ydelta     </font></pre>
											makes a slope out of the current selection (make it a heighfield first). xdelta 
											and ydelta are the steps that specify the slope with the red vertex as 
											left-top, i.e. "slope 1 2" will make a slope that increases just 1 step from 
											left to right, and is slightly steeper from top to bottom. "slope -6 0" 
											decreases steeply from left to right, and does not slope at all from top to 
											bottom. Note that like the vdelta command, an increasing vdelta goes further 
											away from the player, regardless of floor or ceiling.
											<pre><font size=3>    arch sidedelta     </font></pre>
											makes an arch out of the current selection (first make it a heightfield of some 
											sort). Will make the arch in the long direction, i.e when you have 6x2 cubes 
											selected, the arch will span 7 vertices. optionally, sidedelta specifies the 
											delta to add to the outer rows of vertices in the other direction, i.e. give 
											the impression of an arch that bends 2 ways (try "arch 2" on an selection of 
											atleast 2 thick to see the effect). Not all arch sizes are necessarily 
											available, see data/prefabs.cfg.
											<pre><font size=3>    archvertex span vertex delta     </font></pre>
										defines a vertex delta for a specific arch span prefab, used by the "arch" 
										command. See data/prefabs.cfg for an example on usage.
											<pre><font size=3>    edittag N     </font></pre>
											sets the tag value (1..255) for the current selection (0 means no tag). Tags are
											used to determine what cubes to modify when a certain tag is triggered (see "newent trigger"). If
											a cube has a tag associated with it, gridlines show up in red.
										<p>
									&nbsp;</font></td>
						</tr>
					</table>
			</center>
		</font>
	</body>
</html>
