This tutorial is designed to show how fill an empty pit with diveable water to reach an upper hallway. Once you master these concepts your maps will stand out from the rest. So, take you time and experiment with them. Make sure that you save your map in various stages (i.e. My1.map, My2.map, etc.). To view this map in Shadow Warrior download fill.zip
![]() Fig 1a. Play view of the empty pit. |
1a. Within the fill.zip file (that you can download) are two maps. Fillbase.map is the base map that you can start from (empty pit). This is the base map before any ST1 sprites and Copy and Pasting has been done. Start with this map. Since you are in the Advanced section of the Build Tutorial, you should have no problems creating the fillbase.map from scratch. You will notice that there is a ladder in the pit for the player to climb out. So, there is a ST1 sprite HiTag 30 (SPRI_CLIMB_MARKER), and the wall for it has been tagged for it (LoTag 305). It should also be noted that the grate to the pit drain has been added and the key in our objective room.
![]() Fig 1b. Play view after the pit has been filled. |
1b. The other map found in the fill.zip file is fill.map. This is the completed map for this tutorial.
![]() Fig 2. The Destination sectors in the empty pit area. |
2. In the empty pit area (fillbase.map) I will refer to the sectors (as shown in Fig. 2) as Destination sectors (D1 - D8) which will also be referred to as the Destination area.
![]() Fig 3. Creating the Source sectors. |
3. Save your map, than Copy the Destination area. I copied the upper hallway to the first step (the archway is good enough). Paste it somewhere in the void area. I pasted it to the right for tutorial purposes (Fig 4). Normally, it is pasted somewhere in a corner of the grid area. This newly pasted area will be referred to as the Source area with Source sectors S1 - S8 in it. In the Source area, delete the ST1 SPRI_CLIMB_MARKER sprite (why in a bit). Also, there are four ladder sprites (on top of each other), give them a BOOL11 = 1 (Shift + ; + 1) in 3D mode. The BOOL11 will keep these ladder sprites stationary when the floor moves later on. Before we go any further, Copy Source sectors S6, S7, and S8 and paste them somewhere in the void area. This newly pasted area will be referred to as the Dive Area (Fig 4).
Now delete the grate sprite from the S7 sector in the Source area, and raise the floor height level with the S6 sector. Give all of the floor textures for S1 - S8 a picnum of 780. You may have to flip (F key a couple of times) these water textures so the flow is going the same direction as in the tunnel. Give the wall textures between S3 and S4, S4 and S5, S5 and S6 and picnum of 300. When the Source area is copied into the Destination area this water will appear, but we want the water to raise up as it pours in. So, we will treat these sectors as floor to ceiling doors some triggering the next to raise in sequence.
Insert a ST1 sprite in the S1 thru S8 sectors. Give all of them a HiTag of 92 (SECT_VATOR). Give S1, S2, and S3 ST1 SECT_VATOR sprites a LoTag of 1 (our first match tag). S4 and S5 ST1 SECT_VATOR sprites get a LoTag of 2 and 3 respectively. Finally, S6, S7, and S8 get a LoTag of 4.
![]() Fig 4. Positioning of the areas in the Fill.map. |
4. For now, we will not worry about the Dive Area. We need to work on the other two areas to make sure that they work alright first.
![]() Fig 5a. Inserting sprites into the Source Area. |
5a. Insert a ST1 sprite in each of the Source sectors. Give them a HiTag of 59 (SECT_COPY_SOURCE), and a LoTag of the SECT_VATOR in that sector. Give each SECT_COPY_SOURCE sprite a TAG3 starting with a value of 1 for the S1 sprite through TAG3 = 8 for the S8 SECT_COPY_SOURCE sprite.
![]() Fig 5b. Inserting sprites into the Destination Area. |
5b. Ok, insert a ST1 sprite in each of the Destination sectors. Give them a HiTag of 58 (SECT_COPY_DEST), and as in step 5a the same LoTag that was given in each of the S1 thru S8 sectors (i.e. D1 thru D3 SECT_COPY_DEST sprites get a LoTag of 1, D4 sprite gets a LoTag of 2, and so on). Important, the TAG3 values of the SECT_COPY_DEST sprites must match the TAG3 value of the SECT_COPY_SOURCE sprites in the counterpart sector (i.e. D5 SECT_COPY_DEST sprite TAG3 = 5 and the S5 SECT_COPY_SOURCE sprite TAG3 = 5).
![]() Fig 6. Inserting sprites into the Destination Area. |
6. Insert a ST1 sprite in the tunnel off of the Destination area. Give it a HiTag of 92 and a LoTag of 4. Give TAG3 = 1, TAG4 = 16, and BOOL1 = 1. Use the PgUp key and raise the distance of this sprite the same distance between the SECT_VATOR sprite in S6, S7, or S8 and their floor. Insert a ST1 sprite into the D1 sector and give it a HiTag of 92 and a new match tag LoTag of 5 (in our case).
Though the map is not done yet, you need to test your map at this point to make sure everything is working properly.
When a Source sector is copied into a Destination sector all of the visible sprites are removed (except for getable items). All wall tags are removed too. The ST1 sprites are not removed. This is why the SPRI_CLIMB_MARKER ST1 sprite was not place in the Source sector, but the ladder sprites and wall tag were left in. This is also why no BOOL11 = 1 was set for the ladder sprites in the Destination sector because these ladder sprites will be removed when the Source sectors is copied into the Destination sectors. Assuming that your map is working fine we will now continue on.
![]() Fig 7. A 3D view of the Dive Area. |
7. Go to the Dive area and delete the two top ladder sprites leaving the two bottom ladder sprites. Make sure that these ladder sprites BOOL11 is set to 1. Also, make sure that the grate sprite BOOL11 is set to 1. Change the ceiling texture to the water picnum 780, and make sure that it is moving in the same direction as the surface in the Source sectors. Since the ceiling will be moving you need to orient the walls (O key in 3D mode). Lower the ceiling to the same height as the SECT_VATOR sprites in the S6, S7, and S8 sectors. Move the grate sprite out of the way and change the floor texture to the same surrounding floor texture. Insert a ST1 sprite in each of the three sectors and flip them upside down (F twice). For now, raise the ST1 sprite in the drain sector even with the surrounding floor heights. Now, lower the floor of this sector way down so the player can't see it to well (if at all). Set the palette (Alt-P) to 9 for everything (walls, ceilings, floors, and sprites but not the ST1 sprites). Darken the floors and walls by about three or so levels. Now, move the grate sprite back over the hole (if you haven't already done so). Give these ST1 sprites a HiTag of 92 (SECT_VATOR) and a LoTag of 4.
![]() Fig 8. A 2D view of the Dive Area. |
8. Insert a ST1 sprite into each of the three dive sectors and give them a HiTag of 8 ( SECT_UNDERWATER). Note your positioning of these sprites for when you insert the SECT_DIVE_AREA sprites in sectors S6, S7, and S8 their placement MUST BE the same. Give the SECT_UNDERWATER sprites LoTag your next match tags (6, 7, and 8 in our case). For effect, insect a ST1 sprite in each of the Dive sectors and give them a HiTag of 3 (SECT_CURRENT). I like to have the current under water a little slower than the current on the surface. As shown in Fig 8, give the SECT_CURRENT sprites a LoTag of 60, and 30 for the upper SECT_CURRENT sprite LoTag. Point the angle of the SECT_CURRENT sprites to the right (the direction we want the current to flow).
![]() Fig 9. A 2D view of the Source Area. |
9. In the Source area, insert a ST1 sprite into sectors S6, S7, and S8 paying close attention that their position is the same as the SECT_UNDERWATER sprites in the Dive area. Give them a HiTag of 7 ( SECT_DIVE_AREA) and the same LoTags as their counterparts in the Dive area sectors (6, 7, and 8 in our case). Now, insert a ST1 sprite into sectors S3 thru S5 and give them a LoTag of 30 while leaving their HiTags at 0 ( SECT_SINK). Insert a ST1 sprite into sectors S6 thru S8 and give them a LoTag of 40 leaving their HiTags at 0 (SECT_SINK). Finally, insert a ST1 sprite into sectors S3 thru S8 and give them a HiTag of 3 (SECT_CURRENT). Point their angles to the right as we did in step 8. Give the SECT_CURRENT sprites in sectors S3 thru S5 a LoTag of 180, in sectors S6 and S7 a LoTag of 80, and in sector S8 a LoTag of 40.
![]() Fig 10. A 2D view of the Destination Area. |
10. The last thing that I want to show you is inserting two different sounds. One for the water pouring in (Waterfall1), and the other is a slower water sound (Waterflow1). In sector D5 of the Destination area, insert three ST1 sprites, and raise them off the floor by about 12 PgUps. Give to of them a HiTag of 134 (SOUND_SPOT) and the other one a HiTag of 150 (STOP_SOUND_SPOT) as shown in Fig 10. One SOUND_SPOT sprite gets a LoTag of 1 and the other gets a LoTag of 9 (our next match tag). Give the following values to the SOUND_SPOT sprites.