This repository has been archived by the owner on Oct 13, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 17
/
MAPEDIT.TXT
1461 lines (1084 loc) · 60.7 KB
/
MAPEDIT.TXT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
=============================================================================
MAPEDIT History File
Copyright (c) 1994-95 Q Studios Corporation
Contact: Peter Freese
[email protected] or CIS:74170,543
=============================================================================
================
2D EDITING MODE:
================
HIGHLIGHTING:
The mouse cursor will highlight the nearest object within a specific
threshold (see MAPEDIT.INI). The selected object will flash, and any
XObject information will be displayed in the lower panel. Key
operations in 2D will apply to the selected object.
SPRITES:
--------
Sprites have various shapes in the overhead map, depending on
their attributes:
* Face sprites are cyan circles with a line extending from
the center to indicate their angle. (ref. '<' and '>')
* Thick sprites have the blocking attribute set. (ref. 'B')
* Purple sprites have the hitscan attribute set. (ref. Ctrl-H)
* Sprites with three or four lines extending from the circle
are wall sprites. The shorter lines indicate which sides are
visible. (ref. 'R' and '1' in 3D mode keys.)
* Sprites with square centers are floor sprites, and can be
manipulated with all the keys referred to above.
WALLS:
------
This section not complete.
MOUSE FUNCTIONS:
----------------
Mouse Move mouse cursor
LeftButton Click and hold on an endpoint to drag.
See RightShift and RightAlt for other options.
To delete an endpoint, drag that point into the
next point and it will be deleted. (NOTE: Grid-locking
must be enabled. See 'L' key below.)
RightButton Click to change the 3D view cursor position.
RightShift Press and hold to highlight endpoints and sprites in
a rectangular region. Release the key once the chosen
region is highlighted. Drag objects in the highlighted
area by clicking and holding the left mouse button
down and then dragging the mouse. Release the left
mouse button to drop the objects at the target
position. Press RightShift without dragging the mouse
to deselect the highlighted objects.
RightAlt Highlight sectors for duplication or dragging. Similar
in operation to the RightShift key, this key
highlights entire sectors and the sprites within them.
See the Insert key for information on duplication.
KEYBOARD FUNCTIONS:
-------------------
Arrows Moves the 3D view cursor position. The cursor will be
clipped against blocking wall and sprite boundaries.
Press the right mouse button to move the 3D view
cursor to a different position on the map.
ESC Brings up the menu. Press ESC again to cancel.
PadEnter Toggle between 2D and 3D editing modes
SpaceBar Press the space bar when drawing new sectors. There
are several ways of drawing new sectors. The
following three ways of drawing sectors can all be
done by only using the space bar. The application is
"smart" enough to decide which method you are using.
1. Drawing a FULL LOOP - that is, whenever the new
sector meets the old sector, draw over that line
again. In full loop mode the new sector must not
already be in another sector. The loop is done
when you press the space bar at the first point
again.
2. SPLITTING a sector - press space bar to draw points
at which you want to split a sector. The computer
knows you are done splitting when you end at
another point that's on the edge of the sector you
are splitting.
3. Drawing a sector COMPLETELY INSIDE another sector.
(for example, columns) To do this, just press space
bar at every point in the loop. The loop is done
when you press the space bar at the first point
again.
Backspace
Deletes previously plotted point during sector creation. Press
repeatedly to get rid of all previously plotted points.
Insert Inserts a new endpoint at the midpoint of the highlighted
line. Then you can drag the point to wherever you like. (If
you insert on a red line, the point will be inserted on both
sides of the sector line.) If a bunch of sectors are selected
(see right ALT) then instead of inserted points, the selected
sector bunch will be duplicated (stamped). Don't forget to
drag the selected sectors after stamping.
Delete Use this to delete sprites. Do NOT delete marker sprites
created by the XSYSTEM. Instead, change the sector type.
NOTE: To delete endpoints from a line, DON'T PRESS DELETE.
Instead, drag the endpoint onto a neighboring endpoints, while
the grid is on. If the endpoint is dragged exactly on top of
the neighboring endpoint, it will automatically be deleted.
Right Ctrl-Delete
This deletes the whole sector that the mouse cursor is in. Use
this option with caution as it has been know to cause problems
in maps.
ScrollLock
Set editing starting position (reddish arrow) to your current
position (white arrow). Also used to define the default player
starting positions, but level designers are expected to place
player starting marker sprites in all maps.
NOTE: Eight co-op and eight deathmatch markers must be placed
on all maps. (ref. Alt-S, 3D MODE EDITING)
TAB View attributes of the sector under the cursor.
AltTAB View attributes of the wall or sprite closest to the cursor.
A/Z Zoom the 2D view in and out. Text tags may disappear when the
view is zoomed out. Zoom in to view them again. (ref. Ctrl-T)
B Toggles blocking attribute of walls and sprites. A blocked
wall or sprite will with a thick line in 2D EDIT MODE. See
the description for 'B' in the 3D EDIT MODE section for more
details.
C Turn a line into a circle defined by short line segments.
Press 'C' on a highlighted wall, and move the mouse cursor to
change the arc of the circle. Press '+' or '-' to change the
number of line segments in the circle. Press 'C' again to
cancel circle creation, or SpaceBar to accept the changes.
(NOTE: Grid size affects the position of the arc. Refer to 'G'
and 'L' below.)
E Change a sprite's status list number. Level designers should
not have to change a sprite's status directly, unless a bug is
reported when running the game.
G Change grid resolution. The grid resolution cycles through the
following sequence:
* Off : no grid
* 1x : 64x64 pixel grid
* 2x : 32x32 pixel grid
* 4x : 16x16 pixel grid (* DEFAULT *)
* 8x : 8x8 pixel grid
* 16x : 4x4 pixel grid (Has wall texturing problems.)
* 32x : 2x2 pixel grid (Has wall texturing problems.)
Use the two finest grid resolutions only for positioning
sprites. Wall vertices should not be closer to each other
than the grid lines at 8x resolution.
H Edit the high tag for the sector under the cursor.
Alt-H Edit the high tag for the wall or sprite under the cursor.
(See also: T and Alt-T. Level designers should not edit these
fields directly, as they are used internally by XSYSTEM.)
Ctrl-H Toggle the hitscan sensitivity of a sprite or masked wall.
Objects which are hitscan sensitive can be hit be vector
weapons.
L Turns grid locking on or off. If the mouse cursor is pink then
grid locking is on. If it is white then grid locking is off.
There is no grid locking if the grid is turned off. Also,
grid locking will lock to nearby points.
J Join two neighboring sectors. Press J when mouse cursor is
over the first sector. Then press J again when the mouse
cursor is over the neighboring sector. The attributes of the
combined sector will be taken from the first sector selected.
K Mark a wall or sprite for motion
(blue = forward motion, green = reverse motion)
M Make a wall masked
S Places a sprite at the location under the mouse cursor. Refer
to the SPRITES section (above) for more information.
Alt-S Convert internal white sector (single-sided linedef) to a red
sector (double-sided linedef). Ctrl-Delete can be used to
reverse this. (NOTE: Outer loop cannot be converted!)
T Edit the low tag for the sector under the cursor.
Alt-T Edit the low tag for the wall or sprite under the cursor.
(See also: H and Alt-H. Level designers should not edit these
fields directly, as they are used internally by XSYSTEM.)
Ctrl-T Toggle the text captions for sectors, walls and sprites.
< | > Rotate a Sprite: Rotation has a precision of 2048 degrees, and
sprites can have an angle value range of 0 to 2047. Pressing
the shift key allows a finer degree of rotation.
Rotate a Sector: Sectors highlighted with RightAlt can also be
rotated using these keys.
[ | ] Rotate a sprite without wrapping. Generally used for marker
sprite rotation, allowing marked sprites to rotate several
times throughout a busy cycle. If you don't understand this,
talk to Peter.
F5 Display sector specific data
F6 Display sprite/wall specific data
Alt-F5 Edit sector specific data in the editing dialog.
Alt-F6 Edit sprite/wall specific data in the editing dialog.
While in the editing dialog, the following keys are active:
Esc Exit dialog and abandon changes
Enter Exit dialog and save changes
Left Previous control
Sh Tab Previous control
Right Next control
Tab Next control
Up Increase value by 1 or move radio button up
Pad + Increase value by 1
Down Decrease value by 1 or move radio button down
Pad - Decrease value by 1
Pg Up Increase value to next multiple of 10
Pg Dn Decrease value to next multiple of 10
Space Toggle check boxes
F10 Get next unused channel (rxID and txID only)
================
3D EDITING MODE:
================
CapsLock change zmode
Tab Copy to buffer
Enter Paste buffer
Sh Enter Paste shade and palette
Ctrl Enter Paste tile to all walls in loop
Sh Ctrl Enter Paste tile, shade, and palette to all walls in loop
Alt Enter Copy attribute (extra) information
< Rotate sprite CW
Sh < Fine rotate sprite CW
> Rotate sprite CCW or auto fix wall panning
Sh > Fine rotate sprite CCW
/ Set x and y repeat to default values
Sh / Set sprite x repeat to match y repeat
1 Toggle 1 sides sprites and 1 way walls
2 Toggle bottom wall swapping
Pad +/- Brighten / darken texture
Ctrl Pad +/- Set texture to max/min brightness
Pad 0 Set texture to 0 brightness
Pad arrow Adjust tile repeats
Ctrl Pad arrow Adjust tile panning
PageUp Raise z by 4 pixels
Sh PageUp Raise z by 1 pixel
Alt PageUp Enter new floor or ceiling height
Alt PageDn Enter new floor or ceiling height
Ctrl PageUp Put sprite on ceiling /
Move floor or ceiling to next higher neighbor Z
PageDn Lower z by 4 pixels Sh PageDn Lower z by 1 pixel
Ctrl PageDn Put sprite on floor /
Move floor or ceiling to next lower neighbor Z
Delete Delete sprite
B Toggle blocking
Alt C Change all tiles matching buffer to target
D -/+ Adjust depth cueing level
E Toggle expansion of floor/ceiling texture
F Flip texture
Alt F Turn on relative alignment in the highlighted sector.
If already on, change the first wall in the sector.
Relative alignment affects textures or slopes.
G -/+ Adjust gamma level
Alt G Change Global palette
H Hitscan sensitivity for masked walls AND sprites.
L Light bomb
M Toggle maskable wall
Sh M Toggle single side maskable wall
O Toggle orientation or post sprite on wall
P Toggle parallaxing for floor or ceiling
Ctrl P Change sky parallaxing type
Alt P Change palookup
R Toggle floor/ceiling relative alignment or change sprite
rotation type
S Insert sprite
T Toggle translucency
V Select tile
Alt V Select heightmap
W Change lighting effect waveform
F2 Toggle state
F3 Show sector OFF z position
Alt F3 Capture sector OFF z position
F4 Show sector ON z position
Alt F4 Capture sector ON z position
F9 Auto stair builder. Highlight a group of sectors,
then point to an adjoining sector floor or ceiling
and press F9. The floor or ceiling you point to will
be the lowest step.
F11 Enable/disable panning
F12 Toggle beeps
Ctrl Alt - | + Decrease/Increase sector visibility
Ctrl - | + Decrease/Increase light effect amplitude
Shift - | + Decrease/Increase light effect phase
[ | ] Change floor or ceiling slope
\ Remove floor slope
-----------------------------------------------------------------------------
94/12/18
This document created. I have renamed BUILD.EXE to MAPEDIT.EXE. I hope
this will prevent confusion between Ken's version and our version for Blood.
Also, this allows changes specific to MAPEDIT to be documented independently.
For maximum viewing pleasure, this document is formatted at 78 characters
wide, tab stops of 8, and contains no upper ASCII characters.
MAPEDIT supports loading custom palette remap and translucency tables. It
looks for NORMAL.PLU and TRANS.TLU in the currect directory. If they are
present, it will use them; if not, it will use the defaults in PALETTE.DAT.
I am phasing out the CNT files and replacing them with MPX (MaP eXtension)
files. This files store all the Blood specific information for sprites,
walls, and sectors. The CNT files were a hack to test out adding custom edit
controls to BUILD. I don't think anyone was using them for anything, but
just in case you were, MAPEDIT will automatically convert the CNT files and
remove them when you save changes.
For a discussion of the various fields and their meanings, see the
TRIGGERS.TXT document.
At present, only the sprite editing fields are active. Wall and sector
editing will be completed shortly.
-----------------------------------------------------------------------------
94/12/28
Completely replaced Ken's keyboard handler with my own. This will allow key
repeat to work for all functions, so now you can just hold down the pad plus
key to lighten a sprite, etc. This also gives me the ability to add new
functionality at will, without waiting for Ken to add a new function. To
this end, I've added stub code for Alt-P while in 3D mode. Currently, this
just gives you the tile selection screen, but it will be used for editing
tiled parallaxing skies.
An assertion failure that would occur when an invalid reference was noted
between a map and an mpx file has been changed. The invalid reference will
now be simply deleted. This allows you to delete the mpx file if you want to
trash all the additional map data.
-----------------------------------------------------------------------------
94/12/30
Due to some problems discovered in trying to handle keystrokes from within a
secondary ISR (Ken's code doesn't handle it well, and I can't work around it
because his functions are not reentrant), I've adopted a new strategy for
adding to key functions. I'm still using my own keyboard handler, so you'll
still get the benefit of key repeat.
I'm now 'subclassing' Ken's editinput() function by renaming his function to
kensinput() by directly modifying the object file. This is a true hack, but
it should work cleanly. However, I'll need to make the same change to future
versions of build.obj unless I can convince Ken to make a similar change.
Just to prove that it works, I've added a few extra key functions for 3D
mode:
Alt-L while the cursor is on a sprite will set the sprite's shade to -42 (the
maximum brightness without side effects).
Alt-0 while the cursor is on a sprite will set the sprite's shade to 0. This
should cause the sprite to have the same shade as the sector it is in (good
for floor and ceiling sprites).
I was going to add a function to build stairs automatically, but some of
Ken's variables for handling highlighted sectors are static and I can't
access them. I'll try to get him to change this and add this in a later
version.
-----------------------------------------------------------------------------
95/01/02
Make sure you run CONVMAP6 on ALL your maps. The easiest (DOS) method
to accomplish this is to type:
for %1 in (*.map) do convmap6 %1
Peter implemented a raw auto stair builder. Create your stair sectors in
2D mode, without (unnecessarily) changing the heights in 3D mode. In 2D mode,
use the R.Alt key to select all the stairs you want to auto-height adjust.
In 3D mode, point to a sector outside the selected stairs that you want use
as the base height for the stairs and press F9. Enter the stair height in
pixels. Use 8 or 12 pixels or risk death by immolation; other stair heights
will be too tall to walk over. Expect more cool additions in the future!
Peter made changes to the width of the character, as well as height at
which things can be walked over. If you notice any peculiarities let him
know.
Peter has also added sector lighting effects to BUILD, but they have not
been documented. Also, they don't work in Blood yet, but will very soon.
The next update you get will be probably executables only.
Note from Nick: Try to make your bonus, one-up and weapon sprites
non-blocking. Thanks!
-----------------------------------------------------------------------------
95/02/06
Key handling has changed (again), and is now much cleaner, thanks to the
changes Ken made to his code during his visit with us. I'll no longer have
to keep hacking build.obj.
Along with Ken's changes, a bug crept in which would cause F5-F8 to crash if
you pressed them in 3D mode. This has been fixed.
Sector lighting effects are now functional and work in Blood as well. You
can edit them in 2D mode or 3D mode. See the new keys documented above. I
may be making another change in the implementation of sector lighting to
allows walls to be modified, but this shouldn't affect sectors which you have
already worked on, so bang away on this feature.
The MPX format has been enhanced again. It now contains version information,
so should be easier to update periodically. Older format files are
automatically converted when loaded. With this new version, you'll be able
to add author name and level name to the mpx files (editing not yet
implemented, though.) Global visibility is now saved in the mpx file and
properly loaded in Blood.
You can now tile parallax skies. See the new keys documented above.
-----------------------------------------------------------------------------
95/02/08
Updated sector shading effects code. Instead of storing the base floor and
ceiling shade, the MPX structure now has a single field which is the
current relative shade. By adding and subtracting this offset, it is
possible to do relative shading effects to floors, ceilings, and walls
without extra storage. The only overhead is some additional processing time,
since I now call DoSectorLighting() and UndoSectorLighting() once per frame.
The sectorExt dialog now has checkboxs for shading floors, ceilings, and
walls, so it is possible to apply lighting effects to any or all of these.
Also, for lighting effects to take place, the sector status must be ON. I'm
going to get the message system working Real Soon Now, and the first thing
I'll test is turning on and off lighting effects.
A major bug was fixed in the code that ensured referential integrity between
the sprite, sector, wall and respective Ext structures. I believe that this
was THE bug that was causing the occasional weird sector lighting values.
Please let me know ASAP any other problems of this nature.
When loading maps, all item and creature sprites are automatically
sized to their proper x and y repeats. This is intentional, and will ensure
uniformity between levels. There is no such thing as a miniature zombie!
Sprite Ext structures are automatically added for creatures when maps are
loaded. This adds the proper type and view flags based on picnum.
-----------------------------------------------------------------------------
95/02/14
Did a major restructuring of source code. This was a sorely needed cleanup
to produce organization out of a loose collection of hacks. This should make
future changes and additions much easier.
Fixed a problem with the IncBy and DecBy inlines functions which caused
weird step values when you used the PageUp and PageDn keys in dialogs.
-----------------------------------------------------------------------------
95/02/18
Parallax sky tiling should be working again. I had an incorrect assumption
about the way pskybits works. I thought it represented the width of the sky
tiles, but it actually indicates the number of tiles. Go figure.
I've assigned the ext editing functions to the Alt combinations of F5 and F6
instead of F7 and F8. I'm limited to F5-F8 in 2d mode for adding features,
so I'm going to overload these keys for all their worth. Prepare for the
worst.
Rewrote initialization code so that it uses the same module as Blood. You'll
now see the same initialization diagnostic messages in both. This means that
MAPEDIT also uses the same gamma correct and sin tables as Blood, and loads
information from the BLOOD.INI file.
MAPEDIT loads the gamma correction from and writes changes to the BLOOD.INI
file. Do not use F11 to change the gamma level. Instead use the G +/-
combination, the same as in Blood. The gamma level is displayed momentarily
when changed.
Changed key combination to change the depth cueing (visibility) to D +/- for
compatibility with BLOOD.
-----------------------------------------------------------------------------
95/02/18
Fixed a bug in the key handler which caused the (G)oto command to stop
working in the tile selection screen. The solution was to change the key
combination for this to Alt-G. Essentially, anything you used G for
previously, use Alt-G for now (except setting gamma correction).
-----------------------------------------------------------------------------
95/02/27
This version includes a substantial rewrite of ALL 3D editing keys. Please
report anything that's not working as it should.
PageUp and PageDn in 3D mode now support fine movement (1 pixel) and coarse
movement (4 pixels). Use shift for fine movement. It did this before, but
not correctly all the time due to the way I was intercepting the keys.
Sprite fine z adjustment now works for highlighted sprites. Coarse z
adjustment now moves to the next multiple of 4 pixels, rather than in steps
of 4. You can no longer move a floor above a ceiling or vice versa.
Fixed coarse sprite rotation so it moves to the next multiple of 256.
Fine rotation now moves to the next multiple of 16 instead of 1.
Changed screen capture key to PrintScreen. Now I can use F12 for something
more useful.
You can no longer wrap shades by going too dark or too light. Shades are now
correctly clipped at their max values.
Changed keys for setting shade to 0, min, or max. The key combinations for
setting texture brightness are now Ctrl Pad + for max brightness, Ctrl Pad -
for min brightness, and Pad 0 for 0 brightness. I would have done this
originally, but I couldn't without rewriting a fair amount of the 3d editor
code (which I now have done). These key combinations now present a
consistent metaphor: Pad +/- is exclusively used for brightness; and Control
in combination with a step key sets a min or max.
Fixed a bug in which any sprite inserted that had a tile height of 32
pixels or more would automatically be set to blocking. It will now
automatically set sprites to blocking only if there is something other than a
sprite in the tab buffer.
Added some clicks and beeps for feedback. Let me know if they are too
annoying.
Ctrl Enter on a parallax floor or ceiling will now paste to ALL parallaxed
floors or ceilings, not just neighboring sectors.
The key to auto adjust panning will no longer change orientation of any
walls. This means that some walls will not automatically be aligned, but you
would have had to fix these walls anyway.
This version of MapEdit includes a new 2D animation editor. You start this
editor by using F7. See the new animator editor keys documented at the top
of this file. Call me if you need help. Level designers do not need to use
this tool. The animation editor will probably not work in unchained mode or
screen buffer mode. Try it in these modes at your own risk. You have been
warned, Nick!
-----------------------------------------------------------------------------
95/03/05
Fixed a bug which would cause extended keys (e.g. Page Up and Delete) to be
dropped if NumLock was on. This bug was introduced when I added code to
prevent filling up the keyboard buffer. These keys are actually transmitted
as multiple make codes when Num Lock is on, hence the bug.
Fixed a bug in the debug version of the heap. Sheesh! It would dassert out
occasionally when it was unable to allocate a block when it thought it had
enough memory. I wasn't subtracting out the space used for the fenceposts.
MapEdit now uses our heap and resource caching system, so it should lurch
less.
I replaced the gettile() function, so now tile histories for walls, ceilings,
floors, masked walls, face sprites, and flat sprite can all be maintained
independently. Tile selection should now be significantly faster.
-----------------------------------------------------------------------------
95/03/06
Added an assertion to check for overflow of the ext arrays. I found out that
some maps had sectorExt structures for nearly every sector, and were
overflowing the array!
-----------------------------------------------------------------------------
95/03/24
BUG FIXES
Fixed problem with allocatepermanenttile not marking the block of memory as
locked. It could get added to the purge list during precaching....
Added some missing modify [...] registers to an inline function in the
dynamic fire system. This would inevitably cause problems when
optimizations were enabled.
Fixed the hang on exit problem. Ken's unintengine function was closing
STDIN. Replaced his function to fix.
-----------------------------------------------------------------------------
95/03/26
Fixed a bug with adjust x and y repeats of wall textures (you couldn't). You
can now also match x and y repeats by pressing shift / on a wall.
Added preliminary light bomb.
-----------------------------------------------------------------------------
95/04/02
When switching between 2D and 3D mode, I now do a reference check for all ext
structures. This will ensure that any editing done in 2D mode is
reflected immediately in 3D mode.
Ctrl-Enter will no longer copy shade or palette values. If you want to copy
shade and palette values to every wall in a loop, use Shift-Ctrl Enter. Note
that the previous function of Shift-Ctrl Enter has been removed.
-----------------------------------------------------------------------------
95/04/07
MAJOR FORMAT CHANGE. This version requires you to run CONVDB3 on all your
maps. This new format eliminates the need for separate MAP and MPX files,
and adds many new fields, support for which will be added *soon*.
You can now adjust the floor or ceiling z of a red sector from outside the
sector. Just point to one of the walls and press page up or down. This new
feature makes it easy to open closed vertical doors.
Increased angle resolution of light bomb. Expect it to be about twice as
slow.
-----------------------------------------------------------------------------
95/04/07
BUG FIX. There was a problem which resulted in an incorrect file CRC if you
deleted sprites and then saved. I wasn't checking the statnum of sprites
which had an attached xsprite.
BUG FIX. If you started MAPEDIT and created a new map, all sectors would have
an extra field of 0 instead of -1. This caused an assertion failure when you
tried to enter 3d mode. This is a kenbug which I worked around by
initializing all extra fields to -1. There is still a problem if you create a
new map after editing another map. When you add sectors, they will get extra
references to old xsectors, xwalls, and xsprites, respectively.
BEHAVIOR CHANGE. The program now automatically adds xsprites for all sprites
and sizes them correctly before saving.
-----------------------------------------------------------------------------
95/04/07
BUG FIX. All extra fields of 0 are now set to -1 on loading. I'll fix this
nasty bug yet!
BUG FIX. Hooked my unitialization routine into exit so that keyboard
interrupt and timer rate gets restored, even on crashes. This should cure
the occasional and bothersome runaway clock.
-----------------------------------------------------------------------------
95/04/18
Separated code for tile selection into it's own module.
Made the sequence editor use the new tile picking code.
-----------------------------------------------------------------------------
95/04/31 - NCN
BUG FIX. Fixed a bug that screwed up masked walls. MAPPERS: You may not have
seen this bug since it occurred in an interim version.
The H key now toggles the hitscan value in 3D mode for sprites as well as
masked walls. Use Ctrl-H in 2D mode.
The Alt F key combo was added in 3D mode to change the relative alignment of a
sector. Press it once to make a sector relative aligned. The key may be
pressed again (and again) to change the first wall in a sector. To check which
is the first wall, press TAB in a sector and note the first wall number, then
press Alt-TAB on each wall to figure out which one it is.
IMPORTANT NOTE: Only use Alt-F in sectors NOT containing other sectors!
Added crude menus to sector dialog. To edit an extended dialog box,
highlight one of the menu selections and press Enter. When you are done
editing in the extended dialog box, press Enter to save the dialog changes
and return you to 2D editing mode. If you wish to go back to the menu,
press Escape. Any changes you have made will be held until you either press
Enter again, or press Escape to abort any changes you have made.
Added a txID verification key to the sector and sprite trigger dialog boxes.
When the txID field is highlighted, enter a number and press the '?' key. This
will tell you whether the txID you entered is used and by what. I intend to
expand on this for the rxID field and add the same features to the wall
dialog.
Added wind currents to sectors. There are now 8 hard-coded wind levels, which
are selectable by changing the wind field in the sector dialog. If the field
is 0, then no wind is generated in that sector.
Added water current data to sectors, which can be edited in the sector dialog.
First select a water depth from 0 to 3: 0=no current, 1=tread, 2=wade, 3=swim.
Next select the speed and angle. If a sector has relative alignment set, the
initial current angle will be determined by the angle of first wall in the
sector, and the 'angle' field will is added to the wall angle.
Added key support for certain sector effects. Change the key field in a sector
to indicate that the sector requires a key to operate.
MAPPERS: We will be moving from the tag system to the new extended system, a
few effects at a time. Please watch for changes in my maps and this text file
to show you which effects have changed. Some things, like one-shot triggers,
don't work yet, but set the fields anyway for compatibility and so you
won't have to go back and edit them later. For now, you should be able to go
back through all your maps and make switches and keys function, and that
should eat up a few days. Good luck!
Check out the following sector types: Lift, Swingdoor, Topdoor,
Bottomdoor, and Floor Pad. Use my example TRIGGERS.MAP to figure some of it
out, or call me if you need to. Eventually we'll have docs explaining how this
stuff works.
-----------------------------------------------------------------------------
95/05/02 - NCN
Fixed trigger bug with floor pads. Check out the expanded physical trigger
flags for sprites and sectors. MAPPERS: Make sure the following things are
applied to your maps: 1) All switches should be non-blocking with the
Push and/or Impact triggers set. 2) Door sectors currently need the Push
flag set. This will change as soon as wall triggers are done. 3) Lifts will
need the Push flag set to function while the player is in the sector, unless
a switch is installed at the top and bottom of the lift, either inside or
outside the shaft, up to you. The switch sprite will not move with the lift.
You can use the physical triggers with ANY sector type, including NORMAL.
Physical triggers for sectors of type NORMAL will not change state when
the trigger is activated. The "only once" trigger now works with the NORMAL
type of sector. Expect the same additions to all sector types soon.
BUGS/PROBLEMS:
* Lifts no longer work when the action key is pressed while inside,
though they will activate if you are next to them. This will be fixed
in the next version.
* Wall flags are still not implemented. Expect them also in the next
version. These will be used to signal door sectors to open.
NOTES:
* Shrink all switches to 40x40. I'll try and add this in next MAPEDIT.
* Shrink all gargoyle statues to 40x40. Same deal.
* Shrink all chairs to 40x40. Okay, this one too.
-----------------------------------------------------------------------------
95/05/07
When relative sector alignment is set with Alt-F, flipping and xy swapping is
cleared. This should fix water current problems.
-----------------------------------------------------------------------------
95/05/08
Added new fields to sector effects dialog. Redid all dialogs in character
coordinates and tightened up display. Non-tab control now are highlighted.
Add F2 to toggle state in 3D mode.
-----------------------------------------------------------------------------
95/05/10
Added display of wave form when 'W' pressed in 3D mode.
Modified xsector and xsprite dialogs to access new waitTime and busyTime
fields. These fields control the speed of door movement (time in .1 secs),
and the delay before reset (time in .1 secs). If your doors or momentary
switches don't seem to be working, check the values in these fields.
Added xwall dialog.
-----------------------------------------------------------------------------
95/05/12
Provided a workaround for a memory allocation bug which would cause the
editor and blood to hang in any mode which required screen buffering. This
workaround will NOT work in stereo display modes -- I need an engine update
from Ken to fix this.
-----------------------------------------------------------------------------
95/05/19
Added trouble-shooting section at top.
-----------------------------------------------------------------------------
95/05/24
Added lots of great new stuff that will be documented shortly. Take a look at
the sample maps to see how most of the effects are accomplished. You will
notice that MAPEDIT has changed significantly.
BLUE "SPRITES" are controls for SLIDE type sectors, and come in pairs. GREEN
"SPRITES" are controls for ROTATE type sectors.
Use the controls to make rotating and sliding doors or other gimmicks. If you
delete a control accidently it will be reinserted, though the angles and
position are not retained. Sorry. Don't delete controls by accident. :)
Here is a mini-tutorial on how things work, please run the maps then look at
them before you post a bunch of questions. Everything should be the same for
raising and lowering sector doors.
For a swinging door:
* Create a red-line sector for a door and raise it to the height you want it.
* NOTE: Doors should be created in the OPEN position.
* Use AltF5 to select a sector type of "Rotate" in the sector dialog.
* WARNING: Do NOT select the "Swing door" type. It won't work.
* Set the triggers, keys, and busyTime/waitTime EFFECTS in the same dialog.
* NOTE: A green control is automatically inserted (visible in 2D mode only!)
* Place the control on the pivot point of the sector.
* Change the angle of the green control to point right. O---->
* Now, adjust the angle of the green control to be the angle it needs rotate
to OPEN from the CLOSED position. This is a bit confusing but you'll get
the hang of it. Look at the swinging doors in MAP01-MAP04.
For a sliding door:
* Okay, I'll send this to you guys in e-mail. There is a simple example in
MAP01.MAP. Look for the BLUE ARROW. Yes! The blue arrow points in the
direction of movement. (Let the other teams try and beat that!)
More on sliding doors later, as well as morphing walls. For now just
experiment with triggers and slide/rotate walls. Good luck.
-----------------------------------------------------------------------------
95/05/28
Changed code that automatically inserts marker sprites so they start out at
angle 0. O----> This only effect markers in rotate sectors.
-----------------------------------------------------------------------------
95/05/29
Added combination switches. These are multi-way switches which change to the
ON state when their data field equals the value set in lotag. The sprite's
hitag contain the number of values that the switch will cycle through. These
switches can be used for combination locks, or even counters. See my map
FXTEST for examples of both.
Changed the way that slide sectors work so you only need to tag the walls
that you want to move, and the code figures out which vertices need to be
updated. No more stretching wall bullshit.
Added support for sprite link messages so a master combination switch can
control slave switches.
-----------------------------------------------------------------------------
95/05/30
Created MAPEDIT.INI for storing various edition options.
Fixed an overflow problem which could cause long lines to be unselectable.
Overhauled line selection so it is zoom dependent, and controlled by a
configurable distance threshold, HighlightThreshold in [Options] of
MAPEDIT.INI.
Fixed a lot a subtle problems in the light bomb, which would cause certain
reflections to be calculated incorrectly. I also (hopefully) eliminated
problems with overflow in the ray tracing algorithm. Sometimes fixed point
math sucks. You can control various aspects of the light bomb through
configuration options in MAPEDIT.INI.
Changed Ctrl-Shift-Enter so it only pastes shade and palette to all walls in
a loop. Previously, it would copy over textures as well. This is the way
that I really intended it to work.
-----------------------------------------------------------------------------
95/05/31
YES! I think I found a solution for maintaining marker sprites that will
ensure references don't get hosed. In level designer terms, this means you
won't occasionally lose slide or rotate markers.
-----------------------------------------------------------------------------
95/06/01
This time I _really_ think I've fixed the marker sprite problem. There
shouldn't be any changes required to your maps, and the marker sprites should
stay put. Let me know any problems ASAP.
-----------------------------------------------------------------------------
95/06/02
Moved troubleshooting section to the new XSYSTEM.TXT file, which will
document the trigger system, sector, wall, and sprite effects, and other
crucial information for level designers. This file will continue to document
editor changes, but won't discuss specific aspects of effects.
-----------------------------------------------------------------------------
95/06/04
Fixed a mouse selection problem which would cause the wrong texture to be
copied instead if the mouse was at an extreme edge of the screen. The bug is
in Ken's code, so the only thing I can do is limit the mouse in by a pixel
from all the edges.
You can now use PageUp and PageDn on the lower wall of a bi-textured wall to
move a red sector up and down.
Player height is now identical in MapEdit and Blood. Just remember to put
your switches lower in areas where the player will be in the water.
Added sector visibility keys: Press CtrlAlt+ and CtrlAlt- to change the
sector visibility values. Don't abuse this feature or Nick will kill you.
-----------------------------------------------------------------------------
95/06/04
========================================================================
!! READ THIS FIRST !! (please)
========================================================================
Save ALL of your maps before running the new conversion utility.
Once you've saved your maps in another directory or ZIP file, run the
CONVDB4.EXE conversion utility. You can use wildcards, so typing "CONVDB4
*.MAP" is acceptable.
Next, run "MAKEPLU 64 96" before viewing, editing or playing any maps.
========================================================================
* From now on all Door, Lift and moving stair types should be created using
the "Z Motion" sector type. (These are automatically converted when CONVDB4
is run on version 3.x maps.) The Z values cannot yet be viewed in the 2D
dialogs, but are displayed when created or changed in 3D mode. NOTE: Lift
types will be converted, but you must manually go in and set on and off Z for
each of them. Sorry. It was this, or linking the entire engine into the
converter, or wasting time rewriting code.
To create and set the default on and off Z values for a "Z Motion" sector:
First, make the sector a "Z Motion" sector using the Alt-F5 dialog.
Position the sector ceiling and floor heights where you want them to be when
the sector is in the OFF position. For doors, it is easiest to make OFF the
CLOSED position. Point at the Z Motion sector (ceiling, floor, adjacent
non-white wall, or interior white wall) and press Alt F3 to set the OFF Z
values. Pressing Alt F3 will set the Z values for both the ceiling and floor,
so you don't have to press it twice.
Now position the ceiling and floor heights where you want them to be when the
sector is in the ON position. (Best in the OPEN position.) Point at the "Z
Motion" sector and press Alt F4 to set the ON Z values. Again, this only has
to be done once, as it will autmoatically set the ceiling and floor ON Z