Mapedit Primer 99 (Rev 1.0)
Legal Stuff
Blood ä is a Trade Mark of Monolith Productions Inc. This document is not made or supported by Monolith Productions, GT Interactive Software, The WizardWorks Group, or any of their affiliates and subsidiaries.
Build Engine, Editor, and Tools by Ken Silverman
This help file by Jeff Morris, 1999. Contributions and corrections can be sent direct by email to: zippy
My Internet home page is at http://
You may freely distribute this document provided the document is distributed in its entirety, with all of the acknowledgments and recognition of property and other rights intact.
Foreword
The purpose of this text is to help complete beginners to install and use the editing tools provided with the registered version of Blood. It will suggest a way for you to set up, and help you get familiar with the map editor.
Zips Mapedit Primer doesnt try to teach you how to make maps. Map-building is as much an aesthetic challenge as it is an engineering one, and that aspect is way beyond the scope of this.
Forgive me if it seems incomplete in parts. I had no special access to the editors inner workings, and like just about any other author on this subject I say it as I find it. Your own interpretation may well differ from mine, but thats life I suppose.
Inevitably, youll want more advanced help on construction techniques and effects. Theres plenty of experienced help available on the World Wide Web. Notable contributions include the works of Arjan Van Rossen ( arjan@ ) and Michael Shire ( shirem@ ) among many others.
But the best how-to lessons come from analyzing maps made by professionals. You probably know who they are, and youll be shown how to get at some of their greatest creations. Examples of independently produced maps also abound, and the biggest selection can be found at http://
I hope this at least gets you past the first few hurdles, so you can start to explore and experiment. As any Mapedit user will tell you, thats how you really learn to use it.
ZIP J
Kent, England, February 1999.
PART ONE
1.0
Installing Blood Tools: The Issues
1.1
What Version Of Blood Do I Need?
You should aim to use Blood version 1.11. This primer was prepared using registered Blood (CD version 1.0), which was upgraded to 1.11 with a program called R0011.EXE.
This patch program (2.66Mb) can be down-loaded free from a number of sources.
Principal among these is Monoliths official Blood Internet Site at http://www.blood.com.
Its always a good idea to obtain and use the latest version of the game for playing purposes, but choosing version 1.11 for map making will ensure your efforts can be seen by the widest possible audience. (Maps made with the additional art and actors in Monoliths Plasma Pak add-on can only be run by the minority of users who have the add-on installed.)
1.2
How Do I Get My Hands On The Blood Tools?
Blood Tools are distributed with the registered version of the game. Logically enough, theyre in the \TOOLS folder of the CD, and they have to be installed to your hard disk before you can use them.
Among other things, you have to understand that the editing utilities are provided as-is, without official support, and with no liability attached (other than your money back) if your system goes belly-up through using them. Your choice.
Read your License Agreement now (LICENSE.TXT in your Blood folder). Youre deemed to have accepted the terms when you use the software. You make of it what you will, and sometimes itll bring you to your knees. It can be great fun, though.
1.3
Installing Tools To Your Existing Blood Folder
To work properly, Blood Tools have to be installed into a folder containing a working copy of the game. You need to consider now what impact there might be if you incorporate them into your existing Blood folder.
Over time, you will create many new files (your maps). Some of them will become corrupted and unreadable (honest, they will) and youll often have to clear out the trash. You can keep master copies of your maps in a separate folder and access them from there. But due to limitations in the editors file handling, you will be constantly sifting through your main folder for recently-saved files..
Worse than that, its all too easy to accidentally corrupt your essential game files, which would not be very cool.
So if you have to share your playtime Blood folder with the map editor, then at the very least you should make back-up copies of the (huge and crucial) resource files BLOOD.RFF and SOUNDS.RFF.
IMPORTANT -- if prior to installing the tools you have already run a patch program to upgrade your version of Blood (for example, if you have downloaded and run R0011.EXE to bring your original version 1.0 up to version 1.11) you must run the patch again once the tools are installed. The patch will upgrade the tools to the same version as your game files. This step is vital.
1.4
Creating A Dedicated Session Folder
If you have lots of free space on your hard drive, the ideal approach is to create a separate, fresh Blood installation, complete with tools, which you can use for all your map editing and testing misadventures.
This may seem extravagant, but it will bring considerable peace of mind to know your main game installation is safe since youre working from another folder, or even another partition on the same hard drive (not a different hard drive check the license!).
Youll also avoid the possibility of problems caused by the presence of non-standard files created or modified by game add-ons, such as Monoliths Plasma Pak and SunStorms Cryptic Passage.
Create the new folder with a name such as MAPEDIT (whatever, make it 8 characters or less for the sake of DOS-compatibility), and install Blood into that. Then run Blood Setup and test to make sure the new copy of the game runs OK, including the mouse functions. When you install the Tools, specify this new folder as the destination for the installer. Finally, you can run the appropriate patch to upgrade the entire game-plus-tools installation in one hit.
Note this -- If you choose instead create a second Blood folder by simply copying & pasting your existing Blood folder under a new name, you should search the duplicate folder and delete from it any demos, saved games, screen-shots and other space-wasting files (the ones mentioned have the file types .DEM .SAV and .PCX. The copy & paste method may prove to be a chore compared to a straight install from CD, and I dont recommend it.
1.5
Install for DOS or Windows?
Blood and its Tools are MS-DOS programs, and wherever practicable they should be run in true MS-DOS mode. However, there may be issues about your system which force you to launch Blood within Windows (in which case youll have already levered-off the Windows flag keys, or found some other way to disable them!). If so, you should edit your shortcuts Properties | Miscellaneous tab, and disable (uncheck) the Alt+Tab Windows shortcut key.
1.6
Installing Blood Tools: The Method
Before you install the tools -- as with any impending installation, run a hard disk checker and Defragmenter to ensure the destination drive is in good shape. The editor makes extensive use of the mouse, so you should ensure that the DOS mode mouse driver is loaded and that the device functions properly. A two-button mouse is quite adequate.
From the \TOOLS folder of the CD, run INSTALL.EXE if youre setting up in DOS, otherwise run WINSTALL.EXE for a Windows setup. Follow the on-screen prompts. When the process completes, re-run the upgrade patch and there you are, all tooled up for some serious map-making.
1.7
OK, Job Done. What Now?
RTFM, of course. But first, heres some need-to-know stuff about the installed utilities.
MAPEDIT.EXE is the editor. This is associated with the MAPEDIT.INI file and MAPEDIT.TXT (the famous Mapedit Readme). I suggest you print out the Readme file and keep it handy. Personally, I cant escape the feeling that this document was rushed, but considering its provenance it should prove a valuable reference as you start to pick up the pieces and for some time thereafter.
ARTEDIT.EXE isnt what it seems. You can browse the art but you cant modify it, at least not in the way youd probably like to. The terse ARTEDIT.TXT file is provided for your perusal. Its use is beyond the scope of this primer, and its best avoided unless you really know your stuff.
BARF.EXE is the Resource Builder, and the magical key to extracting the games built-in maps and sounds. The joy of BARF will be explored later.
2.0
Mysteries Of The Edit.
2.1
Before Launching Mapedit
Throughout this section, the term session folder refers to the sub-directory of your hard drive where a working copy of Blood and Tools is fully installed and ready for map building and editing.
Before you fire up Mapedit, there are some things to understand about the way it handles your inspired creations, and how you can prevent them being unceremoniously lost or obliterated.
You can and should create a sub-folder, either within the session folder or elsewhere on the same logical hard drive, as a place to store the master copies of your map files. The editor will not work with files located outside the current hard disk partition.
My own session folder is called E:\MAPEDIT and my safety-deposit folder is E:\MAPEDIT\USER. Blood maps have the file type extension .MAP (Oh yes!).
Now a look at the editor. It will be an advantage to have your printed official Mapedit Readme to hand. And to preserve the proper sequence in what follows, make sure theres no NEWBOARD.MAP in the session folder -- the editor will automatically load NEWBOARD.MAP if this file exists.
Remember that Mapedit has to be run from within your session folder. At a DOS prompt, CD\ to the session folder (or make sure its specified in your Windows Shortcut to Mapedit as the Working: folder, on the Properties | Program tab).
2.2
Mapedit Startup: Command Line Options
Provided your session folder doesnt contain a map called NEWBOARD, Mapedit can be started directly, opening a blank board in 2D mode, by simply entering its name on the command line --
>mapedit
This blank board becomes the working file, and by default its given the name NEWBOARD (although it doesnt become a disk file until you save it).
You can prevent this name being used for the working file each time you launch Mapedit, by including in the command line any other legal file name you choose. Just as with the default, the named file need not actually exist. Names which contain no path information refer to maps in the session folder itself, and may be used freely --
>mapedit mymap.map
The .MAP file-type is assumed, and can be omitted. Only the name of the working file changes, and in all other respects the editors startup behaviour is the same. If youre working from within a DOS batch program which alternately runs MAPEDIT.EXE for editing, then BLOOD.EXE for testing, this feature is very useful.
A word of warning here. Remember that when maps are auto-loaded from the command line, the editor opens them in 3D mode. Just be sure any map you load this way is actually capable of being viewed in 3D mode, or the editor will crash (NEWBOARD.MAP is often the culprit).
Mapedit doesnt fall over if it cant physically locate a file, it just opens a blank board in 2D Mode. However, it does retain the working file name if you included one at startup, and will attempt to apply that name in subsequent file-save operations during the current session.
Be careful -- the editors file handling capability is limited, and this can cause trouble if you try to auto-load a map from somewhere other than the session folder. Long path-names which refer to external maps are subject to truncation, with unpredictable results. So, avoid using a command line like this --
>mapedit \mapedit\user\zippy\mymap
Attempting to save a map with a long name thats bound to get fragged can bring you no end of misery. The file will end up with a strange title, and could end up just about anywhere, including the root directory of your hard drive. Its also one of many interesting ways to crash Mapedit and hang your system, after which you wont know if it really was saved, or what name it ended up with, which is not so good really.
This ill-behaviour can drive you nuts when you dont expect it, and until youve grasped its limitations I suggest you avoid starting Mapedit with very lengthy filenames. Its safer to locate external maps using the {L}oad wizard on the editors Command Menu, described later.
To start Mapedit for the first time, just enter its name at the DOS prompt.
If Mapedit fails to load, or doesnt appear as described in the following text, you should double-check that your session folder is properly set up and that your installation is healthy. Refer to the description of those steps set out earlier.
2.3
The Editor Display - 2D Mode
Once Mapedit has loaded successfully, youre presented with the 2D Edit Mode screen.
The display is divided into an upper and a lower panel. The lower part is made up of a number of smaller windows. Try to resist the temptation to go flying around the board until these areas have been described.
Some editing operations are done only through the keyboard, some only with the mouse, and some use a combination of both. The various controls will be introduced in no particular order, theyll simply be described as they become relevant. Curly brackets enclosing letters and words identify an individual key, combination of keys, or mouse button. A two-button mouse is assumed, with left and right buttons indicated as {LMB} and {RMB}.
2.4
The Command Menu
Before delving any deeper, get to know and love the command panel. Located along the top edge of the lower part of the display, this window is shared with Mapedits messaging system.
Press {Esc} to switch this panel to its Command Menu mode.
Be careful at this point. You should avoid issuing a Save command while the board is empty. If you were to press {S} now, Mapedit would immediately save the empty board with the default name, NEWBOARD.MAP. You might regret this later.
The file commands are self-explanatory, but there are some points to note.
{N}ew Resurrects the default file name, NEWBOARD.MAP
{L}oad Navigates to any map from any folder on the current logical drive
{S}ave To the session folder only - regardless of where a map originated
Save {A}s Change the name, maximum 8 characters, otherwise just like Save
{Q}uit Prompts you to save changes, whether or not you made any
Press {Esc} again to switch back to the message mode.
2.5
The Board
The upper two-thirds (or so) is a view of part of the board, which is presently blank. The board is a square measuring 262,144 units on a side. In 2D view, a pixel has 16 units on a side, so the board can also be said to measure 16,384 pixels square.
The board is marked out with a grid. This has six discrete resolutions, plus an Off state. You cycle through the resolutions 0X, 1X, 2X, 4X, 8X, 16X and 32X by repeatedly pressing {G}. The default resolution is 4X, and at this resolution each square in the grid is 16 pixels, or 256 units, on a side. To return to the default, find the Off (0X) position, then tap {G} three times.
The small numbers at the extreme top right are the current frame rate, the number of times per second that the display is being re-drawn. Generally, this number goes down as the number of objects on the visible part of the board goes up.
2.6
Point-Of-View Indicator
The white arrow shows your current Point-Of-View (POV). You move it about with {Crsr} (the cursor arrow keys), just like getting around in the game. And like the game, theres a sideways strafing movement available, but here its with {keypad 7} and {keypad 9}.
While the POV occupies a void part of the board its stuck fast, and can only be made to rotate about its centre with {Crsr}. Once youve defined a valid space (a sector), the POV can be placed inside it and driven around. The POV always remains fixed at the centre of the display, and movement happens by virtue of the board being scrolled around it.
Observe the status window at the very bottom-left of the screen. Here the POV is represented in terms of its east-west (x) and north-south (y) co-ordinates, and its facing angle (ang).
X-values are positive toward the right, negative toward the left. Y-values are positive toward the bottom and negative toward the top. At startup, with no map loaded, the POV is set below and to the right of the centre of the board, facing north --
x=32768 y=32768 ang=1536
If that angle value looks strange, its because of the way Mapedits compass is calibrated. A POV angle of 0 degrees faces to the right, or due east. The angle increases clock-wise, with 512 degrees between the cardinal points, for an impressive 2048-degree circle. Spin the POV, and watch the read-out.
2.7
The Mouse Cursor, Board Origin and Player Start Position
The red cross-hair is the mouse cursor. It moves in exactly the way youd expect. The cursor is aware of objects nearby, so that the nearest object to it is automatically highlighted, and will begin to flash. Key operations in 2D mode will apply to the highlighted (or selected) object.
Clicking and holding the left mouse button {LMB} locks on to selected objects so they can be dragged. {LMB} is also used in combination with certain other keys to select a group of objects for a variety of purposes. Right now, with no objects on the board, clicking {LMB} has no effect at all.
Now take a look at a bigger chunk of the board by holding down {Z} and zooming-out to the fullest extent. As your field of view widens, the POV shrinks to a tiny white dot, but notice it remains in the centre of the display. Whenever youre in wide-field view, you can always find the POV by simply zooming-in with {A}.
When youre zoomed-out all the way, you should be able to see a second white spot, above and to the left of the POV. Thats the origin, the centre of the board-universe, where x=0 and y=0. Theres something of interest right there, so you need to visit the centre of the board now, and heres how.
The right mouse button {RMB} moves, or snaps the POV to the position of the cursor. Well, thats not strictly true, since the POV never actually leaves its fixed position at the centre of the display. What really happens is that the cursor locks to the board at its present position, and both the cursor and the board are relocated, to line up under the POV. Anyway, {RMB} is the nippy way to get around the board, and youll use it a lot.
Centre the cursor over the white spot at the origin of the board, and click {RMB}. Now the POV will be quite close to the origin (or vice versa, depending on your interpretation). Press {A} to zoom in on that area, sufficiently that you can clearly see a brown arrow facing east (ang=0, right?).
This brown arrow is the default starting position (SP). One of these is always present somewhere on every board, and its a very important element. You can change the SP at any time by locating the white arrow at a suitable place, then pressing {Scroll Lock} to set that point as the new start position.
Press {Scroll Lock} now, and youll see that the SP snaps to the exact position and angle of the POV, like a shadow. Note that the SP is the larger of the two arrows, and its not possible for one to completely hide the other. (Incidentally, the action you just performed is considered to be an edit, and Mapedits auto-save backup cycle will now begin.)
This congress of the arrows is another important ritual in Mapedit, but watch out for the sting in the tail. When the POV is located in a void area, as it is now, a 3D view of the surroundings cant possibly be constructed. Try switching to 3D view with {keypad Enter}, which normally toggles between the two modes.
Mapedit recognizes that the white arrow is in a void and reports --
Arrow must be in a sector before entering 3D mode.
Think of that as the 3D View Rule. Youll encounter it often, and it makes a lot of sense. But all that sense can go down the pan, depending on how you load maps into the editor.
Maps opened from within the editor (using the internal {L}oad command) are initially presented in 2D view. The POV arrow is always automatically aligned to the maps SP, regardless of where that is.
But when the editor auto-loads a map from the DOS command line at startup, its the 3D view thats opened first. Again the editor aligns the POV to the SP, and still this is done without regard for the validity of the start position. If the map was saved while the SP was in a void area of the board, the aligning of the arrows invalidates the POV, breaking the 3D View Rule, and crashing Mapedit.
Youll likely get a single opportunity to safely quit the editor by pressing {Esc} then {Y}. Beyond that point the session will be unrecoverable, and in all probability your system will hang.
2.8
The Object Counter
This is the read-out in the window at very bottom-right. Like a fuel gauge in reverse, it starts empty and fills up as you go. Apart from discovering the limits on the number of objects it can manage in a single map, you can deduce a few things about the way Build works by observing this meter. Make of it what you will.
2.9
The Editing Dialogue Zone
This is the large mid-section of the lower panel, where a data sheet dialogue will allow you to view and modify the multitude of settings and attributes which define individual objects in your maps.
Every object you create is endowed with a basic set of attributes, or properties. Many objects need no more than the basic set to fulfill their function, while others call for this information to be modified to achieve the right appearance, movement or sound.
This stuff is called XObject data, and thats what youll manipulate in the Edit dialogue box. Whenever the mouse cursor is highlighting an object which has an XObject reference, the data it refers to is automatically displayed in the Edit dialogue window.
The finer details of using the Edit dialogue are too numerous and complex to describe in depth here, and you should refer to the official Mapedit Readme and related texts for explanations and demonstrations of whats involved.
However this is a thoroughly important item, and the following exercise will give you some insight into its use, as well as making it possible to enter the 3D view which will be explored next.
2.10
Making The First Sector
For the purpose of this exercise, its assumed that the default grid resolution of 4X is set, and that youve zoomed to a reasonable magnification, so that the grid squares measure about a half-centimetre on your screen. (Thats real-world units!)
What youre about to do is make a rectangular sector into which youll place a single sprite, then the POV (white) and SP (brown) arrows. Then youll see how to view the properties of objects, and how these properties may be changed with the Edit dialogue.
Place the mouse cursor at any grid intersection in the lower-left of the visible board area and press {Spacebar}. Mapedit notifies you that sector drawing has started. The small yellow square you can see is the first vertex (a point where two or more walls meet). Move the cursor upward along the same vertical grid line until its a few squares above, and press {Spacebar} again.
If youre unhappy with the placement of any vertex, press {backspace} to release it, and try again. You can {backspace} all the way to the beginning if necessary, and this will completely undo the sector drawing operation.
Continue clock-wise, placing a third vertex to the right of the second, then a fourth below that. Finally, place the cursor over the first vertex again to highlight it. Pressing {Spacebar} now will close the loop and create the first sector.
The structure youve created is called an outer loop. It really counts as five objects the sector itself, plus the four walls that contain it. Each of these has its own basic set of properties, and each is separately editable. The white walls of an outer loop are one-sided, and they exist only from a point of view thats inside the loop. Beyond them is The Void.
You now need to enlarge the sector, to make it a bit more spacious. Place the cursor inside the loop, close to one of the walls. When the wall starts flashing, youll see that its ID and its length are reported in the message bar in the lower panel. Using this feature to check the lengths of the walls, click and hold {LMB} to drag vertexes apart, until you have a rectangular sector 8192 units wide by 4096 units high. Expressed in grid squares at 4X resolution, the sector is 32 boxes wide by 16 high.
It may have occurred to you that you can actually flip the sector about either or both of its axes, depending on where you deposit the vertexes. This would serve no legitimate purpose that Im aware of, and you may well regret doing it.
See the Sector Overview towards the end of this document for more stuff on working with sectors.
2.11
Adding An Inner Loop
Now draw a second loop inside the first. Make the inner loop 4 squares by 4, and position it at the centre of the outer loop. The white walls of an inner loop are one-sided, and they exist only from a point of view thats somewhere between the outer and inner loops. Beyond them is The Void.
Among other things this inner loop will serve to demonstrate how to group a number of objects so they may be moved as a single unit. Mapedit provides two mechanisms for achieving this.
Grouping Objects -- Method 1 (for all objects)
Where its possible to enclose several objects in a rectangular noose, you can select them as a group using a control which is similar to that found in just about any computer painting package. Starting with the cursor above-left of the group, hold down the {RightShift} key and move the mouse to drag a box around the group.
When you release {RightShift}, every object inside the box is selected. This group remains highlighted until you de-select all the objects, by pressing {RightShift} once more.
Grouping Objects -- Method 2 (for loops only)
Sometimes the complex shape of a loop makes it impossible to draw a selection box around it without including some other objects which you dont want to move. In this case you can use a different method, which traces the loop and selects it for you.
Highlight one of the vertexes of the target loop and press {Ctrl}{RightShift} (this can be a tad awkward, just keep trying). When all the vertexes are flashing, the loop is selected and will behave as a single object. To de-select this object, press {RightShift} again.
Grouped objects may be moved around by clicking {LMB}, which snaps the entire group to an adjacent grid intersection. Alternatively, clicking and holding {LMB} on the group allows you to drag it anywhere (even outside of the outer loop and into The Void, which is not a good idea).
Use either method to select your white-walled inner loop. Re-position it so its centred in the right half of the outer loop. When youre happy with the placement, remember to de-select the group by pressing {RightShift} again.
Note that grouping objects to drag them around is not the same thing as selecting them for duplication, rotation and so on.
2.12
Adding A Sprite
Now to add a third type of object, a sprite. Place the cursor in the middle of your sector and press {S}. A cyan (light blue) circle represents the sprite. The line extending from the circle indicates the sprites facing direction, or angle. The angle-bracket keys { < } and { > } let you rotate a sprites angle in 256-degree steps, or you can combine those keys with {Shift} key for finer, 1-degree movements.
Highlight the sprite with the cursor now, and use { < } and { > } to rotate the sprite to an angle of 0 degrees. With that done, drag the sprite with {LMB} and centre it in the left half of the sector. Sprites are just as easily deleted, by highlighting and pressing {Delete} (no, not keypad Del, the other one).
Be extremely careful when mixing drag and delete operations on sprites in 2D view. Principally, avoid holding down {LMB} while pressing {Delete} on a highlighted sprite. Youre not likely to do this often, but when you do it, Mapedit will terminate instantly and return you to a DOS prompt.
Theres no opportunity to save your map, and all changes since the last File Save will be lost. However, Mapedit does not delete its own auto-backup file when it terminates. Since this file may be more recent than your last Save operation, you should consider salvaging AUTOSAVE.MAP (by re-naming it) before you start the editor again.
You wont find a much quicker or more annoying way to quit Mapedit, and as far as Im aware this feature is entirely undocumented.
2.13
Setting The Default Player Start Position
Now to set the default start position, SP. Place the cursor about the centre of the sector and click {RMB} to position the POV, then press {Scroll Lock} to bring the brown arrow to the same spot. Remember that the current POV status is also displayed numerically at bottom-left of the screen, and note the new values in the object counter at bottom-right.
The POV is in valid space here, and yet its still nailed to the spot. No problem, youll free it up shortly. First you want Mapedit to tell you all about the objects you made.
2.14
Getting At The Properties Of Objects
A phenomenon will now be observed. You know the cursor is aware of objects in its vicinity. By default, the range of this sensitivity is 40 screen pixels, and the nearest object within that range is selected. The object flashes, and its ID appears in the message bar. But if the cursor is in a sector and there are no walls or sprites within range of it, the sector itself is selected.
Highlight your sprite again. The message bar shows the ID, telling you its Sprite 0 (instead, you may see an autosave message, if so, press {F6}).
Now if you alternately press {F5} then {F6} the message bar shows the sector ID, then the sprite ID, in turn. To see a comprehensive list of properties in the Edit dialogue, press {Tab} instead of {F5} for sector properties, and {Alt}{Tab} instead of {F6} for sprite or wall properties. Notice that property sheets indicate lengths and heights in pixels, and your sector and its walls have a Pixel Height of 64.
Heres a point to ponder -- see if you can find out anything about the area inside your inner loop.
2.15
Changing Object Properties
The controls described so far will only let you look at an objects properties. When you want to actually modify these properties, you first select the object, then
to edit sector properties press {Alt}{F5}, or
to edit properties of walls or sprites press {Alt}{F6}.
The editor opens a property sheet in the format appropriate to the type of object selected.
Press {Alt}{F5} now, to open the Edit Sector dialogue (the second page of this form is reached by {Crsr} left or right to the FX label then {Enter}, and to return to page one, its {Esc}).
The first time you enter the Edit dialogue for an object, an XObject reference is opened which will remain with the object for as long as it exists -- even if you immediately press {Esc} to cancel the edit without making any changes.
You dont want to make any changes right now, so when youre finished browsing, press {Esc} or {Enter} to close the dialogue. The data sheet is still visible, because your sector is selected and it now has extra information attached to it. In these circumstances, the XObject information is automatically displayed in the Edit dialogue.
Notice your sector has acquired a text caption, right in the centre. If you cant see it, zoom-in a little until its visible. Captions only appear at a certain minimum magnification, and you can toggle them on and off with {Ctrl}{T}. The presence of a caption on an object indicates that XObject information is attached, and the captions text and colour help to identify the object.
In the case of your sector, Normal Off really describes two of its properties. Normal is the sectors Type and Off is its State.
A Note On Sprites: Even if they have an XObject reference, sprites only carry captions when theyre defined as something other than the default (Type: 0: Decoration).
You should try to avoid creating XObject references unnecessarily since there is a limit to the number of external reference items that Mapedit can handle. Its worth noting that once an XObject reference exists for a sector, all child sectors arising from it will automatically inherit an XObject reference.
Each labelled reference adds to the clutter on the board and the size of the file on disk whether it contains useful data or not. In a large and complex map, its quite possible to actually run out of editable sector space!
Time now to save this map and move on, into 3D mode. Later, when you return to 2D, youll find the POV becomes liberated and can be driven around inside the loop with the {Crsr} arrow keys.
2.16
Save The Board
Double-check that the brown SP is positioned about the centre of the sector. {Esc} to the command menu, and {S} to save the map as NEWBOARD (when youre eventually done with it, you can delete this file and need never use the name NEWBOARD again).
2.17
The Editor Display - 3D Mode
Make sure your POV is inside the sector, well away from the walls, and press {keypad Enter} to see the 3D view (you may have to press that key more than once to succeed, and no, I dont know why). The {Crsr} keys will let you run around like a dog trapped in a basement for a while, if you like.
At one end of the room youll see the square-sectioned pillar which is your inner loop. At the other is your sprite which, although it stays put, turns to follow your every move.
Note: Here the {Esc} key has its usual function of cancelling dialogues and so on. But it will also let you exit the editor with the option to save changes, without returning to 2D view. If you find this happening when you dont want it, just press {Esc} again.
Now for a look at how this space measures up. You already know the X and Y dimensions of the floor plan, but now you can actually see the height of the place. You may recall from the property sheets in 2D mode that the height of the sector and walls was set by default at 64 pixels.
Once again we come face-to-face with the multiplicity of units which is the hallmark of Mapedit.
In 3D view, the third dimension is the vertical, and its called Z. Whereas X and Y values describe the two-dimensional location of a point relative to the origin, Z values describe elevation, which is vertical location relative to an elevation of zero. Like X and Y values, Z values can be positive or negative.
The terms elevation and height refer to different attributes. Although in normal conversation we often use either to mean the same thing, strictly speaking theyre not interchangeable. The height of something is just an expression of the difference in elevation of its upper and lower extremities.
Anyway, lets consider zero elevation to be sea-level, something we can probably all relate to. Just remember there are no tides, so theres no difference between sea level and mean sea level OK?
Fundamental units in the Z-dimension are 1/16th of the 2D board units. So whereas in 2D a pixel is 16X16 units, its considered in 3D to be 256 units high. A pixel is still a cube, its just measured using much smaller units in the Z-dimension. The smallest adjustment you can make to the elevation of anything is a shift of one pixel, or 256 units.
So at 64 pixels high, this room must be (64 X 256) = 16,384 units from floor to ceiling.
The next control will let you prove that. First stand near your rather dull sprite. Then face the far end of the room with your back to the sprite. You can see a fair amount of ceiling and floor area from here, and a lot of what follows will be done from this viewpoint. Target the ceiling with the cursor and press {Alt}{PageUp} (no, not keypad 9, the other one).
A dialogue opens which confirms the pixel height. However, what you really want to know is the elevation of the ceiling, and youll see it displayed at the top of the screen, when you press {Esc} to close the dialogue (be alert its only there for 3 seconds). Do that now, and note the elevation shown for Sector[0].ceilingz:.
Now place the cursor somewhere on the floor, and repeat the {Alt}{PageUp} {Esc} routine. Note the value of Sector[0].floorz:. Get the picture? Sea level (zero elevation) is exactly half-way up this room, about waist-height. Other elevations are negative above sea level, and positive below.
The default height of 64 pixels seems odd when you consider that Caleb needs 72 pixels of headroom to stand up straight. You must be walking with a serious stoop right now, so heres how to fix that.
The height of a sector can be adjusted in a number of ways, all of which employ the primary vertical-shift keys, {PageUp} and {PageDown}, either alone or in combination with {Alt}, {Shift} or {Ctrl} keys.
Here youll use the same method you used to check the elevations. Target the ceiling with the cursor, and press {Alt}{PageUp}.
Now to specify a new ceiling height for your sector (and remember were talking in terms of Mapedit pixels). Delete the existing value, then type 71 for the units. Watch yourself stand up straight when you set the new ceiling height with {Enter}. You wouldnt be able to jump in a room this high, but you no longer risk a crick in the neck
When you dont need such numeric precision, you can shift targeted ceilings, floors and sprites in steps of 4 pixels with {PageUp} and {PageDown} used alone. For single-pixel nudges, combine these with either {Shift} key.
{Ctrl} used with {PageUp} and {PageDown} will shift a ceiling, floor or sprite to the nearest adjacent (and different) elevation in the appropriate direction.
The movement of a surface or object can cause it to wander off the cursor, and if youre not alert to this it can be a nuisance. If you lock-on to the target object by clicking and holding {LMB}, it remains selected as long as you hold, regardless of where it moves to or where the cursor is pointing.
(As an aside, it will interest you to know that the maximum perpendicular height to which Caleb can jump unaided from a standing start is 92 pixels. And the longest straight drop without losing health is a staggering 282 pixels. How healthy would you expect to be after dropping four times your own height on to concrete in Cuban heels?)
2.18
Surfaces walls, ceiling, floors
In Mapedit, a surface is defined as the floor or ceiling of any sector, or a section of wall between two points. The visual appearance of any surface arises primarily from two properties its texture and its shade. Yes, its impossible not to use that word. ;)
Now. About that awful decor in your sector. The grey stone texture youre seeing is the very first tile in the art files and the default which is applied to every new surface in the beginning -- Tile #0. Also by default, its shade, or brightness, is initially set to 0 (zero, which is neutral).
2.19
Shading:
Shading is adjusted with { + } and { - } on the numeric keypad, either alone or in combination with {Ctrl}, and any surface can be returned to neutral (shade: 0) with {keypad 0}. The process of shading is somewhat counter-intuitive, as youll discover.
Positive shade values are darker, and negative values lighter. Maximum dark is a shade value of 63 and this can be set instantly with {Ctrl}{ - }. Fully bright is a value of -128, the quick key is {Ctrl}{ + }.
Explore the shading of your sector now. With your back to your sprite, target the far wall with the cursor and press { + } and { - } on the numeric keypad to see the effect.
2.20
Texture:
The texture applied to new surfaces will depend on what the currently selected texture is for that type of surface. The default is Tile #0.
Still with your back to the sprite, target the far wall with the cursor and press {V}. This displays all the wall textures used in the map. Well, since Tile #0 is the only one in use its the only one shown. The number at top left of the tile is its index. Since the cursor is selecting a wall, the number at top right is the number of walls with this texture. Naturally, {V} will perform the same service for floors and ceilings.
Press {V} a second time to bring up the full catalogue of texture art. Browse the art file with {Crsr}, or more quickly with {PageUp} and {PageDown}. Note that in many cases the graphic doesnt fill the available space, since the art was created in a variety of proportions, or aspect ratios. If you already know the number of the tile you want, pressing {G} opens a fast finder dialogue where you can type its number and go to it directly.
Groups of similar-looking graphics are individual frames of an animated sequence. The lava texture (#530) is a good example of this. Others are almost exclusively applied to special types of object, such as weapons and ammo.
An example of a very specialized tile is #504. In the game, this one never looks as it does in the editors 3D view. This is because it behaves like a mirror if its on a wall, or like a hole if its placed on a floor or ceiling where rooms are stacked one above the other.
Now to change the texture on your selected wall. Find Tile #16, which is a hedge texture. This is a full size, whole-area graphic. Put the flashing box around it, and press {Enter} to apply it to your wall.
Youll often want to replicate a texture over a number of walls. The fast way to do this is with the copy & paste function. Point at a wall which already has the required texture and press {Tab} to copy the tile and shade from the wall. Now point at the surface you want to receive these properties, and press {Enter} to transfer the texture.
When you want all the walls of a sector to have the same texture, you can do the lot in a single operation by pasting with {Ctrl}{Enter} instead. Try copying the texture you just applied to that wall, and pasting it to the pillar with {Ctrl}{Enter} to see the effect.
A little care has to be taken when using {Tab} and {Enter} to copy and paste, since all the properties of the first wall will be transferred. This may not be what you actually intend.
Sometimes the textures on adjacent sections of wall dont match properly along the seams. This can usually be fixed by pointing at the first (leftmost) wall section and pressing the period key {.} (look for the right angle bracket, >). This will adjust identical textures on sections to the right, until a different texture is found.
Textures can be stretched or compressed to better fit the area of a wall section, with the keypad arrow keys {keypad 2,4,6,8}. This scaling changes the textures repeat value, and the controls can be combined with {Shift} for finer adjustment. The degree to which any texture can be usefully yanked about may depend on the size and aspect ratio of the texture art.
Combining {Ctrl} with the keypad arrows allows the offset of the texture to be varied. The usefulness of this feature, called panning, becomes apparent when fitting a door graphic on to a door sector, for example. The panning controls can also be combined with {Shift} for fine adjustment
Youll often need to flip a texture with {F} to get its horizontal or vertical mirror image. A common application of this would be placing the handles correctly on both faces of a door. Repeatedly pressing {F} on a texture will cycle through the four flip-states.
2.21
That Sprite
Youll have noticed your sprite looks just like a floating Tile #0. This texture has been applied since Sprite[0] has no particular appearance defined, and you wouldnt be able to see it otherwise. Right now its just a placeholder, and it takes on the shape, size and look of its texture tile.
Point the cursor at the sprite and press {V} then {V} again, to get to the art library. Go to Tile #19, and select it with {Enter}. Its an appropriate tile for a test subject like this.
Notice how it keeps turning so its always facing you, wherever you move to? This is how a face sprite behaves, and it helps make cylinder-shaped objects (like candles) look solid as you move around them. The effect is more or less convincing, depending on how its used.
2.22
Making A Sprite Relative To Wall Or Floor
A sprite can also be set as wall or floor decoration, or made into a structure or part of a structure, either stationary or moving. For this, the sprite has to be made into a flat sprite. Its flatness is considered relative to the wall for a wall sprite, or relative to the floor for a floor sprite.
You cycle through the relativity with {R}. Point at your sprite and press {R} to convert it to a wall sprite. Now you can sneak around it to see whats at the back, because its a 2-sided sprite. Sprites can be toggled between 1-sided and 2-sided with the number-key {1}. Try that, and see how a 1-sided sprite looks from the back. Press {1} a second time to make it 2-sided once more. One can only guess what difference this makes to a rotating face sprite.
If you wanted to make your sprite into a wall decoration, youd return to 2D view and drag it to a wall, adjusting its facing angle to suit (you may have to turn the grid off to get the sprite close enough to the wall, and it mustnt be right on the line of the wall or it will vanish).
Point at your sprite and press {R} again to see the third variation, a floor sprite. Try to walk through it, and youll find it can even carry your weight (raise the ceiling to a height of 128 pixels first, to get some headroom).
2.23
Manipulating Sprites In 3D Elevation, Rotation, Scale And Offset
Your sprite can be raised or lowered by pointing at it and applying the same nudge controls that work for walls and sectors. Youll find it particularly helpful to first click and hold {LMB} on the sprite to keep it selected while you nudge it.
Just like in 2D view, the angle-bracket keys { < } and { > } will rotate a sprite in 256-degree steps. Combine them with either {Shift} key for finer movements of 16 degrees.
Textures applied to sprites can be scaled and offset in exactly the same way as wall textures, using {keypad 2,4,6,8} alone for scaling, or with {Ctrl} for offsetting. In both cases, combining with {Shift} allows finer adjustment.
Sometimes, depending on the degree of scaling you intend to apply, the true appearance of a tile may be of secondary importance . For example, a texture may be used simply to provide the appearance of substance in items like tightropes and secret walkways which involve inflicting extreme distortion on floor sprites.
2.24
Creating Sprites In 3D View
Really accurate placement of objects on floors and ceilings is a job normally done in 2D. But often its easier in 3D view to visualize what sprite or item suits, and roughly where to put it.
3D view offers a nifty radio-button control that lets you choose objects from a toolbox which groups sprites according to type. Just point at the spot where you want a sprite to appear and press {Alt+S} to bring up the toolbox. Go ahead and drop a variety of items around your first sprite. Try not to place anything right on your player start position. And if you place any enemies, make sure you also put in some weapons to deal with them.
Removing an unwanted sprite is just a matter of pointing at it and pressing {Delete} as you would in 2D mode. Be careful to avoid hitting {Delete} while holding down {LMB} on a sprite, since this invites the surprise instant-exit-to-DOS effect, which wont be what you want. You would have to hit {Delete} twice for this to happen in 3D view, and although youre very unlikely to do this, its precisely how I became aware of the phenomenon.
2.25
For Those Hard-To-Reach Places
Getting into areas which are high up in a ceiling or on mountainous ledges requires that gravity be suspended. Mapedit has 3 vertical-movement options called Zmodes. Pressing {CapsLock} lets you cycle through all modes. The default Zmode applies normal gravity when you move. The other modes let you float around, as if using a jet-pack, with {A} and {Z} as your up-and-down controls.
Play about with this for a while, and when youre ready press {keypad Enter} to return to 2D view.
2.26
Back In 2D View
Call up the command menu and {S}ave the board (and get into the habit of doing this often). Adjust the magnification with {A} and {Z} to see all the new text captions attached to your sprites. If you cant see any captions at any magnification, you probably have them turned off. {Ctrl}{T} fixes this.
Also, your POV arrow will now be free to move around.
OK, youre almost ready to fly the coop. {Esc} and {Q}uit the editor.
2.27
Launching Your User Map
Before you start the game of Blood with your user map, heres a tip.
Blood can be launched to start with a user map just the same way as Mapedit, except that it obviously doesnt recognize and auto-load NEWBOARD. You have to name this file in the Blood command line as you would any other.
To skip the splash screens and get straight into your masterpiece, add the -quick switch to the command line too. If you start Blood from a Windows shortcut, copy the shortcut and use the copy for this exercise. Edit the (copy) shortcuts Properties | Program tab, and append the map name and the -quick switch, separated by spaces, to the Cmd line:.
From a DOS prompt with the session folder current, the same command line will read
>blood newboard -quick
No cheating, now and remember, experimenting with stuff will help you get the best out of this editor. Youll quickly discover that it becomes more intuitive the more you probe around.
INSIGHT
3.0
Sector Overview
3.1
Converting An Inner Loop To A Red-Walled Sector
Your inner loop has white walls, just like the outer loop. The walls are one-sided, and beyond them is The Void. So an inner loop is like a shaped hole thats been carved through the outer loop, connecting the floor and the ceiling. You can attach other walls to it, but apart from a bit of decorating theres not much else that can be done with this structure.
You can plug the hole, converting the void within the inner loop into useable space, by turning it into a sector in its own right. Highlight any wall of the inner loop, then press {Alt}{S} to turn the loop red.
Red walls are two-sided, each side being a separately numbered wall. The inner walls define the edges of the sector you just created, and they belong to the inner sector. The outside walls define the edges of the hole that must exist in the outer sector to accommodate the inner one, and they belong to the surrounding sector. Now switch to 3D view to see whats happened.
In 3D view, the pillar has vanished without trace. Not really, obviously. The edges are still defined, but the space is no longer void. You can freely move straight through the boundaries since theres now no physical barrier in place.
Point to the floor near an outer wall and {keypad - } and/or {keypad +} to adjust the floor shade to 32. This should make the surrounding floor noticeably darker than the area of the inner sector (if it doesnt, make it darker still). Point and {Tab} to copy the floor shade, then {Enter} it on the ceiling, again near an outer wall. Now, from the lighter areas of its ceiling and floor, you should be able to discern the exact space thats occupied by the inner sector.
Point at the inner sectors floor and raise it a little with {PageUp}, then drop its ceiling a little with {PageDown}. If you applied a texture to the pillar that was there earlier, youll see its still intact.
Now switch back to 2D view.
3.2
Creating And Deleting Sectors
Now and again a map will develop a fault caused by breaking certain practical rules involving loops and sectors. The symptoms appear as various degrees of graphics crash seen in 3D view, and may comprise anything from mysterious see-through effects in supposedly solid walls, to a hall of mirrors, or HOM effect.
Clearly its much better to avoid this in the first place, and heres how (I should point out that Im not privy to the internal workings of Mapedit, and much of what I know was deduced by experimentation).
To put it simply, dont overlap sectors. Specifically, you shouldnt create, modify or re-position a sector in a way that causes it to contain or overlap any part of any wall belonging to another sector in the same outer loop. Sectors overlap even if theyre just butted together so tightly that their walls are superimposed.
3.3
Splitting A Sector
You split a sector by drawing a line between two of its vertex points. This creates two child sectors each of which inherits the properties of the parent sector. So it follows that if you plan ahead and set the properties of a sector before you start to split it, you should save yourself some editing effort.
The dividing line obviously cant connect two adjacent vertexes, and it shouldnt cut across any other line. It must end at a different vertex on the edge of the same sector (or the sector wouldnt be split, right?). The line may be straight, or it may have more vertexes inserted along its own path, allowing the split to produce almost any shape you want.
You may have to insert vertexes in a loop at the points where you want the splitting line to start and end. The {Insert} key (no, not keypad Ins, the other one) will place a new vertex in a highlighted wall at the grid intersection closest to the cursor. If the grid is turned off, the vertex is inserted at the point nearest the cursor.
If you later decide you want to get rid of a vertex, simply drag it along to an adjacent point in the same loop. There it will be 'absorbed' and magically deleted. Just be careful not to drag all the points of a sector to the same spot. That can really mess up your map.
Be careful when inserting points in walls that run diagonally. With the grid turned on, a new vertex will snap to an adjacent grid intersection, pulling the line of the wall with it and distorting the shape of the sector. This distortion may not be apparent until much later, and it may prove difficult to fix.
As you will probably discover, this error can be a particular nuisance when a pair of identical-shaped sectors are stacked to create underwater areas or rooms over rooms. Turning the grid off can get you around this, but be wary of highlighted points nearby, which will leap to the cursor if you click {LMB}, causing you further grief.
3.4
Deleting Sectors
First the bad news. This is something you should approach with extreme trepidation. No other aspect of Mapedit will have you yelling Arrrrrgh! quite as often as this little beauty. If youre interested, its {RightCtrl}{Delete} and you use it on a highlighted loop.
This removes the sector within a red-walled loop, causing it to revert to a white-walled inner loop. The headache comes when you use {RightCtrl}{Delete} to delete one of those white inner loops.
You might want to create a scratch map where you can experiment with this method of deleting loops and sectors. Above all, heed the advice of the guru Silverman, and dont try to delete a sector by dragging all its points together. You will have cause to regret it.
The good news is that there is a reliable way to dispose of unwanted loops and sectors. A sector can be joined, or merged with an adjacent sector, if they share a red boundary. The magic key is {J}, and heres how its done.
First, decide which sector has the properties you want to keep. Your decision might depend on simple issues like floor or ceiling texture and shade, but elevation and movement properties also have to be considered. The sector whose properties you want to keep is the source. The other sector will be merged with it, and its the target.
Next, point at the source sector, press {J}. Point at the target sector, press {J} again.
3.5
NEWBOARD.MAP and AUTOSAVE.MAP
From time to time, these two files are likely to make an appearance in your session folder.
NEWBOARD.MAP is Mapedits default file name, and its used whenever you save a new map without a specific name. Saving the current map as NEWBOARD will first back up, and then replace, any existing file with that name. The backup is named NEWBOARD.BAK (and if a NEWBOARD.BAK exists, the old one is deleted). Because Mapedit just re-cycles the name, its quite possible that at any one time, NEWBOARD.MAP and NEWBOARD.BAK could be identical, or slightly different, or even completely different files.
Its probably best all round not to let any of your work end up with the name NEWBOARD. Id even suggest you dont give any of your maps a name beginning with NEW, so you can quickly locate and delete any troublesome NEWBOARD files, with DIR NEW*.* and DEL NEW*.* So if your personal NEWBOARD is the sort of thing youd prefer no-one to see, you can safely delete it (and the backup, if its really that bad).
AUTOSAVE.MAP is one you dont want hanging around, but then you may be eternally grateful for it at the same time. Mapedit is a powerful utility, make no mistake. But it is supremely indifferent to some elementary yet fatal errors introduced by map-makers, and from time to time it will crash good and proper, in Spades.
With precisely this eventuality in mind, Mapedit has the wisdom to periodically back up the working map (about every 30 seconds). This is supposed to be a background task, but a message appears each time it happens, which can be a nuisance
When you quit Mapedit by the conventional means, AUTOSAVE.MAP is surplus to requirements and gets deleted as part of the normal program shut-down. But if a sessions gone belly-up and the machine is locked solid (get used to that idea) youll have to resort to the usual strong-arm tactics to re-start your system.
Now, since Mapedit didnt terminate normally (or at all, really) AUTOSAVE will still be right there in the session folder, and its a fair bet you can rename it, load it and get back to your pre-crash glory. The bottom line here is save your work often.
3.6
Extracting The Built-In Blood Maps
Another executable file youll want to use is the Resource Builder -- BARF.EXE. This is capable of extracting the many smaller files which make up a resource file (one with the file type .RFF).
Bloods own maps are stored in BLOOD.RFF, and you probably want to get them out and have a look. There are 43 map files in the plain-vanilla registered version. Theyre extracted into your session folder, and require an additional 6Mb of disk space (the original .RFF file is not altered by the extraction process).
Heres how to liberate the Blood maps. Get to a DOS prompt and change to your session folder Enter the filename BARF as a command on its own. Youll see a lot of blurb which is BARFs way of telling you how to use it. This will mean a little or a lot to you, depending on your own DOS-awareness.
What should be evident is that in order to do any extracting, BARF needs the name of a resource file (the .RFF file type is assumed) and the extract switch -x to be present in the DOS command line when you call it up. So try this --
barf blood -x
Bingo! Plenty of classy maps!
3.7
Liberating Blood Sounds
BARF will extract more than 750 sound effects (24.7Mb) and a dozen MIDI music tracks (133K) in a single operation, thus
barf sounds -x
Two sub-folders, called \RAW and \MID will be created to house them. The .MID files will play on any standard MIDI music player.
The .RAW files are way different. To hear them, you must use a program which can perform sample converting, and which can handle files as unsigned 8-bit PCM raw data. The sampling rates of Bloods sound effects are 11KHz and 22KHz.
Try out Syntrilliums CoolEdit. The shareware version is available from their Internet site at http://www.syntrillium.com and often on magazine cover CDs.
3.8
Speeding Up The Edit-And-Test Process With A Batch File
Sadly, Blood tools are not designed to let you switch quickly between Editing and Testing your maps. After a while, the process of typing command lines to the editor, then the game, then the editor again, can become a real pain.
If youre running Windows 9X and your \WINDOWS\COMMAND\ folder contains the Microsoft CHOICE.COM program, you can really speed up the transitions from editor to game and back again by knocking up a little menu-driven batch program and letting it do most of the work.
If youre reading this document on-screen right now, you can select and copy the block of capitalized text between the lines of dashes below, then Paste it directly into a new NotePad document (any text editor will do, and you could just type the lines in).
REM-----------------------------------------------------------------------------
@ECHO OFF
:CMDMENU
CLS
@ECHO 1 - EDIT %1 IN MAPEDIT
@ECHO 2 - RUN %1 IN BLOOD WITH SWITCHES %2 %3 -NOCD -QUICK
@ECHO 3 - QUIT TO DOS
C:\WINDOWS\COMMAND\CHOICE /C:123 /N
IF ERRORLEVEL 3 GOTO ENDSESSION
IF ERRORLEVEL 2 GOTO RUNBLOOD
MAPEDIT %1
GOTO CMDMENU
:RUNBLOOD
BLOOD %2 %3 -NOCD -QUICK -MAP %1
PAUSE
GOTO CMDMENU
:ENDSESSION
ECHO BYE!
REM-----------------------------------------------------------------------------
Save the document as a batch file program in your Mapedit folder by giving it a short name and changing the filetype extension to .BAT - I suggest you call it M.BAT. Whatever you do, DONT call it MAPEDIT.BAT or BLOOD.BAT! That will not work since the batch program will just keep trying to call itself!
Now you can quickly alternate between editing XXX.MAP in Mapedit and running XXX.MAP in Blood with the help of the M.BAT batch program using this command line:
M XXX
That simple. You can add up to 2 more switches to the command line (e.g. -nodudes). The -quick and -nocd switches are hard-coded and always do their thing. The PAUSE after running the map in Blood allows you to see any error message Blood might generate when it terminates.
PART TWO
OTHER 2D EDITING KEYS
{F12} Screen capture (2D-view grid area only).
{B} Blocking (Wall/Sprite property: toggle).
{C} Circle: Puts a radius on a section of wall between two points.
--{C} again Cancels the circle operation.
--{keypad +/-} Increases or decreases the number of circumference points.
--{Space} Applies the radius, making it permanent.
{E} Adjust a sprites Status List number.
{I} Invisible attribute (sprite: toggle).
{K} Sprites/walls: Mark for movement (Slide, Rotate or Z-motion).
{M } Walls: Masked attribute (toggle).
{<} and {>} Rotate sprite with wrapping at 2048 degrees.
{ [ } and { ] } Rotate a sprite without wrapping.
{Ctrl}{T} View/hide sprite and wall captions (toggle).
{Ctrl}{RightShift} (with a vertex highlighted) Select all points in a loop.
{Shift}{LMB} Capture objects for moving (dragging) as a group.
--{Insert} Clone Sprites (duplicates need to be dragged away from the parent).
{RightAlt}{LMB} Drag a selection box (green-hatched) around a group of sectors.
--{Insert} Duplicate (stamp) the selected objects (drag clones to new location).
--{RightAlt} De-select a selected group of objects.
These require a wall, a sector or a sprite to be highlighted with the cursor first
{Tab} View fundamental sector properties.
{F5} View extra sector properties (if they exist).
{Alt}{F5} Invoke the Edit dialogue for a sector.
{Alt}{Tab} View fundamental wall and sprite properties.
{F6} View extra wall or sprite properties (if they exist).
{Alt}{F6} Invoke the Edit dialogue for a wall or sprite.
-- In the Edit dialogue:
{Esc} Exit the Edit dialogue without saving changes.
{Enter} Save changes and exit the Edit dialogue.
{Cursor Right} Move to next field.
--{Cursor Left} Move to previous field.
{Cursor Down} Increase value in field.
--{Cursor Up} Decrease value in field.
{Page Down} Scroll field values down in steps of 10.
--{Page Up} Scroll field values up in steps of 10.
{Space} Toggle Boolean flags (check-boxes).
{F10}
(in RX/TX field) Auto-select next free communications channel for RX/TX.
(in a Data field) Play numbered audio file.
OTHER 3D EDITING KEYS
FUNCTION KEYS
{F2} Toggle Sector State
{F9} Sector Tricks
{F11} Global Panning (toggle)
{F12} Beeps On/Off (3D view only)
ALPHANUMERIC AND CONTROL KEYS
{W } Waveform Selector (Sector lighting FX: cycle)
{Ctrl}{-/=} Adjust lighting FX amplitude
{Shift}{-/=} Adjust lighting FX phase
{E} Expand Texture (ceilings/floors: toggle)
{R} Relative Texture (ceilings/floors: toggle)
Relative Sprite (face/wall/floor: cycle)
{T} Translucency Cycle (walls/sprites: cycle)
{U} Set all sector visibilities to 0
{I} Invisible (sprite: toggle)
{O} Orient (Sprite: align tightly against a wall)
(Wall Pegging: toggle)
{P} Parallax (ceiling/floor: toggle)
{D} {-/=} Depth Cueing (minimum 128, permanent)
{D} On Sprites: Sprite Detail Level
{S} Place Sprite (Pastes a sprite if one has been copied)
{Alt}{S} Place Sprite (Toolbox: menu)
{F} Flip texture (x-flip, y-flip, x+y-flip: cycle)
{Ctrl}{F} Invert depth cueing colour (toggle)
{Alt}{F} Rotate FirstWall attribute (cycle)
{G} {-/=} Gamma Correction (cycle)
{H} Hitscan (Wall/Sprite property: toggle)
{L} Force Floor Shade (toggle)
{V} View Art ({V} again for full art file)
({G} for GOTO tile# dialogue)
{B} Blocking (Wall/Sprite property: toggle)
{M } Mask (Wall property: toggle)
{Crtl}{A/Z} Angle View Down/Up
{Ctrl}{keypad 5} Centre View
{Caps Lock} Zmode (cycle)
{Tab} Copy Sprite/Texture/Sector Properties
{Enter} Paste Copy As texture
{Alt}{Enter} Paste sector properties (Type, triggers, channels, movement)
{S} Paste Copy As Sprite
{1} 1-way attribute (Walls/Sprites: toggle)
{2} Bottom swap attribute (Walls: toggle)
{, .} (or {< >}) Sprites: Rotate a Sprite
{.} or {>} Walls: Align matching textures to the right
{#} Reset floor or ceiling slope angle to 0
{Delete} Delete a sprite
[{Shift}]{Page Up/Page Down} Raise/Lower ceiling or floor
{Ctrl+ Page Up/Page Down} Snap ceiling/floor/sprite to next adjacent elevation
{Alt+ Page Up/Page Down} Set relative ceiling/floor elevation through dialogue
NUMERIC KEYPAD:
{Enter} Switch View Mode (2D/3D)
{+/-} Lighten or darken texture shade
{Ctrl}{+}or {Ctrl}{ -} Set shade to fully light (-128) or fully dark (63)
{Ins/0} Set shade to neutral (zero)
[{Shift}]{2/4/6/8} Adjust texture/sprite panning
[{Shift}]{Ctrl}{2/4/6/8} Adjust texture/sprite offset
{7} and {9} Sidestep view left and right
3D VIEWPOINT ADJUSTMENTS
Move and turn with {Cursor Arrows}.
Slide or strafe left and right with {Keypad Home} and {PgUp} (7 and 9).
Jog your view up and down with {A} and {Z}. Combine with{Shift} for more movement.
Angle your view up and down with {Ctrl}{A} and {Ctrl}{Z}.
Centre your view with {Ctrl}{Keypad 5}.
Select any of 3 'Zmodes' with {Caps Lock} (Gravity, Locked/Step or Locked/Free (floating)).
Adjust your viewpoint elevation with {A} and {Z}
GLOBAL FUNCTIONS
These take effect throughout a map.
Modify Gamma Correction with {G }and {-/=}.
Reduce visibility over distance with Depth Cueing, using {D} with
{-/=}.With Depth Cueing enabled, get a strange foggy view with {Ctrl}{F}.
Reset all sector visibilities to 0 with {U}.
Toggle all panning (scrolling texture) effects on and off with {F11}.
Preview the four runtime colour palette options, with {Alt}{G}.
MANIPULATING SECTORS IN 3D VIEW
SECTOR TYPES
0: Normal
600: Z Motion
602: Z Motion SPRITE
603: Warp
604: Teleporter
612: Path Selector
613: Step Rotate
614: Slide Marked
615: Rotate Marked
616: Slide
617: Rotate
618: Damage Sector
619: Counter Sector
IMPORTANT: Make sure you're pointing the cursor at the correct position before invoking these keystroke-based functions.
THE FIRSTWALL PROPERTY.
An important property of a sector is the identity of its 'FirstWall'. This wall is the key for other properties of the sector, such as elevation, slope, texture alignment, relativity and panning. Youll sometimes need to specifically assign this FirstWall attribute to make some manipulations look (or work) right.
To identify a sector's FirstWall, aim inside the sector in 2D view and press Tab to call up its properties sheet. This shows the number of the wall currently designated the FirstWall.
Now highlight each bounding wall in turn with the cursor to identify which wall this actually is. Should you need to explicitly change it, this can be done in either view mode.
In 2D view, highlight the desired wall and hit {Alt}{F}, two times. A message confirms this wall is now the sector's FirstWall.
In 3D view, target the floor of the sector and hit {Alt}{F} to rotate the FirstWall attribute around the sector, to each wall in turn. You may see the texture on the surface shifting its direction as the firstwall moves around the boundary.
CHANGING FLOOR AND CEILING ELEVATIONS
Change floor and ceiling elevations with {Page Up} and {Page Down}. Combine these with {Shift} for finer movement. Note that if you're pointing at a wall when you use this, the ceiling of the sector will move. If you're changing any elevation by a large amount, you should first lock-on to the floor or ceiling by pointing and holding down the left mouse button {LMB} to prevent the target drifting off the cursor.
To set a precise relative distance between a floor and a ceiling, use {Alt}{Page Up} or {Alt}{Page Down}. A dialogue box lets you enter the relative separation in Z-pixels.
MATCHING THE ELEVATIONS OF ADJACENT SECTORS
You can quickly and exactly match a sector's floor or ceiling elevation to that of an adjacent sector with {Ctrl}{Page Up} and {Ctrl}{Page Down}. This function matches the FirstWall elevations of two sectors which 'share' a wall boundary.
It only has any effect if the FirstWalls of two adjacent sectors have different elevations. If either sector surface has a slope angle, the result may not look as you anticipated (even though the function has worked correctly). Where multiple adjacent sectors have different elevations, the selected sector snaps to the nearest dissimilar FirstWall elevation in the chosen direction - up or down.
The same keystrokes will cause a targetted sprite to position itself tightly against the ceiling or floor of its sector, so be sure to point the cursor carefully.
MAKING FLOORS AND CEILINGS RELATIVE
For Rotate and Slide sectors which move in the horizontal plane, you will want to indicate whether the floor and/or ceiling texture should move (rotate and pan) with the sector, or stay put. Aim at the floor or ceiling and press {R} to toggle the Relative attribute on or off.
Relative alignment really means 'textures to be aligned to the FirstWall'.
SLOPING FLOORS AND CEILINGS
Sector floors and ceilings are made to slope using the square brackets keys, { [ } and { ] }. When things get out of hand, you can instantly reset any slope to the horizontal 0 with the {#} key (the Mapedit Readme states that the backslash key {\} does this, but it doesnt do it for me).
The FirstWall of the sector provides the pivotal elevation for the sloping function (the recorded elevation for a surface therefore doesnt change when you slope it). Positive slope angles run 'downhill' from the FirstWall, and negative angles run 'uphill'. The angle wraps around at +/- 32768.
One useful (if quirky) function aligns a floor or ceiling slope to an adjacent floor or ceiling elevation. This uses the {Alt}{ ] } (right square bracket) combination. I've found this really only works when you apply it from a certain direction or standpoint. You may want to experiment until you get the gist of it.
COPYING & PASTING PROPERTIES FROM ONE SECTOR TO ANOTHER
You can quickly duplicate all the editable properties of a sector and apply them to another. Aim at the floor or ceiling of the sector, hit {Tab} to copy its properties. Aim at the receiving sector and press {Alt}{Enter}. This copies Sector Type, triggers, movement, Sector FX.. and so on.
SECTOR TRICKS & AUTO STAIR BUILDER
This little toolbox pops up if you point at a sector floor or ceiling and press {F9}. It's how you get at the famous Auto Stair Builder function.
Stair Builder requires that you first create and select a group of sectors in 2D view. The selection is made with {RightAlt} and the mouse, to drag a green box around the group. The group remains highlighted by a vivid green hatched area, and it can be de-selected by pressing {RightAlt} again.
The floor (or the ceiling) adjacent to the selected group will be the 'key elevation'. You must point the cursor at the key elevation before pressing {F9}.
The Sector Tricks dialogue box lets you specify an interval for the stair height. Normal (positive) values will make the stairs go upward from the key sector. Negative values make the stairs go downward from the key (delete the leading zero before inserting the minus sign). When you've entered a value, click the Step Height radio button and away you go.
Stair Builder sometimes seems to have a mind of its own, and its use can be an exasperating exercise unless you're fully conversant with it and can confidently predict its behaviour.
Z-MOTION SECTORS -- SETTING THE ON AND OFF ELEVATIONS (ZRANGE)
Z-motion sectors operating as 'Doom'-style doors and mysterious bookcases need to have the range of their vertical motion set. First set the type (600) in the sector's Edit Properties dialogue in 2D view.
In 3D view, {Page Up} or {Page Down} the sector to its OFF height, and press {Alt}{F3}. Then move it to its ON height and press {Alt}{F4}. The two heights are recorded in the sector's properties sheet and can be checked using the 'Show OFF' and 'Show ON' position functions, {F3} and {F4} respectively. If you point at the sector and press {F3} or {F4}, the sector will move to its OFF or ON elevation.
This should be the first stage in the construction and testing of a Z Motion SPRITE sector. Once the Type: 602 is set, the sector no longer responds to the {F3} or {F4} testing functions.
COSMETIC MANIPULATION OF SECTORS
SECTOR VISIBILITY
Sector visibility refers to the lightness or darkness that prevails within a sector. It ranges from 0 to 255, and it's adjusted with {Crtl}{Alt}{- / =} (the 'minus' and 'equals' keys on the main 'qwerty' part of the board). This feature seems to have little or no effect unless used in conjunction with the global Depth Cueing function.
It allows the brightness in a sector to vary from the general gloom, and can produce interesting chiaroscuro effects.
You can reset all sector visibility values to 0 with the {U} key.
LIGHT WAVE, AMPLITUDE AND PHASE
These sector properties can also be edited directly in 2D view with {Alt}{F5} to access the sector's FX.. page. However they're so subjective it's useful to be able to actually see the results as you tweak the settings. It may be appropriate to check [x]ShadeAlways for the duration.
Cycle through the Waveforms with {W}
Amplitude is stepped up or down using {Ctrl}{- / =}
Phase adjusts in 6-unit steps, with {Shift}{- / =}
Toggle the ON/OFF State of a sector with {F2}
Changes you make are automatically recorded in the property sheet for the sector.
TEXTURE-RELATED SECTOR FUNCTIONS
VIEW
Pointing at a ceiling (or a floor) and pressing {V} will let you view its texture within a subset of textures currently in use on ceilings (or floors) in the map. Pressing {V} a second time will take you to the address of a selected texture within the entire art file. From here you can wander around using the cursor and {Page Up} or {Page Down} keys to choose a different piece of art.
COPY & PASTE
This is the universal {Tab} to copy, {Enter} to paste sequence.
PALLOOKUP
Press {Alt}{P} to modify Floor PalLookup or Ceiling PalLookup, depending on what you're pointing the cursor at. Makes for interesting colour changes to some textures, which also affect the colouration of sprites within the sector. Be wary if you try to use values above #15 for a palette ID. Going beyond the normal range can produce anything from psychedelic hallucinations to a complete crash of the editor. And that's oh-so-easy to do...
PAN
Floor and ceiling textures are panned in four directions with {Ctrl}{Keypad 2,4,6,8}. Use with {Shift} to finely adjust the relative position of a texture.
Panning values can be reset with the forward slash key, {/}.
FLIP
Textures on ceilings and floors can be flipped through 8 possible ways with {F}.
PARALLAX
Parallax a floor or ceiling with {P}. This is used in conjunction with the sky textures 2500, 3491 and 3678. Sky textures aren't automatically parallaxed, for a very good reason. Because of what parallaxing does, subsectors within a ceiling can be impossible to locate in 3D view. You absolutely need the ability to toggle parallaxing on and off, and so it doesn't go on unless you make it.
Cycle through parallax types (0,1,2) with {Ctrl}{P}.
A function exists that can only be used where the ceiling is parallaxed. This is Forced Floor Shading, available on the {L} key.
EXPAND
Expand textures on floors or ceilings with {E}. This is the only scaling option available for floors and ceilings. It can considerably improve the look of many textures overhead or underfoot.
RELATIVE
Floor and ceiling textures are set relative with {R}. Important for making a texture move with its host, or stay put, as required. A Relative texture remains pinned to the sector's FirstWall. This may need to be used in conjunction with the {Alt}{F} (firstwall) function to get the right result.
ODDBALLS
There is an Options dialogue available with {Alt}{O} (letter O, not zero). This feature seems rather incomplete to me. Make of it what you will.
MANIPULATING WALLS IN 3D VIEW
WALL TYPES
0: Normal
20: Toggle Switch
21: 1-Way Switch
500: Wall Link
501: Wall Stack (Unsupported)
511: Gib Wall
Every wall has its own unique identifying number, but the most apparent distinction between types of walls is their colour in 2D view. Most walls are white or red, but some may be blue, green or magenta according to their particular properties. It can be important to recognize the basic nature of a wall before you apply certain manipulations to it in 3D view.
TEXTURE ORIENTATION AND PEGGING -- {O} key (letter O, not zero)
WHITE WALLS
Inner and outer loop walls are represented in 2D view by a white line. These are 1-sided vertical surfaces which are fixed to the adjoining ceiling. In 3D view, applying the elevation controls {Page Up} and {Page Down} while pointing at one of these walls will cause the ceiling of that sector to rise or fall. The texture on a loop wall is normally pegged at the top its anchored at the point where the wall meets the ceiling, and will move up or down as you vary the ceiling height.
When pointing at a 1-way wall, pressing the {O} key will reverse the anchor point so the texture is pegged at the bottom, where the wall meets the floor. The ceiling continues to rise and fall with the wall, but the texture on the wall now moves when you adjust the elevation of the floor.
You can't usefully apply any of the special wall effects to white walls.
RED WALLS
Red walls are created when a sector is split. A red wall is really two walls in the same vertical plane. Each side of a red wall has a separate identifying number. From the sector's point of view, the side of a red wall that it owns is the in-side. The side it doesn't own is the 'out-side'.
When you apply a texture to a vertical surface that's defined as a red wall, you're applying it to the inside wall. Normally the texture is pegged to the inside wall too, so it moves up and down with the wall as you raise and lower the sector.
But if you point at it and press the {O} key, the texture becomes pegged to the outside wall (the wall owned by its neighbour) so it no longer moves with the wall it was applied to.
Orientation will often be necessary for correct texture alignment. In the case of Z-Motion Sectors, unwanted sliding movement of the side walls is cured by correct orientation.
WALL EFFECTS
Red walls can have a variety of effects applied to them.
1-WAY WALLS AND MASKED WALLS
Make a wall '1-way' by pointing at some part of it and pressing the number {1} key on the qwerty part of the board. Viewed from outside, a 1-way wall looks solid and opaque from floor to ceiling. From inside, it looks perfectly transparent. This effect also works for sprites.
Mask or unmask a wall by pointing and pressing {M}. A masked wall is an illusory wall whose texture can be seen from both sides. This feature allows things such as realistic windows to be made.
Masked and 1-way walls can be made variably Transparent with key {T}. This cycles through 3 types of transparency. Transparency effects can be enhanced by darkening the texture with {Keypad +/-}, although this will darken the whole wall section from floor to ceiling. Adjacent textures may need to be shade-adjusted to blend in with this.
OTHER WALL EFFECTS
In addition, all Red walls can be made:
BLOCKING, with a toggle on key {B}. This prevents you, your enemies, your TNT and so on, from crossing the line and passing through the wall. You can block either side of a red wall.
HITSCAN, with a toggle on key {H}. Hitscan-sensitive walls will stop vector weapons (fork, shotgun pellets and Tommy-gun bullets) passing through. Try to avoid making walls Hitscan without good reason, since you might end up with fork-holes and bullet-holes suspended in thin air, which looks bad.
Remember, floors and ceilings can't be hitscan sensitive, and never show puncture holes.
BOTTOM SWAP
A wall's Bottom Swap flag is toggled with the number {2} key on the qwerty part of the board. This feature is a big help in correcting texture alignment where a wall is represented by a sector extending down from the ceiling and up from the floor, with a gap somewhere in the middle.
Turning Bottom Swap on allows you to separately edit the attributes of the parts of the wall above and below the gap -- commonly done around a window, for example.
WALL TEXTURE TOOLS
Point at a wall and press {V} to view the subset of textures used on walls in your map so far. Hitting {V} a second time takes you to the address of the targetted texture in the main art file.
To properly align identical textures on adjoining wall sections, point at the left-most section and press the right angle bracket key, {>}. If the texture runs right the way round a room, start somewhere in a corner. Check the result carefully, since auto-alignment can have unexpected (and sometimes disastrous) consequences!
Some texture alignment jobs may call for the insertion somewhere of a narrow section of neutral texture (say tile #0) to act as a stop, breaking the continuity and preventing the alignment function running amok.
If you've been stretching and sliding a texture with the keypad arrows and it's all gone horribly wrong, you can restore the texture to its 'off the shelf' condition with the forward slash key, {/}.
The universal Copy & Paste functions, {Tab} (to copy) followed by {Enter} (to paste) let you quickly decorate a room or area. Tile, shade, x-repeat and y-repeat are transferred, but beware!
Other attributes such as orientation, palette, and any attribute relating to movement (sliding walls marked blue or green) will also be copied, so be careful when deciding which bit of wall to use to source the texture.
{Ctrl}{ENTER} will instantly paste a copied texture to every wall in a sector.
{Shift}{ENTER} will paste the shade and palette.
{Ctrl}{Shift}{ENTER} will paste the tile, shade and palette to every wall in a loop (!)
The {F} key will flip wall textures in the x-direction, the y-direction, or both. This will help you get your doors and drapes looking symmetrical.
SPRITE TYPES
This is the registry of sprite types found in version 1.11 of Mapedit. Notice the number system is not linear. Also, not all named sprites actually function and some are redundant.
For example, #44 Voodoo Doll and #48 Spray Can. Some sprites, though named, have no function outwith the Plasma Pak add-on.
0 Decoration 67 4 Shotgun Shells
1 Player Start 68 Box Of Shotgun Shells
2 Bloodbath Start 69 A Few Bullets
3 Off Marker 70 Voodoo Doll
4 On Marker 72 Full Drum Of Bullets
5 Axis Marker 73 Tesla Charge
6 Lower Link 76 Flares
7 Upper Link 80 Gasoline Can
8 Teleport Target 100 Skull Key
9 Upper Water 101 Eye Key
10 Lower Water 102 Fire Key
11 Upper Stack 103 Dagger Key
12 Lower Stack 104 Spider Key
13 Upper Goo 105 Moon Key
14 Lower Goo 106 Key 7
15 Path Marker 107 Doctors Bag
16 Alignable Region 108 Medicine Pouch
17 Base Region 109 Life Essence
18 Dude Spawn 110 Life Seed
19 Earthquake 111 Red Potion
20 Toggle Switch 112 Feather Fall
21 1-way Switch 113 Limited Invisibility
22 Combination Switch 114 Invulnerability
23 Padlock (1-shot) 115 Boots Of Jumping
30 Torch 116 Raven Flight
32 Candle 117 Guns Akimbo
40 Random 118 Diving Suit
41 Sawed-Off 119 Gas Mask
42 Tommy-Gun 120 Clone
43 Flare Pistol 121 Crystal Ball
44 Voodoo Doll 122 Decoy
45 Tesla Cannon 123 Doppleganger
46 Napalm Launcher 124 Reflective Shots
47 Pitchfork 125 Beast Vision
48 Spray Can 126 ShadowCloak
49 Dynamite 127 Rage Shroom
50 Life Leech 128 Delirium Shroom
60 Spray Can 129 Grow Shroom
62 Bundle Of TNT 130 Shrink Shroom
63 Case Of TNT 131 Death Mask
64 Proximity Detonator 132 Wine Goblet
65 Remote Detonator 133 Wine Bottle
66 Trapped Soul 134 Skull Grail
SPRITE TYPES continued
135 Silver Grail 246 Scultist Prone
136 Tome 400 TNT Barrel
137 Black Chest 401 Armed Prox Bomb
138 Wooden Chest 402 Armed Remote
139 Asbestos Armor 403 Blue Vase
140 Basic Armor 404 Brown Vase
141 Body Armor 405 Crate Face
142 Fire Armor 406 Glass Window
143 Spirit Armor 407 Fluorescent Light
144 Super Armor 408 Wall Crack
145 Blue Team Base 409 Wood Beam
146 Red Team Base 410 Spiders Web
200 Random Creature 411 Metal Grate 1
201 Cultist w/Tommy 412 Flammable Tree
202 Cultist w/Shotgun 413 Machine Gun
203 Axe Zombie 414 Falling Rock
204 Fat Zombie 415 Kickable Pail
205 Earth Zombie 416 Gib Object
206 Flesh Gargoyle 417 Explode Object
207 Stone Gargoyle 427 Zombie Head
208 Flesh Statue 450 Spike Trap
209 Stone Statue 451 Rock Trap
210 Phantasm 452 Flame Trap
211 Hound 454 Saw Blade
212 Hand 455 Electric Zap
213 Brown Spider 456 Switched Zap
214 Red Spider 457 Pendulum
216 Mother Spider 458 Guillotine
217 Gill Beast 459 Hidden Exploder
218 Eel 700 Trigger Gen
219 Bat 701 Water Drip Gen
220 Rat 702 Blood Drip Gen
221 Green Pod 703 Fireball Gen
222 Green Tentacle 704 EctoSkull Gen
223 Fire Pod 705 Dart Gen
224 Fire Tentacle 706 Bubble Gen
225 Mother Pod 707 Multi-Bubble Gen
226 Mother Tentacle 708 SFX Gen
227 Cerberus 709 Sector SFX
229 Tchernobog 710 Ambient SFX
230 Tcultist Prone 711 Player SFX
244 Sleep Zombie
245 Innocent
TRIGGERS AND CHANNELS: THE MYSTERIOUS CMD: PARAMETER EXPLAINED.
Note: objects in the LOCKED state will only respond to the UNLOCK or TOGGLE LOCK commands. Consider the logic of a command carefully. A command may or may not have any effect, depending on the status of the Receiver when the command is issued.
User Cmd: Effect On Receiver
Codes
0: OFF Switches to OFF state if it is currently ON. Otherwise no effect.
1: ON Switches to ON state if it is currently OFF. Otherwise no effect
2: State Adopts the state of the sender. No effect if receivers state is already the same.
3: Toggle Flips to the opposite of its present state, whatever that is.
4: !State Adopts the OPPOSITE state to the sender. No effect if state is already opposite.
5: Link Echoes the change-of-state behaviour of the sender (FX.. settings may differ).
6: Lock Enters Locked state. Interactive LOCKED objects generate a Player SFX.
7: Unlock Just that.
8: Toggle Lock Reverses the receivers Lock status.
9: Stop Off A looping receiver (e.g. looping Z-motion) stops at its NEXT OFF state.
10: Stop On Stops looping when it reaches the NEXT ON state.
11: Stop Next Stops looping at completion of the NEXT CHANGE of state.
RESERVED CHANNELS
Commands #64 to #255 are special numeric parameters sent to Reserved Channels #1 - #99.
The documented Reserved Channels and their functions are:
0 NULL channel. No effect.
1 Setup Secret
Initializes a secrets count. Normally called in response to a Trigger Start signal from channel 7, see below.
Usage: Place a sprite, make it RX: 7, TX: 1, Cmd: (65 = 1 secret, 66 = 2 secrets, and so on).
2 Secret
Indicates the player found a secret. Make sure the event only triggers once for each secret!
Usage: TX: 2, Cmd: 64: 0 (which increments the internal counter by 1 for ordinary secrets)
Cmd: 65: 1 flags a Super Secret.
3 TextOver
Outputs numbered BLOOD.INI (or user-defined .INI) Text Messages.
Usage: The [mapFile] sections of an .INI file may contain entries such as
Message1 = Some mess
Message2 = More mess
To print a given message at top-left of the game screen, the trigger takes this form:
TX: 3, Cmd: 64: 0 (for Message1) or Cmd: 65: 1 (for Message2) and so on.
Messages may be re-used at will within a level.
4 EndLevelA
Ends the game and goes to ending level A, as defined in the BLOOD.INI (or user-defined .INI) file.
A [mapFile] section within an [Episode] usually contains EndingA= and EndingB= entries. EndingA points to the next logical map in the episode, while EndingB is a jump to a different map (usually a secret level).
Usage: (typical) Place a sprite with texture #318, and set it to:
Type 20: Toggle Switch.
TX: 4, Cmd: 1: ON
Send When [x]Going ON
[x] Going OFF
Trigger on: [x]Push
[x] Dudelockout
Any event can be made to trigger the end of a level.
5 EndLevelB
As for EndLevelA, above, except TX: 5.
7 Trigger Start
Channel triggered at StartUp.
Any object (but usually a switch sprite) which is set to listen on channel 7 will receive a 1-shot ON command from the game engine at the start of a level, before the player gets control.
Trigger Start is used for setting secret counts ( see channel 1 above), Player SFX, in fact anything you want to happen at that point.
Usage: Define an objects behaviour and set it to RX: 7.
8 Trigger Match
Channel triggered at StartUp for BLOODBATH and TEAM (CTF) mode.
Like Trigger Match, but for multiplayer events only.
Usage: Define an objects behaviour and set it to RX: 8.
9 Trigger Co-op
Channel triggered at StartUp for CO-OP mode.
Like Trigger Match, but for co-op only.
Usage: Define an objects behaviour and set it to RX: 9.
10 Trigger Team
Channel triggered at StartUp for TEAM (CTF) mode.
Like Trigger Match, but for team games (Capture The Flag) only.
Usage: Define an objects behaviour and set it to RX: 9.
15 Trigger TeamADeath
Channel triggered when a player on Team A is killed.
Usage: To trap this signal, set an object to RX: 15
16 Trigger TeamBDeath
Channel triggered when a player on Team B is killed.
Usage: To trap this signal, set an object to RX: 16
80 Flag0 Captured
Message sent to Blue Team Flag
Usage: To set up a Blue Team Flag, place a sprite with texture #753 and set it to:
Type: 145: Blue Team Base.
RX: 80
State: 1: ON
Launch: [ X] T check the Team game launcher ONLY.
81 Flag1 Captured
Message sent to Red Team Flag
Usage: As for Blue Team Flag, except:
Type: 146: Red Team Base.
RX: 81
ã 1998,1999 Jeff Morris. You may freely distribute this document in any form, provided the document is distributed in its entirety, with all acknowledgments and recognition of property and other rights intact.