home *** CD-ROM | disk | FTP | other *** search
/ Nuke It 1000 / NUKEIT1000.ISO / faqmap / mapedit.txt < prev    next >
Text File  |  1996-01-16  |  62KB  |  1,462 lines

  1. =============================================================================
  2.                 MAPEDIT History File
  3.          Copyright (c) 1994-95 Q Studios Corporation
  4.                 Contact: Peter Freese
  5.             pfreese@qstudios.com or CIS:74170,543
  6. =============================================================================
  7.  
  8. ================
  9. 2D EDITING MODE:
  10. ================
  11.  
  12. HIGHLIGHTING:
  13.  
  14.     The mouse cursor will highlight the nearest object within a specific
  15.     threshold (see MAPEDIT.INI).  The selected object will flash, and any
  16.     XObject information will be displayed in the lower panel.  Key
  17.     operations in 2D will apply to the selected object.
  18.  
  19.  
  20. SPRITES:
  21. --------
  22.     Sprites have various shapes in the overhead map, depending on
  23.     their attributes:
  24.  
  25.     * Face sprites are cyan circles with a line extending from
  26.     the center to indicate their angle. (ref. '<' and '>')
  27.  
  28.     * Thick sprites have the blocking attribute set. (ref. 'B')
  29.  
  30.     * Purple sprites have the hitscan attribute set. (ref. Ctrl-H)
  31.  
  32.     * Sprites with three or four lines extending from the circle
  33.     are wall sprites. The shorter lines indicate which sides are
  34.     visible. (ref. 'R' and '1' in 3D mode keys.)
  35.  
  36.     * Sprites with square centers are floor sprites, and can be
  37.     manipulated with all the keys referred to above.
  38.  
  39. WALLS:
  40. ------
  41.     This section not complete.
  42.  
  43. MOUSE FUNCTIONS:
  44. ----------------
  45.     Mouse        Move mouse cursor
  46.  
  47.     LeftButton    Click and hold on an endpoint to drag.
  48.             See RightShift and RightAlt for other options.
  49.             To delete an endpoint, drag that point into the
  50.             next point and it will be deleted. (NOTE: Grid-locking
  51.             must be enabled. See 'L' key below.)
  52.  
  53.     RightButton    Click to change the 3D view cursor position.
  54.  
  55.     RightShift    Press and hold to highlight endpoints and sprites in
  56.             a rectangular region. Release the key once the chosen
  57.             region is highlighted. Drag objects in the highlighted
  58.             area by clicking and holding the left mouse button
  59.             down and then dragging the mouse. Release the left
  60.             mouse button to drop the objects at the target
  61.             position. Press RightShift without dragging the mouse
  62.             to deselect the highlighted objects.
  63.  
  64.     RightAlt    Highlight sectors for duplication or dragging. Similar
  65.             in operation to the RightShift key, this key
  66.             highlights entire sectors and the sprites within them.
  67.             See the Insert key for information on duplication.
  68.  
  69. KEYBOARD FUNCTIONS:
  70. -------------------
  71.     Arrows        Moves the 3D view cursor position. The cursor will be
  72.             clipped against blocking wall and sprite boundaries.
  73.             Press the right mouse button to move the 3D view
  74.             cursor to a different position on the map.
  75.  
  76.     ESC        Brings up the menu. Press ESC again to cancel.
  77.  
  78.     PadEnter    Toggle between 2D and 3D editing modes
  79.  
  80.     SpaceBar    Press the space bar when drawing new sectors. There
  81.             are several ways of drawing new sectors.  The
  82.             following three ways of drawing sectors can all be
  83.             done by only using the space bar.  The application is
  84.             "smart" enough to decide which method you are using.
  85.  
  86.             1.  Drawing a FULL LOOP - that is, whenever the new
  87.                 sector meets the old sector, draw over that line
  88.                 again.  In full loop mode the new sector must not
  89.                 already be in another sector.  The loop is done
  90.                 when you press the space bar at the first point
  91.                 again.
  92.             2.  SPLITTING a sector - press space bar to draw points
  93.                 at which you want to split a sector.  The computer
  94.                 knows you are done splitting when you end at
  95.                 another point that's on the edge of the sector you
  96.                 are splitting.
  97.             3.  Drawing a sector COMPLETELY INSIDE another sector.
  98.                 (for example, columns) To do this, just press space
  99.                 bar at every point in the loop.  The loop is done
  100.                 when you press the space bar at the first point
  101.                 again.
  102.  
  103.     Backspace
  104.         Deletes previously plotted point during sector creation. Press
  105.         repeatedly to get rid of all previously plotted points.
  106.  
  107.     Insert    Inserts a new endpoint at the midpoint of the highlighted
  108.         line.  Then you can drag the point to wherever you like.  (If
  109.         you insert on a red line, the point will be inserted on both
  110.         sides of the sector line.) If a bunch of sectors are selected
  111.         (see right ALT) then instead of inserted points, the selected
  112.         sector bunch will be duplicated (stamped).  Don't forget to
  113.         drag the selected sectors after stamping.
  114.  
  115.     Delete    Use this to delete sprites. Do NOT delete marker sprites
  116.         created by the XSYSTEM. Instead, change the sector type.
  117.         NOTE: To delete endpoints from a line, DON'T PRESS DELETE.
  118.         Instead, drag the endpoint onto a neighboring endpoints, while
  119.         the grid is on.  If the endpoint is dragged exactly on top of
  120.         the neighboring endpoint, it will automatically be deleted.
  121.  
  122.     Right Ctrl-Delete
  123.         This deletes the whole sector that the mouse cursor is in. Use
  124.         this option with caution as it has been know to cause problems
  125.         in maps.
  126.  
  127.     ScrollLock
  128.         Set editing starting position (reddish arrow) to your current
  129.         position (white arrow). Also used to define the default player
  130.         starting positions, but level designers are expected to place
  131.         player starting marker sprites in all maps.
  132.         NOTE: Eight co-op and eight deathmatch markers must be placed
  133.         on all maps. (ref.  Alt-S, 3D MODE EDITING)
  134.  
  135.     TAB    View attributes of the sector under the cursor.
  136.  
  137.     AltTAB    View attributes of the wall or sprite closest to the cursor.
  138.  
  139.     A/Z    Zoom the 2D view in and out. Text tags may disappear when the
  140.         view is zoomed out. Zoom in to view them again. (ref. Ctrl-T)
  141.  
  142.     B    Toggles blocking attribute of walls and sprites. A blocked
  143.         wall or sprite will with a thick line in 2D EDIT MODE.  See
  144.         the description for 'B' in the 3D EDIT MODE section for more
  145.         details.
  146.  
  147.     C    Turn a line into a circle defined by short line segments.
  148.         Press 'C' on a highlighted wall, and move the mouse cursor to
  149.         change the arc of the circle. Press '+' or '-' to change the
  150.         number of line segments in the circle. Press 'C' again to
  151.         cancel circle creation, or SpaceBar to accept the changes.
  152.         (NOTE: Grid size affects the position of the arc. Refer to 'G'
  153.         and 'L' below.)
  154.  
  155.     E    Change a sprite's status list number. Level designers should
  156.         not have to change a sprite's status directly, unless a bug is
  157.         reported when running the game.
  158.  
  159.     G    Change grid resolution. The grid resolution cycles through the
  160.         following sequence:
  161.         * Off : no grid
  162.         *  1x : 64x64 pixel grid
  163.         *  2x : 32x32 pixel grid
  164.         *  4x : 16x16 pixel grid (* DEFAULT *)
  165.         *  8x : 8x8 pixel grid
  166.         * 16x : 4x4 pixel grid (Has wall texturing problems.)
  167.         * 32x : 2x2 pixel grid (Has wall texturing problems.)
  168.  
  169.         Use the two finest grid resolutions only for positioning
  170.         sprites.  Wall vertices should not be closer to each other
  171.         than the grid lines at 8x resolution.
  172.  
  173.     H    Edit the high tag for the sector under the cursor.
  174.  
  175.     Alt-H    Edit the high tag for the wall or sprite under the cursor.
  176.         (See also: T and Alt-T. Level designers should not edit these
  177.         fields directly, as they are used internally by XSYSTEM.)
  178.  
  179.     Ctrl-H    Toggle the hitscan sensitivity of a sprite or masked wall.
  180.         Objects which are hitscan sensitive can be hit be vector
  181.         weapons.
  182.  
  183.     L    Turns grid locking on or off. If the mouse cursor is pink then
  184.         grid locking is on. If it is white then grid locking is off.
  185.         There is no grid locking if the grid is turned off.  Also,
  186.         grid locking will lock to nearby points.
  187.  
  188.     J    Join two neighboring sectors.  Press J when mouse cursor is
  189.         over the first sector.  Then press J again when the mouse
  190.         cursor is over the neighboring sector.  The attributes of the
  191.         combined sector will be taken from the first sector selected.
  192.  
  193.     K    Mark a wall or sprite for motion
  194.         (blue = forward motion, green = reverse motion)
  195.  
  196.     M    Make a wall masked
  197.  
  198.     S    Places a sprite at the location under the mouse cursor. Refer
  199.         to the SPRITES section (above) for more information.
  200.  
  201.     Alt-S    Convert internal white sector (single-sided linedef) to a red
  202.         sector (double-sided linedef). Ctrl-Delete can be used to
  203.         reverse this. (NOTE: Outer loop cannot be converted!)
  204.  
  205.     T    Edit the low tag for the sector under the cursor.
  206.     Alt-T    Edit the low tag for the wall or sprite under the cursor.
  207.         (See also: H and Alt-H. Level designers should not edit these
  208.         fields directly, as they are used internally by XSYSTEM.)
  209.  
  210.     Ctrl-T    Toggle the text captions for sectors, walls and sprites.
  211.  
  212.     < | >    Rotate a Sprite: Rotation has a precision of 2048 degrees, and
  213.         sprites can have an angle value range of 0 to 2047. Pressing
  214.         the shift key allows a finer degree of rotation.
  215.         Rotate a Sector: Sectors highlighted with RightAlt can also be
  216.         rotated using these keys.
  217.  
  218.     [ | ]    Rotate a sprite without wrapping. Generally used for marker
  219.         sprite rotation, allowing marked sprites to rotate several
  220.         times throughout a busy cycle. If you don't understand this,
  221.         talk to Peter.
  222.  
  223.     F5    Display sector specific data
  224.     F6    Display sprite/wall specific data
  225.     Alt-F5    Edit sector specific data in the editing dialog.
  226.     Alt-F6    Edit sprite/wall specific data in the editing dialog.
  227.  
  228.     While in the editing dialog, the following keys are active:
  229.         Esc    Exit dialog and abandon changes
  230.         Enter    Exit dialog and save changes
  231.         Left    Previous control
  232.         Sh Tab    Previous control
  233.         Right    Next control
  234.         Tab    Next control
  235.         Up    Increase value by 1 or move radio button up
  236.         Pad +    Increase value by 1
  237.         Down    Decrease value by 1 or move radio button down
  238.         Pad -    Decrease value by 1
  239.         Pg Up    Increase value to next multiple of 10
  240.         Pg Dn    Decrease value to next multiple of 10
  241.         Space    Toggle check boxes
  242.         F10    Get next unused channel (rxID and txID only)
  243.  
  244.  
  245. ================
  246. 3D EDITING MODE:
  247. ================
  248.  
  249.     CapsLock    change zmode
  250.     Tab        Copy to buffer
  251.     Enter        Paste buffer
  252.     Sh Enter    Paste shade and palette
  253.     Ctrl Enter    Paste tile to all walls in loop
  254.     Sh Ctrl Enter    Paste tile, shade, and palette to all walls in loop
  255.     Alt Enter    Copy attribute (extra) information
  256.     <        Rotate sprite CW
  257.     Sh <        Fine rotate sprite CW
  258.     >        Rotate sprite CCW or auto fix wall panning
  259.     Sh >        Fine rotate sprite CCW
  260.     /        Set x and y repeat to default values
  261.     Sh /        Set sprite x repeat to match y repeat
  262.  
  263.     1        Toggle 1 sides sprites and 1 way walls
  264.     2        Toggle bottom wall swapping
  265.  
  266.     Pad +/-        Brighten / darken texture
  267.     Ctrl Pad +/-    Set texture to max/min brightness
  268.     Pad 0        Set texture to 0 brightness
  269.     Pad arrow    Adjust tile repeats
  270.     Ctrl Pad arrow    Adjust tile panning
  271.  
  272.     PageUp        Raise z by 4 pixels
  273.     Sh PageUp    Raise z by 1 pixel
  274.     Alt PageUp    Enter new floor or ceiling height
  275.     Alt PageDn    Enter new floor or ceiling height
  276.     Ctrl PageUp    Put sprite on ceiling /
  277.             Move floor or ceiling to next higher neighbor Z
  278.     PageDn        Lower z by 4 pixels Sh PageDn    Lower z by 1 pixel
  279.     Ctrl PageDn    Put sprite on floor /
  280.             Move floor or ceiling to next lower neighbor Z
  281.     Delete        Delete     sprite
  282.  
  283.     B        Toggle blocking
  284.     Alt C        Change all tiles matching buffer to target
  285.     D -/+        Adjust depth cueing level
  286.     E        Toggle expansion of floor/ceiling texture
  287.     F        Flip texture
  288.     Alt F        Turn on relative alignment in the highlighted sector.
  289.             If already on, change the first wall in the sector.
  290.             Relative alignment affects textures or slopes.
  291.     G -/+        Adjust gamma level
  292.     Alt G        Change Global palette
  293.     H        Hitscan sensitivity for masked walls AND sprites.
  294.     L        Light bomb
  295.     M        Toggle maskable wall
  296.     Sh M        Toggle single side maskable wall
  297.     O        Toggle orientation or post sprite on wall
  298.     P        Toggle parallaxing for floor or ceiling
  299.     Ctrl P        Change sky parallaxing type
  300.     Alt P        Change palookup
  301.     R        Toggle floor/ceiling relative alignment or change sprite
  302.             rotation type
  303.     S        Insert sprite
  304.     T        Toggle translucency
  305.     V        Select tile
  306.     Alt V        Select heightmap
  307.     W        Change lighting effect waveform
  308.  
  309.     F2        Toggle state
  310.     F3        Show sector OFF z position
  311.     Alt F3        Capture sector OFF z position
  312.     F4        Show sector ON z position
  313.     Alt F4        Capture sector ON z position
  314.     F9        Auto stair builder.  Highlight a group of sectors,
  315.             then point to an adjoining sector floor or ceiling
  316.             and press F9.  The floor or ceiling you point to will
  317.             be the lowest step.
  318.     F11        Enable/disable panning
  319.     F12        Toggle beeps
  320.  
  321.     Ctrl Alt - | +    Decrease/Increase sector visibility
  322.     Ctrl - | +    Decrease/Increase light effect amplitude
  323.     Shift - | +    Decrease/Increase light effect phase
  324.     [ | ]        Change floor or ceiling slope
  325.     \        Remove floor slope
  326.  
  327.  
  328. -----------------------------------------------------------------------------
  329.  
  330. 94/12/18
  331.  
  332. This document created.  I have renamed BUILD.EXE to MAPEDIT.EXE.  I hope
  333. this will prevent confusion between Ken's version and our version for Blood.
  334. Also, this allows changes specific to MAPEDIT to be documented independently.
  335. For maximum viewing pleasure, this document is formatted at 78 characters
  336. wide, tab stops of 8, and contains no upper ASCII characters.
  337.  
  338. MAPEDIT supports loading custom palette remap and translucency tables.  It
  339. looks for NORMAL.PLU and TRANS.TLU in the currect directory.  If they are
  340. present, it will use them; if not, it will use the defaults in PALETTE.DAT.
  341.  
  342. I am phasing out the CNT files and replacing them with MPX (MaP eXtension)
  343. files.  This files store all the Blood specific information for sprites,
  344. walls, and sectors.  The CNT files were a hack to test out adding custom edit
  345. controls to BUILD.  I don't think anyone was using them for anything, but
  346. just in case you were, MAPEDIT will automatically convert the CNT files and
  347. remove them when you save changes.
  348.  
  349. For a discussion of the various fields and their meanings, see the
  350. TRIGGERS.TXT document.
  351.  
  352. At present, only the sprite editing fields are active.  Wall and sector
  353. editing will be completed shortly.
  354.  
  355. -----------------------------------------------------------------------------
  356.  
  357. 94/12/28
  358.  
  359. Completely replaced Ken's keyboard handler with my own.  This will allow key
  360. repeat to work for all functions, so now you can just hold down the pad plus
  361. key to lighten a sprite, etc.  This also gives me the ability to add new
  362. functionality at will, without waiting for Ken to add a new function.  To
  363. this end, I've added stub code for Alt-P while in 3D mode.  Currently, this
  364. just gives you the tile selection screen, but it will be used for editing
  365. tiled parallaxing skies.
  366.  
  367. An assertion failure that would occur when an invalid reference was noted
  368. between a map and an mpx file has been changed.  The invalid reference will
  369. now be simply deleted.  This allows you to delete the mpx file if you want to
  370. trash all the additional map data.
  371.  
  372. -----------------------------------------------------------------------------
  373.  
  374. 94/12/30
  375.  
  376. Due to some problems discovered in trying to handle keystrokes from within a
  377. secondary ISR (Ken's code doesn't handle it well, and I can't work around it
  378. because his functions are not reentrant), I've adopted a new strategy for
  379. adding to key functions.  I'm still using my own keyboard handler, so you'll
  380. still get the benefit of key repeat.
  381.  
  382. I'm now 'subclassing' Ken's editinput() function by renaming his function to
  383. kensinput() by directly modifying the object file.  This is a true hack, but
  384. it should work cleanly.  However, I'll need to make the same change to future
  385. versions of build.obj unless I can convince Ken to make a similar change.
  386.  
  387. Just to prove that it works, I've added a few extra key functions for 3D
  388. mode:
  389.  
  390. Alt-L while the cursor is on a sprite will set the sprite's shade to -42 (the
  391. maximum brightness without side effects).
  392.  
  393. Alt-0 while the cursor is on a sprite will set the sprite's shade to 0.  This
  394. should cause the sprite to have the same shade as the sector it is in (good
  395. for floor and ceiling sprites).
  396.  
  397. I was going to add a function to build stairs automatically, but some of
  398. Ken's variables for handling highlighted sectors are static and I can't
  399. access them.  I'll try to get him to change this and add this in a later
  400. version.
  401.  
  402. -----------------------------------------------------------------------------
  403.  
  404. 95/01/02
  405.  
  406. Make sure you run CONVMAP6 on ALL your maps. The easiest (DOS) method
  407. to accomplish this is to type:
  408.  
  409. for %1 in (*.map) do convmap6 %1
  410.  
  411. Peter implemented a raw auto stair builder. Create your stair sectors in
  412. 2D mode, without (unnecessarily) changing the heights in 3D mode. In 2D mode,
  413. use the R.Alt key to select all the stairs you want to auto-height adjust.
  414. In 3D mode, point to a sector outside the selected stairs that you want use
  415. as the base height for the stairs and press F9. Enter the stair height in
  416. pixels. Use 8 or 12 pixels or risk death by immolation; other stair heights
  417. will be too tall to walk over. Expect more cool additions in the future!
  418.  
  419. Peter made changes to the width of the character, as well as height at
  420. which things can be walked over. If you notice any peculiarities let him
  421. know.
  422.  
  423. Peter has also added sector lighting effects to BUILD, but they have not
  424. been documented. Also, they don't work in Blood yet, but will very soon.
  425. The next update you get will be probably executables only.
  426.  
  427. Note from Nick: Try to make your bonus, one-up and weapon sprites
  428. non-blocking. Thanks!
  429.  
  430. -----------------------------------------------------------------------------
  431.  
  432. 95/02/06
  433.  
  434. Key handling has changed (again), and is now much cleaner, thanks to the
  435. changes Ken made to his code during his visit with us.  I'll no longer have
  436. to keep hacking build.obj.
  437.  
  438. Along with Ken's changes, a bug crept in which would cause F5-F8 to crash if
  439. you pressed them in 3D mode.  This has been fixed.
  440.  
  441. Sector lighting effects are now functional and work in Blood as well.  You
  442. can edit them in 2D mode or 3D mode.  See the new keys documented above.  I
  443. may be making another change in the implementation of sector lighting to
  444. allows walls to be modified, but this shouldn't affect sectors which you have
  445. already worked on, so bang away on this feature.
  446.  
  447. The MPX format has been enhanced again.  It now contains version information,
  448. so should be easier to update periodically.  Older format files are
  449. automatically converted when loaded.  With this new version, you'll be able
  450. to add author name and level name to the mpx files (editing not yet
  451. implemented, though.)  Global visibility is now saved in the mpx file and
  452. properly loaded in Blood.
  453.  
  454. You can now tile parallax skies.  See the new keys documented above.
  455.  
  456. -----------------------------------------------------------------------------
  457.  
  458. 95/02/08
  459.  
  460. Updated sector shading effects code.  Instead of storing the base floor and
  461. ceiling shade, the MPX structure now has a single field which is the
  462. current relative shade.  By adding and subtracting this offset, it is
  463. possible to do relative shading effects to floors, ceilings, and walls
  464. without extra storage.  The only overhead is some additional processing time,
  465. since I now call DoSectorLighting() and UndoSectorLighting() once per frame.
  466.  
  467. The sectorExt dialog now has checkboxs for shading floors, ceilings, and
  468. walls, so it is possible to apply lighting effects to any or all of these.
  469. Also, for lighting effects to take place, the sector status must be ON.  I'm
  470. going to get the message system working Real Soon Now, and the first thing
  471. I'll test is turning on and off lighting effects.
  472.  
  473. A major bug was fixed in the code that ensured referential integrity between
  474. the sprite, sector, wall and respective Ext structures.  I believe that this
  475. was THE bug that was causing the occasional weird sector lighting values.
  476. Please let me know ASAP any other problems of this nature.
  477.  
  478. When loading maps, all item and creature sprites are automatically
  479. sized to their proper x and y repeats.  This is intentional, and will ensure
  480. uniformity between levels.  There is no such thing as a miniature zombie!
  481.  
  482. Sprite Ext structures are automatically added for creatures when maps are
  483. loaded.  This adds the proper type and view flags based on picnum.
  484.  
  485. -----------------------------------------------------------------------------
  486.  
  487. 95/02/14
  488.  
  489. Did a major restructuring of source code.  This was a sorely needed cleanup
  490. to produce organization out of a loose collection of hacks.  This should make
  491. future changes and additions much easier.
  492.  
  493. Fixed a problem with the IncBy and DecBy inlines functions which caused
  494. weird step values when you used the PageUp and PageDn keys in dialogs.
  495.  
  496. -----------------------------------------------------------------------------
  497.  
  498. 95/02/18
  499.  
  500. Parallax sky tiling should be working again.  I had an incorrect assumption
  501. about the way pskybits works.  I thought it represented the width of the sky
  502. tiles, but it actually indicates the number of tiles.  Go figure.
  503.  
  504. I've assigned the ext editing functions to the Alt combinations of F5 and F6
  505. instead of F7 and F8.  I'm limited to F5-F8 in 2d mode for adding features,
  506. so I'm going to overload these keys for all their worth.  Prepare for the
  507. worst.
  508.  
  509. Rewrote initialization code so that it uses the same module as Blood.  You'll
  510. now see the same initialization diagnostic messages in both.  This means that
  511. MAPEDIT also uses the same gamma correct and sin tables as Blood, and loads
  512. information from the BLOOD.INI file.
  513.  
  514. MAPEDIT loads the gamma correction from and writes changes to the BLOOD.INI
  515. file.  Do not use F11 to change the gamma level.  Instead use the G +/-
  516. combination, the same as in Blood.  The gamma level is displayed momentarily
  517. when changed.
  518.  
  519. Changed key combination to change the depth cueing (visibility) to D +/- for
  520. compatibility with BLOOD.
  521.  
  522. -----------------------------------------------------------------------------
  523.  
  524. 95/02/18
  525.  
  526. Fixed a bug in the key handler which caused the (G)oto command to stop
  527. working in the tile selection screen.  The solution was to change the key
  528. combination for this to Alt-G.  Essentially, anything you used G for
  529. previously, use Alt-G for now (except setting gamma correction).
  530.  
  531. -----------------------------------------------------------------------------
  532.  
  533. 95/02/27
  534.  
  535. This version includes a substantial rewrite of ALL 3D editing keys.  Please
  536. report anything that's not working as it should.
  537.  
  538. PageUp and PageDn in 3D mode now support fine movement (1 pixel) and coarse
  539. movement (4 pixels).  Use shift for fine movement.  It did this before, but
  540. not correctly all the time due to the way I was intercepting the keys.
  541. Sprite fine z adjustment now works for highlighted sprites.  Coarse z
  542. adjustment now moves to the next multiple of 4 pixels, rather than in steps
  543. of 4.  You can no longer move a floor above a ceiling or vice versa.
  544.  
  545. Fixed coarse sprite rotation so it moves to the next multiple of 256.
  546. Fine rotation now moves to the next multiple of 16 instead of 1.
  547.  
  548. Changed screen capture key to PrintScreen.  Now I can use F12 for something
  549. more useful.
  550.  
  551. You can no longer wrap shades by going too dark or too light.  Shades are now
  552. correctly clipped at their max values.
  553.  
  554. Changed keys for setting shade to 0, min, or max.  The key combinations for
  555. setting texture brightness are now Ctrl Pad + for max brightness, Ctrl Pad -
  556. for min brightness, and Pad 0 for 0 brightness.  I would have done this
  557. originally, but I couldn't without rewriting a fair amount of the 3d editor
  558. code (which I now have done).  These key combinations now present a
  559. consistent metaphor:  Pad +/- is exclusively used for brightness; and Control
  560. in combination with a step key sets a min or max.
  561.  
  562. Fixed a bug in which any sprite inserted that had a tile height of 32
  563. pixels or more would automatically be set to blocking.  It will now
  564. automatically set sprites to blocking only if there is something other than a
  565. sprite in the tab buffer.
  566.  
  567. Added some clicks and beeps for feedback.  Let me know if they are too
  568. annoying.
  569.  
  570. Ctrl Enter on a parallax floor or ceiling will now paste to ALL parallaxed
  571. floors or ceilings, not just neighboring sectors.
  572.  
  573. The key to auto adjust panning will no longer change orientation of any
  574. walls.  This means that some walls will not automatically be aligned, but you
  575. would have had to fix these walls anyway.
  576.  
  577. This version of MapEdit includes a new 2D animation editor.  You start this
  578. editor by using F7.  See the new animator editor keys documented at the top
  579. of this file.  Call me if you need help.  Level designers do not need to use
  580. this tool.  The animation editor will probably not work in unchained mode or
  581. screen buffer mode.  Try it in these modes at your own risk.  You have been
  582. warned, Nick!
  583.  
  584. -----------------------------------------------------------------------------
  585.  
  586. 95/03/05
  587.  
  588. Fixed a bug which would cause extended keys (e.g. Page Up and Delete) to be
  589. dropped if NumLock was on.  This bug was introduced when I added code to
  590. prevent filling up the keyboard buffer.  These keys are actually transmitted
  591. as multiple make codes when Num Lock is on, hence the bug.
  592.  
  593. Fixed a bug in the debug version of the heap.  Sheesh!  It would dassert out
  594. occasionally when it was unable to allocate a block when it thought it had
  595. enough memory.  I wasn't subtracting out the space used for the fenceposts.
  596.  
  597. MapEdit now uses our heap and resource caching system, so it should lurch
  598. less.
  599.  
  600. I replaced the gettile() function, so now tile histories for walls, ceilings,
  601. floors, masked walls, face sprites, and flat sprite can all be maintained
  602. independently.  Tile selection should now be significantly faster.
  603.  
  604. -----------------------------------------------------------------------------
  605.  
  606. 95/03/06
  607.  
  608. Added an assertion to check for overflow of the ext arrays.  I found out that
  609. some maps had sectorExt structures for nearly every sector, and were
  610. overflowing the array!
  611.  
  612. -----------------------------------------------------------------------------
  613.  
  614. 95/03/24
  615.  
  616. BUG FIXES
  617.  
  618. Fixed problem with allocatepermanenttile not marking the block of memory as
  619. locked.  It could get added to the purge list during precaching....
  620.  
  621. Added some missing modify [...] registers to an inline function in the
  622. dynamic fire system.  This would inevitably cause problems when
  623. optimizations were enabled.
  624.  
  625. Fixed the hang on exit problem.  Ken's unintengine function was closing
  626. STDIN.  Replaced his function to fix.
  627.  
  628. -----------------------------------------------------------------------------
  629.  
  630. 95/03/26
  631.  
  632. Fixed a bug with adjust x and y repeats of wall textures (you couldn't).  You
  633. can now also match x and y repeats by pressing shift / on a wall.
  634.  
  635. Added preliminary light bomb.
  636.  
  637. -----------------------------------------------------------------------------
  638.  
  639. 95/04/02
  640.  
  641. When switching between 2D and 3D mode, I now do a reference check for all ext
  642. structures.  This will ensure that any editing done in 2D mode is
  643. reflected immediately in 3D mode.
  644.  
  645. Ctrl-Enter will no longer copy shade or palette values.  If you want to copy
  646. shade and palette values to every wall in a loop, use Shift-Ctrl Enter.  Note
  647. that the previous function of Shift-Ctrl Enter has been removed.
  648.  
  649. -----------------------------------------------------------------------------
  650.  
  651. 95/04/07
  652.  
  653. MAJOR FORMAT CHANGE.  This version requires you to run CONVDB3 on all your
  654. maps.  This new format eliminates the need for separate MAP and MPX files,
  655. and adds many new fields, support for which will be added *soon*.
  656.  
  657. You can now adjust the floor or ceiling z of a red sector from outside the
  658. sector.  Just point to one of the walls and press page up or down.  This new
  659. feature makes it easy to open closed vertical doors.
  660.  
  661. Increased angle resolution of light bomb.  Expect it to be about twice as
  662. slow.
  663.  
  664. -----------------------------------------------------------------------------
  665.  
  666. 95/04/07
  667.  
  668. BUG FIX.  There was a problem which resulted in an incorrect file CRC if you
  669. deleted sprites and then saved.  I wasn't checking the statnum of sprites
  670. which had an attached xsprite.
  671.  
  672. BUG FIX.  If you started MAPEDIT and created a new map, all sectors would have
  673. an extra field of 0 instead of -1.  This caused an assertion failure when you
  674. tried to enter 3d mode.  This is a kenbug which I worked around by
  675. initializing all extra fields to -1.  There is still a problem if you create a
  676. new map after editing another map.  When you add sectors, they will get extra
  677. references to old xsectors, xwalls, and xsprites, respectively.
  678.  
  679. BEHAVIOR CHANGE.  The program now automatically adds xsprites for all sprites
  680. and sizes them correctly before saving.
  681.  
  682. -----------------------------------------------------------------------------
  683.  
  684. 95/04/07
  685.  
  686. BUG FIX.  All extra fields of 0 are now set to -1 on loading.  I'll fix this
  687. nasty bug yet!
  688.  
  689. BUG FIX.  Hooked my unitialization routine into exit so that keyboard
  690. interrupt and timer rate gets restored, even on crashes.  This should cure
  691. the occasional and bothersome runaway clock.
  692.  
  693. -----------------------------------------------------------------------------
  694.  
  695. 95/04/18
  696.  
  697. Separated code for tile selection into it's own module.
  698.  
  699. Made the sequence editor use the new tile picking code.
  700.  
  701. -----------------------------------------------------------------------------
  702.  
  703. 95/04/31 - NCN
  704.  
  705. BUG FIX.  Fixed a bug that screwed up masked walls. MAPPERS: You may not have
  706. seen this bug since it occurred in an interim version.
  707.  
  708. The H key now toggles the hitscan value in 3D mode for sprites as well as
  709. masked walls. Use Ctrl-H in 2D mode.
  710.  
  711. The Alt F key combo was added in 3D mode to change the relative alignment of a
  712. sector. Press it once to make a sector relative aligned. The key may be
  713. pressed again (and again) to change the first wall in a sector. To check which
  714. is the first wall, press TAB in a sector and note the first wall number, then
  715. press Alt-TAB on each wall to figure out which one it is.
  716. IMPORTANT NOTE: Only use Alt-F in sectors NOT containing other sectors!
  717.  
  718. Added crude menus to sector dialog. To edit an extended dialog box,
  719. highlight one of the menu selections and press Enter. When you are done
  720. editing in the extended dialog box, press Enter to save the dialog changes
  721. and return you to 2D editing mode. If you wish to go back to the menu,
  722. press Escape. Any changes you have made will be held until you either press
  723. Enter again, or press Escape to abort any changes you have made.
  724.  
  725. Added a txID verification key to the sector and sprite trigger dialog boxes.
  726. When the txID field is highlighted, enter a number and press the '?' key. This
  727. will tell you whether the txID you entered is used and by what. I intend to
  728. expand on this for the rxID field and add the same features to the wall
  729. dialog.
  730.  
  731. Added wind currents to sectors. There are now 8 hard-coded wind levels, which
  732. are selectable by changing the wind field in the sector dialog. If the field
  733. is 0, then no wind is generated in that sector.
  734.  
  735. Added water current data to sectors, which can be edited in the sector dialog.
  736. First select a water depth from 0 to 3: 0=no current, 1=tread, 2=wade, 3=swim.
  737. Next select the speed and angle. If a sector has relative alignment set, the
  738. initial current angle will be determined by the angle of first wall in the
  739. sector, and the 'angle' field will is added to the wall angle.
  740.  
  741. Added key support for certain sector effects. Change the key field in a sector
  742. to indicate that the sector requires a key to operate.
  743.  
  744. MAPPERS: We will be moving from the tag system to the new extended system, a
  745. few effects at a time. Please watch for changes in my maps and this text file
  746. to show you which effects have changed. Some things, like one-shot triggers,
  747. don't work yet, but set the fields anyway for compatibility and so you
  748. won't have to go back and edit them later. For now, you should be able to go
  749. back through all your maps and make switches and keys function, and that
  750. should eat up a few days. Good luck!
  751.  
  752. Check out the following sector types: Lift, Swingdoor, Topdoor,
  753. Bottomdoor, and Floor Pad. Use my example TRIGGERS.MAP to figure some of it
  754. out, or call me if you need to. Eventually we'll have docs explaining how this
  755. stuff works.
  756.  
  757. -----------------------------------------------------------------------------
  758.  
  759. 95/05/02 - NCN
  760.  
  761. Fixed trigger bug with floor pads. Check out the expanded physical trigger
  762. flags for sprites and sectors. MAPPERS: Make sure the following things are
  763. applied to your maps: 1) All switches should be non-blocking with the
  764. Push and/or Impact triggers set. 2) Door sectors currently need the Push
  765. flag set. This will change as soon as wall triggers are done. 3) Lifts will
  766. need the Push flag set to function while the player is in the sector, unless
  767. a switch is installed at the top and bottom of the lift, either inside or
  768. outside the shaft, up to you. The switch sprite will not move with the lift.
  769.  
  770. You can use the physical triggers with ANY sector type, including NORMAL.
  771. Physical triggers for sectors of type NORMAL will not change state when
  772. the trigger is activated. The "only once" trigger now works with the NORMAL
  773. type of sector. Expect the same additions to all sector types soon.
  774.  
  775. BUGS/PROBLEMS:
  776. * Lifts no longer work when the action key is pressed while inside,
  777. though they will activate if you are next to them. This will be fixed
  778. in the next version.
  779.  
  780. * Wall flags are still not implemented. Expect them also in the next
  781. version. These will be used to signal door sectors to open.
  782.  
  783. NOTES:
  784.  
  785. * Shrink all switches to 40x40. I'll try and add this in next MAPEDIT.
  786. * Shrink all gargoyle statues to 40x40. Same deal.
  787. * Shrink all chairs to 40x40. Okay, this one too.
  788.  
  789. -----------------------------------------------------------------------------
  790.  
  791. 95/05/07
  792.  
  793. When relative sector alignment is set with Alt-F, flipping and xy swapping is
  794. cleared.  This should fix water current problems.
  795.  
  796. -----------------------------------------------------------------------------
  797.  
  798. 95/05/08
  799.  
  800. Added new fields to sector effects dialog.  Redid all dialogs in character
  801. coordinates and tightened up display.  Non-tab control now are highlighted.
  802.  
  803. Add F2 to toggle state in 3D mode.
  804.  
  805. -----------------------------------------------------------------------------
  806.  
  807. 95/05/10
  808.  
  809. Added display of wave form when 'W' pressed in 3D mode.
  810.  
  811. Modified xsector and xsprite dialogs to access new waitTime and busyTime
  812. fields.  These fields control the speed of door movement (time in .1 secs),
  813. and the delay before reset (time in .1 secs).  If your doors or momentary
  814. switches don't seem to be working, check the values in these fields.
  815.  
  816. Added xwall dialog.
  817.  
  818. -----------------------------------------------------------------------------
  819.  
  820. 95/05/12
  821.  
  822. Provided a workaround for a memory allocation bug which would cause the
  823. editor and blood to hang in any mode which required screen buffering.  This
  824. workaround will NOT work in stereo display modes -- I need an engine update
  825. from Ken to fix this.
  826.  
  827. -----------------------------------------------------------------------------
  828.  
  829. 95/05/19
  830.  
  831. Added trouble-shooting section at top.
  832.  
  833.  
  834. -----------------------------------------------------------------------------
  835.  
  836. 95/05/24
  837.  
  838. Added lots of great new stuff that will be documented shortly. Take a look at
  839. the sample maps to see how most of the effects are accomplished. You will
  840. notice that MAPEDIT has changed significantly.
  841.  
  842. BLUE "SPRITES" are controls for SLIDE type sectors, and come in pairs.  GREEN
  843. "SPRITES" are controls for ROTATE type sectors.
  844.  
  845. Use the controls to make rotating and sliding doors or other gimmicks. If you
  846. delete a control accidently it will be reinserted, though the angles and
  847. position are not retained. Sorry. Don't delete controls by accident. :)
  848.  
  849. Here is a mini-tutorial on how things work, please run the maps then look at
  850. them before you post a bunch of questions. Everything should be the same for
  851. raising and lowering sector doors.
  852.  
  853. For a swinging door:
  854. * Create a red-line sector for a door and raise it to the height you want it.
  855. * NOTE: Doors should be created in the OPEN position.
  856. * Use AltF5 to select a sector type of "Rotate" in the sector dialog.
  857. * WARNING: Do NOT select the "Swing door" type. It won't work.
  858. * Set the triggers, keys, and busyTime/waitTime EFFECTS in the same dialog.
  859. * NOTE: A green control is automatically inserted (visible in 2D mode only!)
  860. * Place the control on the pivot point of the sector.
  861. * Change the angle of the green control to point right. O---->
  862. * Now, adjust the angle of the green control to be the angle it needs rotate
  863.   to OPEN from the CLOSED position. This is a bit confusing but you'll get
  864.   the hang of it. Look at the swinging doors in MAP01-MAP04.
  865.  
  866. For a sliding door:
  867. * Okay, I'll send this to you guys in e-mail. There is a simple example in
  868.   MAP01.MAP. Look for the BLUE ARROW. Yes! The blue arrow points in the
  869.   direction of movement. (Let the other teams try and beat that!)
  870.  
  871. More on sliding doors later, as well as morphing walls. For now just
  872. experiment with triggers and slide/rotate walls. Good luck.
  873.  
  874. -----------------------------------------------------------------------------
  875.  
  876. 95/05/28
  877.  
  878. Changed code that automatically inserts marker sprites so they start out at
  879. angle 0. O---->  This only effect markers in rotate sectors.
  880.  
  881. -----------------------------------------------------------------------------
  882.  
  883. 95/05/29
  884.  
  885. Added combination switches.  These are multi-way switches which change to the
  886. ON state when their data field equals the value set in lotag.  The sprite's
  887. hitag contain the number of values that the switch will cycle through.  These
  888. switches can be used for combination locks, or even counters.  See my map
  889. FXTEST for examples of both.
  890.  
  891. Changed the way that slide sectors work so you only need to tag the walls
  892. that you want to move, and the code figures out which vertices need to be
  893. updated.  No more stretching wall bullshit.
  894.  
  895. Added support for sprite link messages so a master combination switch can
  896. control slave switches.
  897.  
  898. -----------------------------------------------------------------------------
  899.  
  900. 95/05/30
  901.  
  902. Created MAPEDIT.INI for storing various edition options.
  903.  
  904. Fixed an overflow problem which could cause long lines to be unselectable.
  905. Overhauled line selection so it is zoom dependent, and controlled by a
  906. configurable distance threshold, HighlightThreshold in [Options] of
  907. MAPEDIT.INI.
  908.  
  909. Fixed a lot a subtle problems in the light bomb, which would cause certain
  910. reflections to be calculated incorrectly.  I also (hopefully) eliminated
  911. problems with overflow in the ray tracing algorithm.  Sometimes fixed point
  912. math sucks.  You can control various aspects of the light bomb through
  913. configuration options in MAPEDIT.INI.
  914.  
  915. Changed Ctrl-Shift-Enter so it only pastes shade and palette to all walls in
  916. a loop.  Previously, it would copy over textures as well.  This is the way
  917. that I really intended it to work.
  918.  
  919. -----------------------------------------------------------------------------
  920.  
  921. 95/05/31
  922.  
  923. YES!  I think I found a solution for maintaining marker sprites that will
  924. ensure references don't get hosed.  In level designer terms, this means you
  925. won't occasionally lose slide or rotate markers.
  926.  
  927. -----------------------------------------------------------------------------
  928.  
  929. 95/06/01
  930.  
  931. This time I _really_ think I've fixed the marker sprite problem.  There
  932. shouldn't be any changes required to your maps, and the marker sprites should
  933. stay put.  Let me know any problems ASAP.
  934.  
  935. -----------------------------------------------------------------------------
  936.  
  937. 95/06/02
  938.  
  939. Moved troubleshooting section to the new XSYSTEM.TXT file, which will
  940. document the trigger system, sector, wall, and sprite effects, and other
  941. crucial information for level designers.  This file will continue to document
  942. editor changes, but won't discuss specific aspects of effects.
  943.  
  944. -----------------------------------------------------------------------------
  945.  
  946. 95/06/04
  947.  
  948. Fixed a mouse selection problem which would cause the wrong texture to be
  949. copied instead if the mouse was at an extreme edge of the screen.  The bug is
  950. in Ken's code, so the only thing I can do is limit the mouse in by a pixel
  951. from all the edges.
  952.  
  953. You can now use PageUp and PageDn on the lower wall of a bi-textured wall to
  954. move a red sector up and down.
  955.  
  956. Player height is now identical in MapEdit and Blood.  Just remember to put
  957. your switches lower in areas where the player will be in the water.
  958.  
  959. Added sector visibility keys: Press CtrlAlt+ and CtrlAlt- to change the
  960. sector visibility values. Don't abuse this feature or Nick will kill you.
  961.  
  962. -----------------------------------------------------------------------------
  963.  
  964. 95/06/04
  965.  
  966. ========================================================================
  967.             !! READ THIS FIRST !! (please)
  968. ========================================================================
  969. Save ALL of your maps before running the new conversion utility.
  970.  
  971. Once you've saved your maps in another directory or ZIP file, run the
  972. CONVDB4.EXE conversion utility. You can use wildcards, so typing "CONVDB4
  973. *.MAP" is acceptable.
  974.  
  975. Next, run "MAKEPLU 64 96" before viewing, editing or playing any maps.
  976. ========================================================================
  977.  
  978. * From now on all Door, Lift and moving stair types should be created using
  979. the "Z Motion" sector type. (These are automatically converted when CONVDB4
  980. is run on version 3.x maps.) The Z values cannot yet be viewed in the 2D
  981. dialogs, but are displayed when created or changed in 3D mode.  NOTE: Lift
  982. types will be converted, but you must manually go in and set on and off Z for
  983. each of them. Sorry. It was this, or linking the entire engine into the
  984. converter, or wasting time rewriting code.
  985.  
  986. To create and set the default on and off Z values for a "Z Motion" sector:
  987.  
  988. First, make the sector a "Z Motion" sector using the Alt-F5 dialog.
  989.  
  990. Position the sector ceiling and floor heights where you want them to be when
  991. the sector is in the OFF position. For doors, it is easiest to make OFF the
  992. CLOSED position. Point at the Z Motion sector (ceiling, floor, adjacent
  993. non-white wall, or interior white wall) and press Alt F3 to set the OFF Z
  994. values. Pressing Alt F3 will set the Z values for both the ceiling and floor,
  995. so you don't have to press it twice.
  996.  
  997. Now position the ceiling and floor heights where you want them to be when the
  998. sector is in the ON position. (Best in the OPEN position.) Point at the "Z
  999. Motion" sector and press Alt F4 to set the ON Z values.  Again, this only has
  1000. to be done once, as it will autmoatically set the ceiling and floor ON Z
  1001. values with one keypress.
  1002.  
  1003. To view the positions, point at the sector with the mouse cursor, hold the
  1004. left mouse button down and press F3 and/or F4 to view the OFF and ON Z
  1005. values, respectively.
  1006.  
  1007. * New graphics for the pod creature and rat have been added, but they don't
  1008. have MAPEDIT values in place. That means their captions won't yet show up in
  1009. 2D mode, nor will they be sized correctly.
  1010.  
  1011. * Dialogs have changed a bit, and will change more in the future.  At least
  1012. this time they all look more alike. Live with it.
  1013.  
  1014. -----------------------------------------------------------------------------
  1015.  
  1016. 95/06/13
  1017.  
  1018. Changed 3D movement so you are no longer blocked by the ceiling in sectors
  1019. with parallaxed skies.  Moving way 'up there' can give you an interesting
  1020. perspective on (and hopefully new ideas for) your map.
  1021.  
  1022. Rewrote the GUI.  You probably won't see any significant visible changes, but
  1023. please report any problems.
  1024.  
  1025. -----------------------------------------------------------------------------
  1026.  
  1027. 95/06/30
  1028.  
  1029. Added menu to insert game objects. From now onw, press Alt-S instead of S to
  1030. insert game object sprites. You can still use S for ornaments like torches,
  1031. weeds, etc. NOTE: Hazard insertion is not done yet.
  1032.  
  1033. If you have not already done do, run CONVDB4 on all your maps. You should
  1034. then load and save *every* map to reset the object types. The only sprites
  1035. that are converted in MAPEDIT (during loading and saving) are listed below.
  1036. If you have a creature sprite not using one of these tiles, fix it
  1037. immediately or risk certain death.
  1038.  
  1039. #    Name            Creature
  1040. 896    kAnmPhantasmM1        Phantasm
  1041. 1170    kAnmZomb1M1        AxeZombie
  1042. 1270    kAnmHellM2        HellHound
  1043. 1280    kAnmHellM1        HellHound (also)
  1044. 1370    kAnmZomb2M1        FatZombie
  1045. 1470    kAnmGargoyleM1        FleshGargoyle
  1046. 1530    kAnmGargStatue        FleshGargoyle Statue
  1047. 1570    kAnmGillM1        GillBeast
  1048. 1595    kAnmGillM2        GillBeast (also)
  1049. 1745    kAnmRatM1        Rat
  1050. 1792    kAnmPodM1        GreenPod
  1051. 1797    kAnmTentacleM1        GreenTentacle
  1052. 1835    kAnmEelM2        Eel
  1053. 1870    kAnmEelM1        Eel (also)
  1054. 1920    kAnmSpiderM1        RedSpider
  1055. 1948    kAnmBatM2        Bat (sleeping)
  1056. 1950    kAnmBatM1        Bat (flying)
  1057. 1980    kAnmHandM1        Hand
  1058. 2680    kAnmCerberusM1        Cerberus
  1059. 2820    kAnmCultistA1        TommyCultist    *
  1060. 2860    kAnmCultistM1        ShotgunCultist  *
  1061.  
  1062. -----------------------------------------------------------------------------
  1063.  
  1064. 95/07/03
  1065.  
  1066. Maps of version 4.00 are auto converted to version 4.01.  The conversion
  1067. involves adjusting the z position of wall and face sprites to handle the new
  1068. origin alignent mode.
  1069.  
  1070. Added new lighting type, Flicker3.  This is a mostly on, flakey flourescent
  1071. light sort of flicker effect.
  1072.  
  1073. Added our tile preloading code from Blood to MapEdit, so you should have less
  1074. lurching due to tiles not being in memory.
  1075.  
  1076. -----------------------------------------------------------------------------
  1077.  
  1078. 95/07/08
  1079.  
  1080. Rewrote "O" code to paste sprite onto a wall.  Let me know if you still have
  1081. occasional problems ornamenting sprites (where it won't go onto the wall).
  1082.  
  1083. -----------------------------------------------------------------------------
  1084.  
  1085. 95/07/09
  1086.  
  1087. Fixed a problem where marker sprites would occasionally get converted to
  1088. other sprite types if they had a picnum which got recognized by Nick's
  1089. conversion code.
  1090.  
  1091. Improved performance of 2D display code by eliminating unnecessary math for
  1092. non-displayed red walls.
  1093.  
  1094. Now that sprite FIFO code is working, the insertsprite cover function now
  1095. sets all new sprites to the following defaults:
  1096.  
  1097.     sprite[].cstat = kSpriteOriginAlign;
  1098.     sprite[].shade = 0;
  1099.     sprite[].pal = 0;
  1100.     sprite[].clipdist = 32;
  1101.     sprite[].xrepeat = 64;
  1102.     sprite[].yrepeat = 64;
  1103.     sprite[].xoffset = 0;
  1104.     sprite[].yoffset = 0;
  1105.     sprite[].picnum = 0;
  1106.     sprite[].ang = 0;
  1107.     sprite[].xvel = 0;
  1108.     sprite[].yvel = 0;
  1109.     sprite[].zvel = 0;
  1110.     sprite[].owner = -1;
  1111.     sprite[].lotag = 0;
  1112.     sprite[].hitag = 0;
  1113.     sprite[].extra = -1;
  1114.  
  1115. This should help cure some of the problems caused by sprites being inserted
  1116. with bogus values in the fields.
  1117.  
  1118. Renabled CRC checking for loaded maps.  Let me know if you have any problems
  1119. in loading some of your converted maps.
  1120.  
  1121. ALERT!  Ken made some clipping fixes to the engine which may cause sprites
  1122. that are exactly on the wall to be non-visible.  This is especially true with
  1123. red walls.  Changed the ornament function ("O" or "S" while pointing at a
  1124. wall) so that sprites are offset from walls by 1/4th a pixel distance.  You
  1125. should go through your maps and re-ornament all walls.  Unfortunately,
  1126. there's not an easy way to do this automatically.
  1127.  
  1128. Ornamented sprites are set by default to non-blocking and 1 sided.
  1129.  
  1130. All dudes (creatures) are set to non-blocking and non-hitscan in the editor.
  1131. This makes it a lot easier to move around in 3D mode.  Don't worry, the
  1132. status bits are automatically set to the appropriate values in the game.
  1133.  
  1134. -----------------------------------------------------------------------------
  1135.  
  1136. 95/07/17
  1137.  
  1138. Fixed a bug with ammo names. Load and save all your maps. We apologize for
  1139. this inconvenience.
  1140.  
  1141. -----------------------------------------------------------------------------
  1142.  
  1143. 95/07/20
  1144.  
  1145.              !!! MAP VERSION CHANGE !!!
  1146.  
  1147. Once you've backed up all your maps in another directory or ZIP file, run the
  1148. CONVDB5.EXE conversion utility. You can use wildcards, so typing "CONVDB5
  1149. *.MAP" is acceptable.  The old maps will be saved with an extension of ".MA4".
  1150.  
  1151. This update adds fields necessary for implementing creature AI.  You'll see
  1152. fields added to the XSprite dialog shortly.
  1153.  
  1154. Fixed a bug in the code to auto align wall textures -- it would occasionally
  1155. get caught in a loop and bail out after a certain number of iterations.  Now
  1156. it should correctly detect when it is looping around walls.
  1157.  
  1158. You can now press F10 while editing the rxID and txID fields, and it will
  1159. automatically fill in the next unused channel.
  1160.  
  1161. Object type is now stored in the former lotag field, and object mass is
  1162. stored in the former hitag field.  Do NOT edit lotag or hitag manually.
  1163.  
  1164. Fixed a crash bug that would occur if you pressed Enter in 2D mode while a
  1165. wall was not highlighted.
  1166.  
  1167. Optimized the sectorofwall() function, which probably won't make much of a
  1168. difference to anybody.
  1169.  
  1170. -----------------------------------------------------------------------------
  1171. 95/07/27
  1172.  
  1173. * Added Ctrl-PgUp / Ctrl-PgDn support (3D mode) for sectors / walls
  1174. =============================================================================
  1175. When pointing at single-sided walls, the ceiling of the sector is modified.
  1176. When pointing double-sided walls, the sector ceiling or floor on the other
  1177. side of the highlighted wall is modified.
  1178.  
  1179. Ctrl-PgUp will set the highlighted sector ceiling to the next higher neighbor
  1180. ceiling z, or floor to the next higher neighbor floor z.
  1181.  
  1182. Ctrl-PgDn will set the highlighted sector ceiling to the next lower neighbor
  1183. ceiling z, or floor to the next lower neighbor floor z.
  1184.  
  1185. * Added Alt-PgUp / Alt-PgDn support (3D mode) for sectors / walls
  1186. =============================================================================
  1187. When pointing at single-sided walls, the ceiling of the sector is modified.
  1188. When pointing double-sided walls, the sector ceiling or floor on the other
  1189. side of the highlighted wall is modified.
  1190.  
  1191. Alt-PgUp will bring up a dialog box where you can manually type in the pixel
  1192. height of the ceiling or floor from its counterpart.
  1193.  
  1194. In other words, if you Alt-PgUp on a floor, you can type in the floor's
  1195. height from the ceiling. If you Alt-PgUp on a ceiling, you can type in the
  1196. ceiling's height from the floor.
  1197.  
  1198. Alt-PgUp and Alt-PgDn work the same way. If you can think of a cooler way to
  1199. do this, let me know.
  1200.  
  1201. Since not all of the monsters are selectable in 3D mode using the Alt-S object
  1202. menu, use Alt-S to first insert the closest monster (e.g. flesh gargoyle
  1203. instead of a stone gargoyle) then go into 2D mode and use AltF6 on the sprite
  1204. then select a new type. This should be fixed soon, when all the monster types
  1205. will be selectable through a list box.
  1206.  
  1207. -----------------------------------------------------------------------------
  1208. 95/08/01
  1209.  
  1210. Fixed bug with sector joining. This bug was caused by us while trying to fix
  1211. a bug in the build.obj editor code that wasn't checking for invalid sectors
  1212. and walls when joining sectors. We still have the error checking code in, but
  1213. we the check is less strict than it was, since the strict check was causing
  1214. the code to bail out before joining sectors.
  1215.  
  1216. -----------------------------------------------------------------------------
  1217. 95/08/02
  1218.  
  1219. Added what is hopefully the final fix for the resource/map caching problems
  1220. we were experiencing on machines with > 8MB. All map changes should be now
  1221. be flushed correctly, and the maps should reload without a problem.
  1222.  
  1223. Ctrl-Alt-Plus & Ctrl-Alt-Minus:
  1224.  
  1225. Made sector visibility keys work with sector highlighting, so you can now
  1226. highlight sectors with the RightAlt key in 2D mode, then go to 3D mode and
  1227. change the visibility of all highlighted sectors.
  1228.  
  1229. -----------------------------------------------------------------------------
  1230. 95/08/03
  1231.  
  1232. Fixed hitscan blocking
  1233.  
  1234. Added 3D mode messages to wall and sprite x/y repeat keys.
  1235.  
  1236. Added 3D mode messages to wall x/y panning keys.
  1237.  
  1238. Added some new sample maps and a sample map definition file.
  1239.  
  1240. -----------------------------------------------------------------------------
  1241. 95/08/04
  1242.  
  1243. Reverted to the previous keyboard method of handling sub-dialogs.  To exit
  1244. from the sector effects sub-dialog and save changes, press ENTER.  To return
  1245. to the xsector dialog, just press ESC.  Sorry for the inconvenience.
  1246.  
  1247. -----------------------------------------------------------------------------
  1248. 95/08/06
  1249.  
  1250. Added respawning for items. Check out the sprite dialog using AltF6.
  1251. Monsters and barrels do not respawn yet, but they will soon.
  1252.  
  1253. -----------------------------------------------------------------------------
  1254. 95/08/07
  1255.  
  1256. MapEdit is now MUCH faster in 2D mode, at the expense of a little memory
  1257. overhead.  The speedups should be particularly noticeable in maps where there
  1258. were a lot of captions being displayed.
  1259.  
  1260. -----------------------------------------------------------------------------
  1261. 95/08/08
  1262.  
  1263. Tile #457 has been removed. Use tile #356 with palette 5 to emulate #457.
  1264. We apologize for this inconvenience
  1265.  
  1266. -----------------------------------------------------------------------------
  1267. 95/08/09
  1268.  
  1269. Added support for moving only marked walls and sprites within motion sectors.
  1270. To mark a wall or sprite for motion, press the "K" key while highlighting the
  1271. object in 2D mode.  When the object is blue, it will move forward (in the
  1272. direction of the movement arrow, or the angle direction of the axis marker).
  1273. When it is green, it will move in the opposite direction.
  1274.  
  1275. You can also mark sprites for motion in Z Motion sectors.  If the sprite is
  1276. blue, it will move with the floor.  If it is green, it will move with the
  1277. ceiling.
  1278.  
  1279. Change the key for marking walls for motion from "M" to "K".  This was
  1280. done to allow setting walls to masked in 2D mode with the "M" key.  This
  1281. change actually occured a few revs back, but I forget to document either key
  1282. -- sorry.
  1283.  
  1284. Changed the color of marker sprites to green/yellow to yellow/white to
  1285. distinguish them from sprites marked with "K".  Marker sprites normally
  1286. appear yellow.  If the cursor is in the sector they apply to, they are shown
  1287. in white.
  1288.  
  1289. There are now three different types of slide and rotate sectors. The first
  1290. type, Slide Marked and Rotate Marked, will move only marked walls and
  1291. sprites.  The second type, Slide and Rotate, will move ALL walls and marked
  1292. sprites.  This is useful for sectors where you don't want to mark all the
  1293. walls individually.  The third type, Slide Crush and Rotate Crush, isn't yet
  1294. implemented, and acts like the move ALL types.
  1295.  
  1296. -----------------------------------------------------------------------------
  1297. 95/08/16
  1298.  
  1299. You can now rotate sectors more than 180 degrees!  Use the [/] keys to rotate
  1300. a sprite in 2D mode without wrapping at 0 and 2048.  All axis markers
  1301. for doors which rotate CCW are automatically set to negative angles.  You'll
  1302. understand how this works when you take a look at the markers.
  1303.  
  1304. Slide sectors can rotate!  Just set the start and end angles in the on and
  1305. off marker sprites.  Rotation will occur around the center, as determined by
  1306. the relative position of the ON marker.
  1307.  
  1308. -----------------------------------------------------------------------------
  1309. 95/08/16
  1310.  
  1311. Added and refined descriptions at the top of this document, mainly duplicating
  1312. material from the older BUILD.TXT file.
  1313.  
  1314. -----------------------------------------------------------------------------
  1315. 95/08/20
  1316.  
  1317. Updated Alt-S game object insertion to use new keys, weapon and dude tiles.
  1318.  
  1319. -----------------------------------------------------------------------------
  1320. 95/08/22
  1321.  
  1322. Added mirrors to our game. Supports up to 64 mirrors per level. Mirrors
  1323. cannot reflect other mirrors, so keep them far apart. Mirrors are created
  1324. using a 1-way masked walls on red lines (double-sided linedefs.) The area
  1325. behind the mirror must be the same size and shape as the area in front of
  1326. the mirror. Apply the "mirror" texture (I think #504) to 1-way walls to
  1327. make them a mirror.
  1328.  
  1329. -----------------------------------------------------------------------------
  1330. 95/08/29
  1331.  
  1332. *** CONFIDENTIAL! DO NOT DISCUSS THE FOLLOWING UPDATE! ***
  1333. We've added slopes to our game. Slopes will be in Blood, Duke,
  1334. Ruins & Shadow Warrior. The 3D mode keys used to add or modify
  1335. slopes are listed above. See [, ], \, and Alt-F
  1336.  
  1337. -----------------------------------------------------------------------------
  1338. 95/09/05
  1339.  
  1340. Added hazards and miscellaneous sprites to the Alt-S menu.  Check out
  1341. inserting coop mode starting positions in the Misc menu.  NOTE: Inserting
  1342. switches using this menu isn't working yet.
  1343.  
  1344. Added simple one-way teleporters to the editor. Create a teleport sector and
  1345. a teleport marker will be inserted. Move that teleporter to the destination.
  1346. For two-way teleporters, create the same at the destination and drag the
  1347. marked to the first teleporter. Switched teleporters may work, but I haven't
  1348. tested them yet. This could make for some interesting deathmatch play where
  1349. you need a temporary ally.
  1350.  
  1351. -----------------------------------------------------------------------------
  1352. 95/09/10
  1353.  
  1354. Modified the way that Alt-F key works. You can now select the first wall of a
  1355. sector by pointing at it in 3D mode and pressing Alt-F. Pointing at the floor
  1356. or ceiling and pressing Alt-F will make the first wall the next wall in
  1357. clocking order.
  1358.  
  1359. You can disable all panning with the F11 key. This is useful for aligning the
  1360. textures of panAlways sectors and walls.
  1361.  
  1362. -----------------------------------------------------------------------------
  1363. 95/09/15
  1364.  
  1365. When you insert a new sprite, if a sprite is not already in the tab buffer,
  1366. you are given the opportunity to pick the tile for the sprite.  Pressing
  1367. Escape will allow you to abort the sprite insertion.  The ability to abort
  1368. also applies to inserting game objects with Alt-S.
  1369.  
  1370. The Light bomb has been fixed.  Because some of the math has been changed,
  1371. you will need to update some of the constants in your MAPEDIT.INI file. Here
  1372. are my default constants:
  1373.  
  1374.     [LightBomb]
  1375.     Intensity=4        ; controls how bright the light is
  1376.     Reflections=3        ; maximum number of reflections
  1377.     Attenuation=0x0000    ; how much light gets diminished
  1378.     MaxBright=-4
  1379.  
  1380. Intensity controls how bright the light source is.  You can increase this
  1381. value if you don't like pressing L a lot to brighten up a room, but you won't
  1382. get as much fine control with it then.
  1383.  
  1384. Reflections is the number of times each light ray is allowed to bounce.  If
  1385. this value is 0, no reflections are calculated (and the process is much
  1386. faster).  More reflections can help by creating more diffuse lighting
  1387. effects.
  1388.  
  1389. Attenuation controls how much the light is diminished when it reflects off a
  1390. wall or floor.  A value of 0 is a perfect reflection, and a value of 0x10000
  1391. would result in non-reflective walls.
  1392.  
  1393. MaxBright sets the limit on how bright the light bomb is allowed to make a
  1394. wall.  By prevent the wall shade from getting too bright, you retain the
  1395. ability to see some of the dynamic sector lighting effects, which won't be
  1396. visible is the shade is too much < 0.
  1397.  
  1398. Texture alignment code overhauled!  I think this new version should do
  1399. everything you could want it to do (with reason).  It now follows multiple
  1400. paths, aligning everything connected with the same texture perfectly.  It
  1401. aligns red walls correctly, regardless of where the texture is pegged, and
  1402. even knows about slopes.  You will be amazed. :-)
  1403.  
  1404. For the sake of speed and congruity, I changed the key strokes for adjusting
  1405. wall x/y repeat and x/y panning.  The arrows on the numeric keypad now
  1406. adjust the panning of wall textures by a factor of 8.  If you want fine
  1407. alignment, use the Shift key (sound familiar?)  To adjust the wall scale,
  1408. press the 5 key on the numeric keypad while pressing the arrows.  This change
  1409. should make it a little easier to manually adjust texture panning, since you
  1410. won't have to hold so many darn keys down.
  1411.  
  1412. For those of you with ingrained editor habits (or who have to use BUILD for
  1413. other projects), you can retain the old keypad behavior by adding the
  1414. following to the [Options] section of your MAPEDIT.INI file:
  1415.  
  1416.     [Options]
  1417.     OldKeyMapping=1
  1418.  
  1419. This works the same way except for sprites, in which the function of the pad
  1420. 5 is reversed.  I did it this way because you seldom (if ever) need to adjust
  1421. the x/y offset of sprites.
  1422.  
  1423. -----------------------------------------------------------------------------
  1424. 95/09/16
  1425.  
  1426. Added a timer event generator to the sprite type list.  See the
  1427. appropriate section in XSYSTEM.TXT.
  1428.  
  1429. -----------------------------------------------------------------------------
  1430. 95/11/26
  1431.  
  1432. Fixed a rather subtle but NASTY map screw up bug which would occur if you tried
  1433. to use Alt-F on a ceiling or floor of sector 0.  I intruced this bug when we
  1434. went to the new map version.  Sorry about that. :-(  If you are curious what
  1435. caused this, I made wall->point2 an unsigned value, not realizing that it can
  1436. go negative during wall order rotation.
  1437.  
  1438.  
  1439. -----------------------------------------------------------------------------
  1440. 95/12/27
  1441.  
  1442. Modified dialog boxes, adding new fields like interruptable, lock, etc.
  1443. Added dude-specific flags to the sprite dialog box.
  1444.  
  1445. -----------------------------------------------------------------------------
  1446. 96/01/07
  1447.  
  1448. Fixed sprite insertion and z movement functions so that sprites will go on
  1449. floors and ceilings correctly.
  1450.  
  1451. Changed '/' key so that is resets flip bits for floors and ceilings.
  1452.  
  1453. Changed Alt-C so that it will change palookups if the picnum is the same in the
  1454. tab buffer.
  1455.  
  1456. Fixed an assertion bug that would occur when dragging highlighted points.
  1457.  
  1458. -----------------------------------------------------------------------------
  1459. 96/01/16
  1460.  
  1461. Added WaterDrip generator code.
  1462.