home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shadow Warrior
/
SWARRIOR.bin
/
goodies
/
doc
/
SPRITAGS.TXT
< prev
next >
Wrap
Text File
|
1997-08-25
|
127KB
|
2,645 lines
---------------------------------------
Shadow Warrior Sprite Tagging Reference
Compiled And Edited By Keith Schuler
(c) 1997 3D Realms Entertainment
---------------------------------------
This document is your reference guide to using the special sprites in
Shadow Warrior, including ST1, tracks, locks, switches, cracks, and so on.
Examples of almost all uses of these sprites are given in EXAMPLE.MAP, so be
sure to check that map out. You'll find it in the \GOODIES\TOOLS directory
of your Shadow Warrior CD.
Refer to these documents in the \GOODIES\DOC directory on your Shadow
Warrior CD for other important information:
ADVANCED.TXT - Brief explanations of room-over-room, sector objects, and
other advanced Shadow Warrior mapping topics.
EDITART.TXT - Instructions and reference for using the EDITART program.
EXAMPLE.TXT - Documentation to accompany EXAMPLE.MAP, which includes
demonstrations of almost all of Shadow Warrior's map functionality.
SLABSPRI.TXT - Instructions and reference for using the SLABSPRI program.
SWSOUNDS.TXT - An index of the sound effects and ambient sounds.
SPRITAGS.TXT - Sprite tagging reference. Your guide to all the special
sprites in Shadow Warrior and how to use them.
SWBUILD.TXT - A tutorial and reference guide to using the BUILD editor.
WALLTAGS.TXT - Wall and sector tagging reference. These are all the wall and
sector tags used in Shadow Warrior.
-----------------------------------------------------------------------------
--------
Contents
--------
The Shadow Warrior Sector Effector 1
Meet the ST1 sprite 1.1
Using the ST1 1.1.1
ST1 functions 1.1.2
ST1 context sensitive help 1.1.3
The Shadow Warrior BUILD Tags 1.2
The 15 standard tags 1.2.1
The 11 Boolean Flags 1.2.2
TAG1 (Hitag) 1.2.3
TAG2 (Lotag) and match tags 1.2.4
TAG4 1.2.5
BOOL1 1.2.6
BOOL11 1.2.7
Other Notes Regarding The ST1 1.3
Z-height 1.3.1
Color Coding Your ST1s 1.3.2
Brighten Your ST1s 1.3.3
The Shadow Warrior ST1 Function Reference 1.4
0. SECT_SINK
1. SECT_OPERATIONAL
3. SECT_CURRENT
5. SECT_NO_RIDE
7. SECT_DIVE_AREA
8. SECT_UNDERWATER
9. SECT_UNDERWATER2
16. SO_ANGLE
19. SECT_FLOOR_PAN
21. SECT_CEILING_PAN
23. WALL_PAN_SPEED
29. SECT_LOCK_DOOR
30. SPRI_CLIMB_MARKER
31. SECT_SO_SPRITE_OBJ
32. SECT_SO_DONT_BOB
33. SECT_SO_SINK_DEST
34. SECT_SO_DONT_SINK
37. SECT_SO_FORM_WHIRLPOOL
38. SECT_ACTOR_BLOCK
42. MULTI_PLAYER_START
43. FIREBALL_TRAP
44. BOLT_TRAP
45. SECT_SO_DONT_ROTATE
46. PARALLAX_LEVEL
47. SECT_DONT_COPY_PALETTE
48. MULTI_COOPERATIVE_START
49. SO_SET_SPEED
50. SO_SPIN
51. SO_SPIN_REVERSE
52. SO_BOB_START
53. SO_BOB_SPEED
55. SO_TURN_SPEED
56. LAVA_ERUPT
57. SECT_EXPLODING_CEIL_FLOOR
58. SECT_COPY_DEST
59. SECT_COPY_SOURCE
62. SHOOT_POINT
63. SPEAR_TRAP
64. SO_SYNC1
65. SO_SYNC2
66. DEMO_CAMERA
68. SO_LIMIT_TURN
69. SPAWN_SPOT
70. SO_MATCH_EVENT
71. SO_SLOPE_FLOOR_TO_POINT
72. SO_SLOPE_CEILING_TO_POINT
73. SO_TORNADO
75. SO_AMOEBA
76. SO_MAX_DAMAGE
77. SO_RAM_DAMAGE
80. SO_KILLABLE
81. SO_AUTO_TURRET
82. SECT_DAMAGE
84. WARP_TELEPORTER
85. WARP_CEILING_PLANE
86. WARP_FLOOR_PLANE
87. WARP_COPY_SPRITE1
88. WARP_COPY_SPRITE2
90. PLAX_GLOB_Z_ADJUST
92. SECT_VATOR
97. CEILING_Z_ADJUST
98. FLOOR_Z_ADJUST
99. FLOOR_SLOPE_DONT_DRAW
100. SO_SCALE_INFO
101. SO_SCALE_POINT_INFO
102. SO_SCALE_XY_MULTIPLY
103. SECT_WALL_MOVE
104. SECT_WALL_MOVE_CANSEE
106. SECT_SPIKE
108. LIGHTING
109. LIGHTING_DIFFUSE
110. VIEW_LEVEL1
111. VIEW_LEVEL2
120. VIEW_THRU_CEILING
121. VIEW_THRU_FLOOR
132. BREAKABLE
132. BREAKABLE_SPRITE
133. QUAKE_SPOT
134. SOUND_SPOT
135. SLIDE_SECTOR
136. CEILING_FLOOR_PIC_OVERRIDE
140. TRIGGER_SECTOR
141. DELETE_SPRITE
143. SECT_ROTATOR
144. SECT_ROTATOR_PIVOT
145. SECT_SLIDOR
146. SECT_CHANGOR
147. SO_DRIVABLE_ATTRIB
148. WALL_DONT_STICK
149. SPAWN_ITEMS
150. STOP_SPOUND_SPOT
202. BOUND_FLOOR_BASE_OFFSET
203. BOUND_FLOOR_OFFSET
500-596: SECT_SO_BOUNDING
1000. MIRROR_CAM
1002. AMBIENT_SOUND
1005. ECHO_SPOT
1006. DRIP_GENERATOR
The Shadow Warrior Track Sprite 2
Meet the Track sprites 2.1
Building a track 2.2
Tagging a track sprite 2.3
Lotag 2.3.1
Hitag 2.3.2
Using a track 2.4
Sector and sprite objects 2.4.1
Actors 2.4.2
Tracktag function reference 2.5
700. TRACK_START
701. TRACK_END
702. TRACK_SET_SPEED
703. TRACK_STOP
704. TRACK_REVERSE
705. TRACK_SPEED_UP
706. TRACK_SLOW_DOWN
707. TRACK_VEL_RATE
709. TRACK_ZUP
710. TRACK_ZDOWN
711. TRACK_ZRATE
712. TRACK_ZDIFF_MODE
715. TRACK_SPIN
716. TRACK_SPIN_STOP
717. TRACK_BOB_START
718. TRACK_BOB_SPEED
719. TRACK_BOB_STOP
720. TRACK_SPIN_REVERSE
723. TRACK_SO_SINK
724. TRACK_SO_FORM_WHIRLPOOL
725. TRACK_MOVE_VERTICAL
726. TRACK_WAIT_FOR_EVENT
728. TRACK_MATCH_EVERYTHING
729. TRACK_MATCH_EVERYTHING_ONCE
751. TRACK_ACTOR_STOP
752. TRACK_ACTOR_REVERSE
753. TRACK_ACTOR_SPEED_UP
754. TRACK_ACTOR_SLOW_DOWN
755. TRACK_ACTOR_VEL_RATE
771. TRACK_ACTOR_JUMP
772. TRACK_ACTOR_CRAWL
780. TRACK_ACTOR_CLOSE_ATTACK1
782. TRACK_ACTOR_ATTACK1
791. TRACK_ACTOR_OPERATE
792. TRACK_ACTOR_CLIMB_LADDER
799. TRACK_ACTOR_WAIT_FOR_PLAYER
Other Important Sprites 3
Actors 3.1
Hornets (picnum 800) 3.1.1
Bouncing Betty (picnum 817) 3.1.2
Accursed Head (picnum 820) 3.1.3
Sumo Boss (picnum 1210) 3.1.4
Serpent Boss (picnum 1300) 3.1.5
Coolie (picnum 1400) 3.1.6
Coolie Ghost (picnum 1441) 3.1.7
Green Guardian (picnum 1469) 3.1.8
Little Ripper (picnum 1580) 3.1.9
Fish (picnum 3780) 3.1.10
Evil Ninja (picnum 4096) 3.1.11
Crouching Evil Ninja (picnum 4162) 3.1.12
Big Ripper (picnum 4320) 3.1.13
Bunny (picnum 4550) 3.1.14
Female Warrior (picnum 5162) 3.1.15
Zilla Boss (picnum 5426) 3.1.16
Leaders And Followers 3.1.17
Spawning Actors With A Trigger 3.1.18
Cracks (TAG_SPRITE_HIT_MATCH) 3.2
257. TAG_SPRITE_HIT_MATCH
Switches: (picnums 551-584) 3.3
206. TAG_SPRITE_SWITCH_VATOR
210. TAG_LIGHT_SWITCH
211. TAG_SWITCH_EVERYTHING
212. TAG_SWITCH_EVERYTHING_ONCE
213. TAG_COMBO_SWITCH_EVERYTHING
214. TAG_COMBO_SWITCH_EVERYTHING_ONCE
216. TAG_SPAWN_ACTOR_SWITCH
304. TAG_ROTATE_SO_SWITCH
Shootable switch (picnum 577) 3.3.1
Exit switch (picnum 2470) 3.3.2
Keys And Keyholes 3.4
Keys (picnums 1765-1779) 3.4.1
Keyholes (picnums 1846, 1850, and 1852) 3.4.2
TV Monitors: (picnums 3830-3837) 3.5
QuickJump And QuickJumpDown 3.6
QuickJump (picnum 2309) 3.6.1
QuickJumpDown (picnum 2310) 3.6.2
Gratings 3.7
DeathFlag(tm) Capture the Flag 3.8
The Flag Sprite (picnum 2520) 3.8.1
-----------------------------------------------------------------------------
------------------------------------------
1. The Shadow Warrior Sector Effector
------------------------------------------
1.1 Meet the ST1 sprite:
Shadow Warrior has one sector effector, the ST1 sprite. Using it, you will be
able to create all of the different special effects in the game. This is how
you make working doors, dynamic slopes, explosions, moving sectors, room
over room, water, and everything else. For this reason, it is by far the most
commonly used sprite in Shadow Warrior.
1.1.1 Using the ST1
An ST1 is a sprite just like any other. You can find it in the tile
set (the "V" menu in BUILD) at position 2307. The most common way to
use an ST1 is to place it in the sector you wish to be affected.
For example, if you want a sector to be a door, you would place the
ST1 in that sector, tag it properly, and then that sector would
behave like a door.
1.1.2 ST1 functions
There are almost 100 different functions an ST1 can perform. When you
you first place an ST1 sprite, its sign in 2D mode will probably read
"SECT_SINK." This indicates the ST1's hitag is 0, which designates
the SECT_SINK function. By changing the hitag (Alt H in 2D mode, or
' H in 3D mode) of the sprite, you change the function it will
perform, and its sign will change to reflect that. All of the
different ST1 functions are listed below.
1.1.3 ST1 context sensitive help
If, in 2D mode, you point at an ST1 and press F6, context sensitive
help will be listed at the bottom of the screen. The information
provided will be based on the hitag of the ST1. If, for instance, the
ST1's hitag is 92, then F6 will give you help regarding vators. Most
of this help will be the same material you find in this document.
1.2 The Shadow Warrior BUILD Tags:
The Shadow Warrior tagging system was developed by a team which was not in
contact with the Duke Nukem 3D team, so if you are familiar with Duke Nukem
3D mapping, then forget everything you know, because it can only confuse you
here. Shadow Warrior's tagging system is very powerful, and with this power
comes complexity. Stick with it, though, and you'll soon be proficient
enough to set up a shootable light or a locked door without even looking at
this reference.
1.2.1 The 15 standard tags
Every sprite in Shadow Warrior makes use of 15 different TAGS. A
tag is merely a variable that contains information regarding the
sprite. To enter a value for a tag, point to the sprite, then
press the QUOTE key plus the number of the tag. To access TAG11
through TAG15, press SHIFT+QUOTE+the number of the tag. Note that
TAG1 and TAG2 are the hitag and lotag, respectively, and so can
also be altered with the Alt-H and the Alt-T keys. The following is
a list of the 15 tags, their function, and the range of values they
can hold.
TAG1 = hitag (-32768 to 32767)
TAG2 = lotag (-32768 to 32767)
TAG3 = clipdist (-128 to 127) - default value is 32
TAG4 = ang (-32768 to 32767)
TAG5 = xvel (-32768 to 32767)
TAG6 = yvel (-32768 to 32767)
TAG7 = zvel 1 (-128 to 127)
TAG8 = zvel 2 (-128 to 127)
TAG9 = owner 1 (-128 to 127) - default is unsigned 255 or signed -1
TAG10 = owner 2 (-128 to 127) - default is unsigned 255 or signed -1
TAG11 = shade (-128 to 127)
TAG12 = pal (-128 to 127)
TAG13 = xoffset and yoffset (-32768 to 32767)
TAG14 = xrepeat and yrepeat (-32768 to 32767)
TAG15 = z (-32768 to 32767)
1.2.2 The 11 Boolean Flags
A boolean flag can hold only two possible values: 0 or 1. Every
sprite in Shadow Warrior makes use of 11 boolean flags. To enter a
value for a boolean flag, press the SEMICOLON key plus the number of
the tag. To enter a value for BOOL11, press SHIFT, plus SEMICOLON,
plus the "1" key.
1.2.3 TAG1 (Hitag)
An ST1 sprite always uses TAG1 (the hitag) to specify which function
the sprite is to perform on the sector.
1.2.4 TAG2 (Lotag) and match tags
An ST1 sprite often uses TAG2 (the lotag) to specify a so-called
"match" tag. This means that the value in TAG2 is a unique and
arbitrary value designated by you, the level designer. This unique
value is used to match the ST1's function to a trigger. A trigger
can be caused by such events as operating a switch or stepping into
a trigger sector. BUILD will report the next available match tag
when you press F5 in 2D mode.
1.2.5 TAG4
TAG4, as you can see from the list above, is a sprite's angle. By
changing the TAG4 value of a sprite, you also change the angle it's
facing. Be very cautious of this, because a great many ST1 functions
rely on having an exact value in TAG4. If you use the ">" or "<" keys
on that sprite, the value will shift by 128, which is probably a
large enough change that the ST1 will no longer behave as you'd
expect it to. In the case of ST1 134 (SOUND_SPOT), the game will
probably quit to DOS with an error. Another pitfall to beware is
rotating Right-Alt selected groups of sectors. Since all of the
sprites within the selected group are rotated with the sectors when
you do this, their TAG4 values will often become grossly incorrect.
1.2.6 BOOL1
If the BOOL1 flag is set to 1 on any sprite, BUILD will cause that
individual sprite to behave as though it were an ST1 sprite. This
is generally only used to create breakable sprites.
1.2.7 BOOL11
BOOL11 is a flag used by all sprites in the game, not just ST1s.
If the BOOL11 flag on any sprite is set to 1, then that sprite will
remain stationary rather than ride up and down on a vator.
1.3 Other Notes Regarding The ST1
1.3.1 Z-height
Many functions are affected by the height of the ST1 sprite. For
instance, a door might open to the height of the sprite, or a
teleporter might move the player to the same height as the sprite.
When calculating a height, always use the lowest point of the sprite
graphic as the reference, no matter which way the sprite is oriented.
A sprite that is placed on the floor by means of Ctrl-PgDn is at
the exact same z-coordinate as the floor, no matter how far the
graphic sticks up. A sprite that is placed against the ceiling using
Ctrl-PgUp, however, does not have the same z-height as the ceiling
because the top of the graphic is resting against the ceiling, and
not the bottom. You'll find that you will occasionally need to sink
an ST1 into the floor or into the ceiling to get a desired effect.
1.3.2 Color Coding Your ST1s
The only ST1 functions affected by the sprite's palette value are
LIGHTING (hitag 108) and LIGHTING_DIFFUSE (hitag 109). Since in
most cases the ST1 isn't affected by palette, you may find it useful
to assign different palette values to certain ST1 functions, so as
to more readily identify them in 3D mode. For instance, I sometimes
like to color SPAWN_SPOTs green (palette 11) and
TAG_SPRITE_HIT_MATCHes red (palette 14.) Make a habit of color
coding your ST1 sprites, and you won't regret it.
1.3.3 Brighten Your ST1s
No ST1 function is affected by the shade value of the sprite, so
why not make them really bright? This will make them easier to spot
in 3D editing mode.
1.4 The Shadow Warrior ST1 Function Reference:
Hitag 0: SECT_SINK
TAG2 = depth
Place this in water, lava, or any sector with a floor surface you
want Lo Wang to sink into. He will sink to the depth specified in
TAG2. When building dive sectors (see Hitag 7: SECT_DIVE_AREA) TAG2
needs to be at least 35. You probably never want to use a value
greater than 40, or the player's view may become distorted. NOTE: If
used with a lava texture, SECT_SINK will cause Lo Wang to take damage
when stepping in the sector.
EXAMPLES: AA and BB in EXAMPLE.MAP
SEE ALSO: PLAX_GLOB_Z_ADJUST (hitag 90), CEILING_Z_ADJUST (hitag 97),
FLOOR_Z_ADJUST (hitag 98)
Hitag 1: SECT_OPERATIONAL
Place this in a sector of a driveable sector object. This will be the
sector the player must stand in and press SPACE to operate the
driveable.
EXAMPLES: EE and EF in EXAMPLE.MAP
Hitag 3: SECT_CURRENT
TAG2 = speed
TAG4 = ang
If SECT_CURRENT is used in a sector along with either a SECT_SINK
(Hitag 0), a SECT_UNDERWATER (Hitag 8), or a SECT_UNDERWATER2 (Hitag
9), the player will be moved in the direction the SECT_CURRENT
is facing, at the speed designated in TAG2.
EXAMPLES: AA and BB in EXAMPLE.MAP
SEE ALSO: SECT_SINK (hitag 0), SECT_UNDERWATER (hitag 8),
SECT_FLOOR_PAN (hitag 19)
Hitag 5: SECT_NO_RIDE
Use SECT_NO_RIDE in any sector of a moving sector object to keep the
player from moving with that sector.
EXAMPLES: EC, FC and FD in EXAMPLE.MAP
Hitag 7: SECT_DIVE_AREA
TAG2 = match (non zero)
Diving area - pressing the CROUCH key when here will teleport the
player to an UNDERWATER (Hitag 8) area with a matching UNIQUE match
tag. You must also have a SECT_SINK (Hitag 0) sprite in the same
sector with a TAG2 of at least 35 for this to work.
EXAMPLES: BA in EXAMPLE.MAP
SEE ALSO: SECT_SINK (hitag 0), SECT_UNDERWATER (hitag 8)
Hitag 8: SECT_UNDERWATER
TAG2 = match
Underwater area - floating to the ceiling of this area will teleport
the player to the DIVE_AREA (hitag 7) with a matching UNIQUE non
zero match tag. IMPORTANT: The over- and underwater sectors need to
have congruent shapes, and the SECT_DIVE_AREA sprite and the
SECT_UNDERWATER sprite need to be in the same relative position for
both of their respective sectors. IMPORTANT: A zero in TAG2 denotes
that this is a swim area with no matching SECT_DIVE_AREA. This can be
used for areas where the player cannot surface.
EXAMPLES: BA in EXAMPLE.MAP
SEE ALSO: SECT_DIVE_AREA (hitag 7), SECT_UNDERWATER2 (hitag 9)
Hitag 9: SECT_UNDERWATER2
TAG2 = match
TAG3 = type
0/32 = surface here
1 = can't surface here
Secondary Underwater area - floating to the surface of this area will
teleport you to the SECT_DIVE_AREA (hitag 7) with a matching unique
match tag. SECT_UNDERWATER2 allows you to split an underwater area
into multiple sectors, while still having a single large DIVE_AREA
sector.
EXAMPLES: BA in EXAMPLE.MAP
SEE ALSO: SECT_DIVE_AREA (hitag 7), SECT_UNDERWATER (hitag 8)
Hitag 16: SO_ANGLE
TAG4 = Angle of Sector Object
Place this anywhere in a sector object to tell Shadow Warrior which
end is the front. This will affect the orientation of a sector
object as it follows a track or is operated by the player.
EXAMPLES: EE, EF, and FA in EXAMPLE.MAP
Hitag 19: SECT_FLOOR_PAN
TAG2 = speed - 0 to 16386
TAG4 = ang
BOOL1 = Move with speed of sector object
This causes the floor of the sector it's in to pan in the direction
indicated by TAG4 at the rate indicated by TAG2. Set BOOL1 to "1"
if the sector is part of a sector object and you want the floor to
pan at the same speed the sector object is moving. The BOOL1 feature
is primarily used to simulate moving tank treads on driveable
sector objects.
EXAMPLES: BB in EXAMPLE.MAP
SEE ALSO: SECT_CEILING_PAN (hitag 21), WALL_PAN_SPEED (hitag 23)
Hitag 21: SECT_CEILING_PAN
TAG2 = speed - 0 to 16386
TAG4 = ang
BOOL1 = Move with speed of sector object
This causes the ceiling of the sector it's in to pan in the direction
indicated by TAG4 at the rate indicated by TAG2. Set BOOL1 to "1"
if the sector is part of a sector object and you want the ceiling
to pan at the same speed the sector object is moving.
EXAMPLES: BB in EXAMPLE.MAP
SEE ALSO: SECT_FLOOR_PAN (hitag 19), WALL_PAN_SPEED (hitag 23)
Hitag 23: WALL_PAN_SPEED
TAG2 = speed - 0 to 16386
TAG4 = point sprite at desired wall
TAG6 = angle of panning
BOOL1 = Move with speed of sector object
Point the sprite at the wall you want it to affect. That wall's
texture will pan in the direction indicated by TAG6 at the rate
indicated by TAG2. Set BOOL1 to "1" if the wall is part of a
sector object and you want the wall texture to pan at the same
speed the sector object is moving. This feature is usually used
to simulate tank treads on driveable sector objects.
EXAMPLES: BB in EXAMPLE.MAP
SEE ALSO: SECT_CEILING_PAN (hitag 21), SECT_FLOOR_PAN (hitag 19)
Hitag 29: SECT_LOCK_DOOR
TAG2 = type
1 = RED KEYCARD
2 = BLUE KEYCARD
3 = GREEN KEYCARD
4 = YELLOW KEYCARD
5 = GOLD MASTER KEY
6 = SILVER MASTER KEY
7 = BRONZE MASTER KEY
8 = RED MASTER KEY
Lock the door. Must have the correct key to open it. Works for
rotating, sliding, and all vator uses including switches. Place it in
the same sector with a SECT_VATOR (hitag 92), SECT_ROTATOR
(hitag 143), or SECT_SLIDOR (hitag 145).
EXAMPLES: EB in EXAMPLE.MAP
Hitag 30: SPRI_CLIMB_MARKER
TAG4 = angle
Center this sprite on the ladder and set the angle pointing out away
from the wall. The position of the sprite is important, because that
is the (x,y) location the player sprite will be in while climbing
the ladder. Used in conjunction with TAG_WALL_CLIMB (walltag 305).
EXAMPLES: BC and DF in EXAMPLE.MAP
Hitag 31: SECT_SO_SPRITE_OBJ
Place this ST1 anywhere in a sector object. Makes a sector object
become a "sprite object." The sprites will move but the sectors will
not. Sprite objects can cross sector boundries, whereas regular
sector objects cannot.
EXAMPLES: EC in EXAMPLE.MAP
Hitag 32: SECT_SO_DONT_BOB
Mark a sector in a bobbing sector object so it will not bob with the
rest of the sector. Look at the boat in $WHIRL.MAP for an example.
SEE ALSO: SO_BOB_START (hitag 52), SO_BOB_SPEED (hitag 53)
Hitag 33: SECT_SO_SINK_DEST
TAG2 = offset
Mark a sector in a sector object as the destination for sinking.
It will not sink with other sectors. TAG2 is the offset from the
sector's current floor height to use as the sinking destination.
Look at the boat in $WHIRL.MAP for an example.
SEE ALSO: SECT_SO_DONT_SINK (hitag 34)
Hitag 34: SECT_SO_DONT_SINK
Mark a sector in a sector object so it will not sink with other
sectors. Look at the boat in $WHIRL.MAP for an example.
SEE ALSO: SECT_SO_SINK_DEST (hitag 33)
Hitag 37: SECT_SO_FORM_WHIRLPOOL
TAG2 = depth
Lower the whirlpool sectors to a 'depth' level, when the appropriate
track sprite is reached by the sector object.
(TRACK_SO_FORM_WHIRLPOOL, tracktag 724) Look at the boat in
$WHIRL.MAP for an example.
Hitag 38: SECT_ACTOR_BLOCK
Mark a sector to keep enemy actors from entering, but the player can
still enter. Both enemies and the player can still fire weapons
through the sector.
EXAMPLES: BC in EXAMPLE.MAP
Hitag 42: MULTI_PLAYER_START
TAG2 = (0 to 7) player number
TAG4 = angle to start facing
These mark the positions where players will spawn in WangBang games.
The players' feet will be placed at the same height as the bottom of
the ST1 sprite, so place them on the floor unless you want the player
to fall. Always be sure to include start point #0.
EXAMPLES: Any game map
SEE ALSO: MULTI_COOPERATIVE_START (hitag 48)
Hitag 43: FIREBALL_TRAP
TAG2 = match
TAG4 = angle
Shoots a fireball from the location of this sprite in the direction
the angle is pointing when a sector tagged TAG_TRIGGER_MISSILE_TRAP
(sector tag 43) is stepped on.
EXAMPLES: BD in EXAMPLE.MAP
SEE ALSO: BOLT_TRAP (hitag 44), SPEAR_TRAP (hitag 63)
Hitag 44: BOLT_TRAP
TAG2 = match
TAG4 = angle
Shoots a rocket from the location of this sprite in the direction the
angle is pointing when a sector tagged TAG_TRIGGER_MISSILE_TRAP
(sector tag 43) is stepped on.
EXAMPLES: BD in EXAMPLE.MAP
SEE ALSO: FIREBALL_TRAP (hitag 43), SPEAR_TRAP (hitag 63)
Hitag 45: SECT_SO_DONT_ROTATE
Causes a sector object to move without rotating as it follows its
track or is driven by the player. Place in the center sector.
EXAMPLES: FB in EXAMPLE.MAP
SEE ALSO: SO_TURN_SPEED (hitag 55), SO_LIMIT_TURN (hitag 68)
Hitag 46: PARALLAX_LEVEL
TAG2 = parallax sky type
Set parallax sky type to 0, 1, or 2. This value adjusts the xrepeat
of the sky texture. You only need to place one per level in a single
sector that uses a parallax sky texture, and it will affect the whole
level. If more than one is placed in a map, the sky will usually
behave strangely.
EXAMPLES: BE in EXAMPLE.MAP
Hitag 47: SECT_DONT_COPY_PALETTE
Normally any sprites or the player standing on a palette swapped
floor take on the palette of the floor. Use this ST1 on sectors where
you don't want this to happen.
EXAMPLES: BE in EXAMPLE.MAP
Hitag 48: MULTI_COOPERATIVE_START
TAG2 = (0 to 7) player number
TAG4 = angle to start facing
Spawn spots for cooperative multi-player games. The players' feet
will be placed at the same height as the bottom of the ST1 sprite,
so place them on the floor unless you want the player to fall.
Always be sure to include start point #0.
EXAMPLES: Any game map
SEE ALSO: MULTI_PLAYER_START (hitag 42)
Hitag 49: SO_SET_SPEED
TAG2 = speed (2 to 128)
Sets the speed at which a sector object follows a track. This is
functionally the same as TRACK_SET_SPEED (tracktag 702).
EXAMPLES: FA in EXAMPLE.MAP
Hitag 50: SO_SPIN
TAG2 = speed
Causes a sector object to spin clockwise at the rate specified in
TAG2. This is functionally the same as TRACK_SPIN (tracktag 715).
EXAMPLES: EC in EXAMPLE.MAP
SEE ALSO: SO_SPIN_REVERSE (hitag 51)
Hitag 51: SO_SPIN_REVERSE
TAG2 = speed
Causes a sector object to spin counter-clockwise at the rate
specified in TAG2. This is functionally the same as
TRACK_SPIN_REVERSE (tracktag 720).
EXAMPLES: EC in EXAMPLE.MAP
SEE ALSO: SO_SPIN (hitag 50)
Hitag 52: SO_BOB_START
TAG2 = bobbing amount
Causes a sector object to bob up and down continuously. TAG2
specifies how high the object will bob. This is functionally the
same as TRACK_BOB_START (tracktag 717).
EXAMPLES: $WHIRL.MAP
SEE ALSO: SO_BOB_SPEED (hitag 53), SECT_SO_DONT_BOB (hitag 32)
Hitag 53: SO_BOB_SPEED
TAG2 = speed
Place in the same sector with SO_BOB_START (hitag 52). TAG2
specifies the speed at which the sector object will bob. This is
functionally the same as TRACK_BOB_SPEED (tracktag 718).
EXAMPLES: $WHIRL.MAP
SEE ALSO: SO_BOB_START (hitag 52), SECT_SO_DONT_BOB (hitag 32)
Hitag 55: SO_TURN_SPEED
TAG2 = speed (0 is fastest)
Determines how fast a sector object turns to meet the new angle as it
follows a track. The default is 4. For some reason this has no track
tag functional equivalent.
EXAMPLES: FA in EXAMPLE.MAP
SEE ALSO: SECT_SO_DONT_ROTATE (hitag 45), SO_LIMIT_TURN (hitag 68)
Hitag 56: LAVA_ERUPT
TAG2 = (1 to 1024) The larger the number the more stuff
erupts.
TAG3 = type of eruption
0 = lava shards
1 = volcano boulders
TAG4 = angle of eruption
TAG5 = angle delta from TAG4
TAG6 = max x/y velocity
TAG7 = z velocity amount
TAG8 = z velocity random amount - added to TAG5 value
TAG9 = erupt for this many seconds - default 10
TAG10 = wait for this many seconds till next eruption
BOOL1 = don't spawn unless player is in TRIGGER_SECTOR
This ST1 will spawn lava debris at its location. The lava will
constantly erupt in intervals (killing framerate) unless BOOL1 is
set to "1", in which case you will need to set up trigger sectors.
See TRIGGER_SECTOR (hitag 140.) Then the lava will only erupt while
the player is standing in those sectors.
EXAMPLES: BF in EXAMPLE.MAP
Hitag 57: SECT_EXPLODING_CEIL_FLOOR
TAG2 = match
Pulls the ceiling and floor together at pre-map. The ceiling and
floor can then be explosively blown apart by shooting a
TAG_SPRITE_HIT_MATCH (lotag 257), otherwise known as a crack
sprite. The TAG_SPRITE_HIT_MATCH hitag must match TAG2 of this ST1.
EXAMPLES: CA in EXAMPLE.MAP
SEE ALSO: SECT_COPY_DEST (hitag 58), SECT_COPY_SOURCE (hitag 59)
Hitag 58: SECT_COPY_DEST
TAG2 = match
TAG3 = sector source-dest match
Effectively copies all of the source sector attributes to the
destination sector when triggered. This is probably the most
powerful feature of Shadow Warrior, because it lets you do so many
cool things to a map. Examples are scattered throughout almost
every map. You can do things like blow a hole in the floor and reveal
a hidden swimmable stream, lava pool, or gettable item. It will move
sprites from the source to the destination also. It's very important
that the source and destination sectors be congruent. TAG2 is an
event match (i.e. hit a switch and the copy occurs), while TAG3
serves to identify which source sector belongs to which destination
sector when copying multiple sectors at the same time. Copy sector
58-59 tags will activate in conjuction with matching SECT_MOVE_WALL
(hitag 103) tags AFTER the copy is done. Copy sector 58-59 tags
should remove any visible sprites from the destination sector,
although this doesn't apply to gettable items. Copy sector 58-59
tags will activate in conjuction with matching SPAWN_SPOT tags
AFTER the copy is done.
EXAMPLES: CB in EXAMPLE.MAP
SEE ALSO: SECT_COPY_SOURCE (hitag 59), SECT_EXPLODING_CEIL_FLOOR
(hitag 57)
Hitag 59: SECT_COPY_SOURCE
TAG2 = match
TAG3 = sector source-dest match
This is the source from which a destination sector is copied. See
SECT_COPY_DEST (hitag 58) for more information.
EXAMPLES: CB in EXAMPLE.MAP
SEE ALSO: SECT_COPY_DEST (hitag 58), SECT_EXPLODING_CEIL_FLOOR
(hitag 57)
Hitag 62: SHOOT_POINT
TAG2 = match - if non 0 then it will call
DoMatchEverything every time sector object is fired.
Can be a one time operation with BOOL1.
TAG3 = ammo type
-1/255 = Do nothing shoot point - primarily to make
the player's weapon go away
0 = Tank shell
1 = Machine gun
2 = Laser
3 = Rail gun
4 = Fireball
5 = Rocket
6 = Micro Missle Battery
TAG4 = angle
TAG5 = delay until next fire in 120th of a second tics
(i.e. 60 = half a second) Defaults to 80, except
ammo type 1, which defaults to 6.
TAG6 = Sound Spot match - Calls SOUND_SPOT (hitag 134) with
this match tag
BOOL1= If "1" then TAG2 is reset to 0 after the first use.
For operational sector objects and auto turrets. Sets the point
from which the sector object shoots. Place on the end of a gun barrel
and point the sprite in the desired shooting direction. When a shoot
point exists on an operational sector object, the player's weapon is
no longer used, otherwise the player's weapon stays up. Sometimes
TAG6 is not needed because some ammo types have default sounds.
EXAMPLES: EE and EF in EXAMPLE.MAP
Hitag 63: SPEAR_TRAP
TAG2 = match
TAG4 = ang
Shoots an arrow from the location of this sprite in the direction
the angle is pointing when a sector tagged TAG_TRIGGER_MISSILE_TRAP
(sector tag 43) is stepped on.
EXAMPLES: BD in EXAMPLE.MAP
SEE ALSO: FIREBALL_TRAP (hitag 43), BOLT_TRAP (hitag 44)
Hitag 64: SO_SYNC1
Place in a sector object. Keeps sector objects running a constant
rate so they can stay in sync better if needed. Possibly useful for
meshing gears or something. If it's rideable use SYNC1. Only use
this when you absolutely need to. (NOTE: This isn't used anywhere in
Shadow Warrior, and probably isn't even necessary.)
SEE ALSO: SO_SYNC2 (hitag 65)
Hitag 65: SO_SYNC2
Same as SO_SYNC1 (hitag 64), only slightly faster. If it's rideable
use SYNC1. Only use this when you absolutely need to. (NOTE: This
isn't used anywhere in Shadow Warrior, and probably isn't even
necessary.)
Hitag 66: DEMO_CAMERA
TAG2 = delta ang
TAG3 = camera type (0 or 1)
TAG4 = angle
A third person camera view which is used when playing back demos, or
when playing with the -cam command line option. Point it in the
direction you want the camera to face. TAG2 is the amount the camera
will turn in either direction (512 = 90 degrees). If TAG3 is 1, then
a special camera will be used which orbits around the player at a
constant distance, speed, and height, until the player moves out of
the camera's view.
EXAMPLES: FD in EXAMPLE.MAP
SEE ALSO: MIRROR_CAM (hitag 1000)
Hitag 68: SO_LIMIT_TURN
TAG2 = delta ang
Limit the turning of sector object. Especially useful with turrets.
Point the SO_LIMIT_TURN sprite in the center direction. TAG2 is the
amount the sector object can pivot in either direction.
(512 = 90 degrees either way, for a 180 degree total range of motion)
EXAMPLES: EE in EXAMPLE.MAP
SEE ALSO: SECT_SO_DONT_ROTATE (hitag 45), SO_TURN_SPEED (hitag 55)
Hitag 69: SPAWN_SPOT
TAG2 = Match
TAG3 = Type of effect to spawn
0 = Nothing
1 = Breaking glass
2 = Wood smashed
3 = Smoke, but only used for damaged sector objects
4 = Rice paper (silent)
5 = Blood splat (silent)
6 = Standard explosion
7 = Explosion w/phosphorous
8 = Breaking metal
9 = Crumbling stone
11 = Gib splat
12 = Wood smashed
13 = Crumbling stone
TAG4 = Direction debris flies out in
TAG5 = Time delay before activating in 1/8 second tics
TAG6 = Always set this equal to TAG3
TAG8 = Number of shrap pieces (default value of 0 will pick a
programmed default number)
TAG9 = Random Z range in pixels from ST1 z position
TAG10= Increase size of shraps (0-255)
Spawn some effect triggered by just about anything. This is used a
lot throughout the game for various special effects, including
crumbling ceilings, large complex explosions, and breakable sprites.
EXAMPLES: CC in EXAMPLE.MAP
SEE ALSO: SECT_EXPLODING_CEIL_FLOOR (hitag 57), SPAWN_ITEMS
(hitag 149)
Hitag 70: SO_MATCH_EVENT
TAG2 = Match
TAG3 = Spin_speed adjust - can be negative or positive
TAG7 = Velocity adjustment
BOOL1 = Velocity adjustment type
0: Velocity adjust is instant
1: Velocity adjust is approached
BOOL2 = Direction flip
0: False
1: True
BOOL3 = Toggle help only used for triggers and things that
don't have a definite ON/OFF.
0: Off
1: On
Certain sector object effects, like SO_SCALE_INFO (hitag 100) and
SO_KILLABLE (hitag 80), can be triggered by a match tag event.
This is accomplished using SO_MATCH_EVENT. The adjustment values
are added when the event is ON, and they are subtracted when the
event is OFF. You may need to experiment with this a bit, since we
didn't use it very much in the game.
EXAMPLES: EE in EXAMPLE.MAP
Hitag 71: SO_SLOPE_FLOOR_TO_POINT
Aligns a sloping floor sector in a sector object to a point tagged as
TAG_WALL_ALIGN_SLOPE_TO_POINT (walltag 550). Generally used with
a spike or drill effect rising up from the floor. See also
SO_SLOPE_CEILING_TO_POINT (hitag 72).
Hitag 72: SO_SLOPE_CEILING_TO_POINT
Aligns a sloping floor sector in a sector object to a point tagged as
TAG_WALL_ALIGN_SLOPE_TO_POINT (walltag 550). Generally used with
a tornado or whirlpool effect coming down from the ceiling. See also
SO_SLOPE_FLOOR_TO_POINT (hitag 71).
EXAMPLES: ED in EXAMPLE.MAP
Hitag 73: SO_TORNADO
This sets up a sector object to behave like a tornado.
EXAMPLES: ED in EXAMPLE.MAP
SEE ALSO: SO_AMOEBA (hitag 75), SO_AUTO_TURRET (hitag 81)
Hitag 75: SO_AMOEBA
This sets up a sector object to behave like an amoeba.
EXAMPLES: EC in EXAMPLE.MAP
SEE ALSO: SO_TORNADO (hitag 73), SO_AUTO_TURRET (hitag 81),
SO_SCALE_INFO (hitag 100)
Hitag 76: SO_MAX_DAMAGE
TAG2 = Max amount of damage a sector object can take before
breaking
TAG3 = Always set to 0
TAG5 = Initial damage setting (-1 is broken) - if this value
is 0 it is set to the value of TAG2 (full health)
Damage for operational and auto turret sector objects. Sector objects
only take damage from explosive type weapons, not machine gun types.
Be sure to add a SPAWN_SPOT (hitag 69) with TAG3 set to 3 for the
smoke effect. When the driveable is broken, it will trigger the
smoke, and when the object is repaired, the smoke will go away again.
EXAMPLES: EE in EXAMPLE.MAP
SEE ALSO: SO_KILLABLE (hitag 80)
Hitag 77: SO_RAM_DAMAGE
TAG2 = Damage amount
Damage amount done by ramming with an operational sector object.
Not needed for running over actors, since this is done by default.
This is usually used for ramming killable sector objects or other
operational sector objects.
Hitag 80: SO_KILLABLE
Marks a sector object as killable. Make sure the center sector of
the sector object has a sector lotag of 95. A sector object can be
killed either when it receives enough damage, set by SO_MAX_DAMAGE
(hitag 76), or when a match event occurs, set by SO_MATCH_EVENT
(hitag 70). A killable sector object is actually completely
deleted by becoming part of the sector surrounding the sector object.
EXAMPLES: EE in EXAMPLE.MAP
Hitag 81: SO_AUTO_TURRET
A sector object with a SO_AUTO_TURRET ST1 will always turn to face
the player. Useful for a variety of effects, since it won't shoot the
player unless you give it a SHOOT_POINT (hitag 62). A SHOOT_POINT
on an auto turret will only fire the machine gun ammo type. The
sector object center must have a sector hitag of 96 or 98 for this to
work properly.
EXAMPLES: EE in EXAMPLE.MAP
SEE ALSO: SO_AMOEBA (hitag 75), SO_TORNADO (hitag 73)
Hitag 82: SECT_DAMAGE
TAG2 = Damage done per second
BOOL1 = 0, Does damage when touching floor of sector
BOOL1 = 1, Does damage above sector - like swimming in lava
Causes a sector to do damage to players and actors.
EXAMPLES: CD in EXAMPLE.MAP
Hitag 84: WARP_TELEPORTER
TAG2 = Match
TAG3 = Type
0 = (default) Always teleports you to the matching
sprite location at the angle the sprite is facing
1 = (offset) Always teleports you by the offset.
Does not affect the angle.
TAG4 = Angle
TAG5-8 = Random match locations in addition to TAG2
TAG10 = Teleport or don't
0 = (two-way) Teleport when you enter this sector
1 = (one-way) Don't teleport when you hit this sector
Magic teleporter warps just about anything from one sector to
another. If TAG3 is "0", then a magic shimmering effect and sound
will occur. It is very important that the destination sector be at
least as large as the source sector, or the game may quit with an
error.
EXAMPLES: CD in EXAMPLE.MAP
SEE ALSO: WARP_CEILING_PLANE (hitag 85), WARP_FLOOR_PLANE (hitag 86),
WARP_COPY_SPRITE1 (hitag 87), WARP_COPY_SPRITE2 (hitag 88)
Hitag 85: WARP_CEILING_PLANE
TAG2 = Match
If the player's view (or a NPC Z coordinate) goes ABOVE the
Z position of this ST1 sprite then a warp to the Z coordinate of
the matching WARP_FLOOR_PLANE (hitag 86) will occur.
EXAMPLES: CE in EXAMPLE.MAP
SEE ALSO: WARP_TELEPORTER (hitag 84), WARP_FLOOR_PLANE (hitag 86),
WARP_COPY_SPRITE1 (hitag 87), WARP_COPY_SPRITE2 (hitag 88),
Hitag 86: WARP_FLOOR_PLANE
TAG2 = Match
If the player's view (or a NPC Z coordinate) goes BELOW the
Z position of this ST1 sprite then a warp to the Z coordinate of the
matching WARP_CEILING_PLANE will occur.
EXAMPLES: CE in EXAMPLE.MAP
SEE ALSO: WARP_CEILING_PLANE (hitag 85), WARP_TELEPORTER (hitag 84),
WARP_COPY_SPRITE1 (hitag 87), WARP_COPY_SPRITE2 (hitag 88)
Hitag 87: WARP_COPY_SPRITE1
TAG2 = Match WARP_COPY_SPRITE2 tag
Any sprite that enters a sector marked with WARP_COPY_SPRITE1 will
cause a duplicate image to appear in the sector marked with a
WARP_COPY_SPRITE2 (hitag 88) with matching TAG2.
EXAMPLES: CE in EXAMPLE.MAP
SEE ALSO: WARP_CEILING_PLANE (hitag 85), WARP_FLOOR_PLANE (hitag 86),
WARP_TELEPORTER (hitag 84), WARP_COPY_SPRITE2 (hitag 88)
Hitag 88: WARP_COPY_SPRITE2
TAG2 = match WARP_COPY_SPRITE1 tag
Any sprite that enters a sector marked with WARP_COPY_SPRITE2 will
cause a duplicate image to appear in the sector marked with a
WARP_COPY_SPRITE2 (hitag 87) with matching TAG2.
EXAMPLES: CE in EXAMPLE.MAP
SEE ALSO: WARP_CEILING_PLANE (hitag 85), WARP_FLOOR_PLANE (hitag 86),
WARP_COPY_SPRITE1 (hitag 87), WARP_TELEPORTER (hitag 84)
Hitag 90: PLAX_GLOB_Z_ADJUST
TAG2 = Ceiling z movement in pixels
TAG3 = Floor z movement in pixels
Global parallax ceiling and floor adjustment. Default is 500 pixels.
This affects how far past the actual surface height a sprite can
move in sectors with parallax ceilings and floors.
SEE ALSO: FLOOR_Z_ADJUST (hitag 98), CEILING_Z_ADJUST (hitag 97),
SECT_SINK (hitag 0)
Hitag 92: SECT_VATOR
TAG2 = match
TAG3 = Type
0 = Manual/Switch/Trigger - Primarily used for a
basic manually operated door. If a manual type
has a match tag that is not 0 then ALL vators
with the same match type will be operated on.
Manual operation - works from either within the
sector or alongside of the sector.
Switch operation - switch resets when the vator
goes to default position.
Trigger operation - same as switch but it's a
floor trigger.
1 = Switch/Trigger Only - Cannot be operated manually
ALL vator types with the same matching tag get
operated on
2 = Automatic - Starts Active
3 = Automatic - Starts Inactive - must be turned on
with a switch or trigger
TAG4 = Speed
TAG5 = Acceleration at which door approaches TAG4
TAG6 = Match at destination - when a vator reaches its
destination it will trigger any event with this
match tag
TAG9 = Auto return time - 1/8th of a second resolution - if
non 0 then the vator will return to default position
after alloted time - if 0 then it will stay in the on
position until operated again
BOOL1= 0: Start in the off position
1: Start in the on position
BOOL2= 0: Toggle
1: Operate once only
BOOL3= 0: Crush player
1: Don't crush player
BOOL4 = 0: Operate in WangBang games
1: Not allowed to operate in WangBang games
BOOL5 = 0: Don't call TAG6 match when moving to OFF position
1: Call TAG6 match when moving to the ON or OFF
position
BOOL6 = 0: Wait until motion is complete before it can be
operated again
1: Can be operated again while sector is in motion
BOOL7 = 0: Actors are allowed to operate this vator
1: Actors can't operate this vator
BOOL11= 1: Displays "Single play only" message when
operated in WangBang. Use with BOOL4.
Elevators, stompers, doors, lifts and other tricks are collectively called
"vators." The "off" position is the position of the sector in BUILD, the "on"
position is the height of the ST1 sprite. Flip the ST1 sprite upside down
(by pressing "F" twice on it) to do a ceiling vator like a door or stomper.
Any vator can be locked by placing a SECT_LOCK_DOOR (hitag 29) in the same
sector. Two SECT_VATOR sprites can be placed in a sector to operate the
ceiling and floor separately.
EXAMPLES: DB in EXAMPLE.MAP
SEE ALSO: SECT_ROTATOR (hitag 143), SECT_SLIDOR (hitag 145),
SECT_SPIKE (hitag 106)
Hitag 97: CEILING_Z_ADJUST
TAG2 = Amount
Allows the player and actors to 'sink' into the ceiling of a sector
by the amount in TAG2. The player view will probably be strange
unless the ceiling texture is a parallax sky.
EXAMPLES: $VOLCANO.MAP
SEE ALSO: PLAX_GLOB_Z_ADJUST (hitag 90), FLOOR_Z_ADJUST (hitag 98),
SECT_SINK (hitag 0)
Hitag 98: FLOOR_Z_ADJUST
TAG2 = Amount
Allows the player and actors to sink into the floor of a sector
by the amount in TAG2.
EXAMPLES: AB and CE in EXAMPLE.MAP
SEE ALSO: PLAX_GLOB_Z_ADJUST (hitag 90), CEILING_Z_ADJUST (hitag 97),
SECT_SINK (hitag 0)
Hitag 99: FLOOR_SLOPE_DONT_DRAW
Use this ST1 in any sector with a sloped floor and the slope angle
will be set to 0 when the scene is drawn. The sector will still act
like a slope for all movement purposes.
EXAMPLES: CE in EXAMPLE.MAP
Hitag 100: SO_SCALE_INFO
TAG2 = Speed
TAG3 = Start position
0 = start at min
1 = start at max
TAG4 = Initial type
0 = None
1 = Hold
2 = Destination
3 = Random
4 = Cycle
5 = Random point
Needs SO_SCALE_POINT_INFO (hitag 101)
TAG5 = Min dist - distance from default size to scale inward
TAG6 = Max dist - distance from default size to scale outward
TAG7 = Activate type - same types as TAG4, but this what
happens after the sector object is activated with a
SO_MATCH_EVENT (hitag 70)
TAG8 = Random frequency (0-64) - The lower the number the
slower the random direction change.
This allows you to scale simple sector objects. "Hold" type maintains
the default scale. "Destination" moves either to the minimum or
maximum scaling size. "Random" is just that - the sector object
scales larger and smaller randomly. "Cycle" continuously scales from
min to max and back again. "Random point" is just like a SO_AMOEBA
(hitag 75), except that SO_SCALE_INFO gives you greater control over
its behavior.
EXAMPLES: EE in EXAMPLE.MAP, the amoeba in $SHRINE.MAP
SEE ALSO: SO_AMOEBA (hitag 75), SO_SCALE_POINT_INFO (hitag 101)
Hitag 101: SO_SCALE_POINT_INFO
TAG2 = Speed
TAG4 = Random freqency - 0 to 1024 - the lower the number
the slower the direction change
TAG5 = Min dist - dist from default size to scale inward
TAG6 = Max dist - dist from default size to scale outward
SO_SCALE_POINT_INFO is used with a SO_SCALE_INFO (hitag 100) ST1 to
provide information about how the vertices should behave. TAG5 and
TAG6 are used to designate how far in and out the individual
vertices should move at the speed in TAG2. Be careful; when wall
points cross each other, strange and unpredictable sector behavior
can occur.
EXAMPLES: The amoeba in $SHRINE.MAP
SEE ALSO: SO_AMOEBA (hitag 75), SO_SCALE_INFO (hitag 100)
Hitag 102: SO_SCALE_XY_MULTIPLY
TAG5 = x multiply value; 256 is equal to 1
TAG6 = y multiply value; 256 is equal to 1
Use in conjunction with SO_SCALE_INFO (hitag 100) and
SO_SCALE_POINT_INFO (hitag 101). Try experimenting with this to see
what kind of effects you can achieve.
Hitag 103: SECT_WALL_MOVE
TAG2 = Match - triggering one of these will trigger all
SECT_WALL_MOVE ST1's with the same matching tags.
This will also trigger SPAWN_SPOT ST1's.
TAG3 = Match with a SECT_WALL_MOVE_CANSEE (hitag 104)
TAG4 = Angle - point in the direction you want the wall point
to move
TAG5 = Pic 1 - Next wall texture
TAG6 = Pic 2 - Previous wall texture
TAG7 = Shade 1 - Next wall shade
TAG8 = Shade 2 - Previous wall shade
TAG9 = Number of times the point can be shot
TAG10= Random angle difference - 1 to 128 - the larger the
number the greater the angle deviance.
TAG13= Distance to move point each time it's shot
BOOL1= 0: Can work independently
1: Only activated as part of a TAG3 group
This creates a dentable wall. Every time the wall vertex is shot with
an explosive weapon, it will move the distance in TAG13, up to TAG9
times. Place the ST1 sprite on TOP of the vertex to move. One vertex
will move. Every vertex is associated with two walls: the next wall
and the previous wall. If TAG5 or TAG6 are non-zero, then that wall
will take on the specified texture when the vertex is shot. If TAG7
or TAG8 are non-zero, then that wall will take on the new shade
value specified. This will work for sector object walls with one
limitation: you cannot tag the outside wall loop tagged with a 504 to
be moveable. NOTE: Changing the value of TAG13 will cause the ST1
sprite to move strangely in 3D editing mode. Don't worry. If 2D mode
says it's on the vertex, then it's on the vertex.
EXAMPLES: DA in EXAMPLE.MAP
SEE ALSO: SECT_WALL_MOVE_CANSEE (hitag 104), SPAWN_SPOT (hitag 69),
SECT_EXPLODING_CEIL_FLOOR (hitag 57)
Hitag 104: SECT_WALL_MOVE_CANSEE
TAG2 = Match with TAG3 of SECT_MOVE_WALL (hitag 103)
Placing sprites on wall points renders them somewhat unreliable for
certain engine routines. If there is a problem activating a
SECT_MOVE_WALL, set up one of these off of the wall point for the
engine to use for detection purposes. I have never needed to use
this.
EXAMPLES: DA in EXAMPLE.MAP
Hitag 106: SECT_SPIKE
TAG2 = Match
TAG3 = Type
0 = Manual/Switch/Trigger - primarily used for manual
type. If a manual type has a match tag that is
not 0 then ALL spikes with the same match type
will be operated on. A spike can be manually
operated from either within the sector, or to the
side. With switch operation, the switch resets
when the spike goes to default position. With
trigger operation, it's the same as a switch but
it's a floor trigger.
1 = Switch/Trigger Only - cannot be operated manually
ALL spike types with the same matching tag get
operated on by the switch or trigger.
2 = Automatic - Starts active
3 = Automatic - Starts inactive, must be activated
with a switch or trigger.
TAG4 = Speed
TAG5 = Acceleration at which TAG4 speed is approached
TAG6 = Match at destination - when a spike reaches its
destination it will trigger any event with this
match tag
TAG7 = Sector object number to operate on. Set to -1 if the
SECT_SPIKE is not in a sector object.
TAG9 = Auto return time - 1/8th of a second resolution - if
non 0 then the spike will return to its default
position after the alloted time. If 0 then it will
stay in the ON position until the spike is operated
again.
BOOL1= 0: Start in the off position
1: Start in the on position
BOOL2= 0: Toggle
1: Operate once only
BOOL3= 0: Crush player
1: Don't crush player
BOOL4= 0: Operate in WangBang games
1: Not allowed to operate in WangBang games
BOOL5= 0: Don't call TAG6 match when moving to OFF position
1: Call TAG6 match when moving to the ON or OFF
position
BOOL6= 0: Wait until motion is complete before it can be
operated again
1: Can be operated again while sector is in motion
BOOL7= 0: Actors are allowed to operate this spike
1: Actors can't operate this spike
BOOL11=1: Displays "Single play only" message when
operated in WangBang. Use with BOOL4.
A "spike" is the term for a dynamic slope in Shadow Warrior. Useful
for tilting ramps and slides, or special ceiling effects like a
drill. A spike behaves pretty much like a vator, except instead of
the floor height moving to the ST1, the floor instead slopes to the
height of the ST1. Remember that slopes always hinge on the "first
wall" of a sector (set with Alt-F). To do a spike from the ceiling,
flip the ST1 sprite upside down (press "F" twice on the sprite in 3D
mode). "Off" position is the position of the sector, "on" position is
the height of the ST1 sprite. WARNING: Don't forget to put that -1
in TAG7! Shadow Warrior will usually crash if you forget to do this.
EXAMPLES: DC in EXAMPLE.MAP
SEE ALSO: SECT_ROTATOR (hitag 143), SECT_SLIDOR (hitag 145),
SECT_VATOR (hitag 92), SLIDE_SECTOR (hitag 135)
Hitag 108: LIGHTING
TAG2 = Match
TAG3 = Type
0 = Constant
1 = Flicker
2 = Fade
3 = Flicker ON
4 = Fade to ON/OFF
TAG4 = Timing - the smaller the number, the faster a light
flickers or fades
TAG5 = Brighten amount - This is not an actual shade amount,
instead, this is the value the ST1 will subtract from
the sector's shade value (QUOTE-S in 3D mode) when it
is turned on.
TAG6 = Darken amount - This is not an actual shade amount,
instead, this is the value the ST1 will add to the
sector's shade value when it is turned off.
TAG7 = Shade increment/decrement for fading lights - default
is 1
BOOL1= 0: Light is off
1: Light is on
BOOL2= 1: Don't affect floor
BOOL3= 1: Don't affect ceiling
BOOL4= 1: Don't shade walls
BOOL5= 1: Shade outer walls - red sectors have inner and
outer walls - by default LIGHTING will not shade
the outer walls
BOOL6= 1: Don't affect the palette of the sector
BOOL8= 1: Invert intensity. This means that the sector will
be brightened by TAG6 amount when the light is on,
and darkened by TAG5 amount when the light is off.
This is useful for making lights that flicker when
they are broken.
BOOL10= Direction to start a fade
The sector will have the same palette as the LIGHTING sprite, even if
the light is turned off. All LIGHTING ST1's with the same match tags
will operate together.
WARNING: Every LIGHTING sprite tends to have its own independent rate
of fade or flicker. This means that if you a have a room comprised of
multiple sectors and you put a flickering LIGHTING ST1 in every
sector, they will all flicker at different rates and look really bad
even if their TAG2's match. If you want a room of uniform flickering
or fading, you need to place a single LIGHTING sprite in one sector
and use LIGHTING_DIFFUSE (hitag 109) in all the sectors you want to
share that lighting effect.
EXAMPLES: DD in EXAMPLE.MAP
SEE ALSO: LIGHTING_DIFFUSE (hitag 109)
Hitag 109: LIGHTING_DIFFUSE
TAG2 = Match to a LIGHTING (hitag 108) TAG2
TAG3 = Shade multiplier - the higher this number, the more
quickly the light grows dark with distance from the
light source
TAG4 = Distance - 1 to 20 for diffuse lighting - The larger
the number the more distant, and therefore darker the
shade from the source.
BOOL2= 1: Don't affect floor
BOOL3= 1: Don't affect ceiling
BOOL4= 1: Don't affect walls
BOOL5= 1: Shade outer walls - red sectors have inner and
outer walls - by default LIGHTING_DIFFUSE will not
shade outer walls
BOOL6= 1: Dont change palette
Used with LIGHTING (hitag 108) to shade other sectors on a grade.
Also used to copy a lighting effect (flickering, fading, palette)
uniformly over multiple sectors. Though its difference from Duke
Nukem's lighting may at first seem confusing, this method is
actually more convenient. Once all the LIGHTING_DIFFUSE sprites are
in place, you can change the lighting effect for an entire group of
sectors just by changing the values of one sprite: the LIGHTING
(hitag 108) ST1.
EXAMPLES: DD in EXAMPLE.MAP
SEE ALSO: LIGHTING (hitag 108)
Hitag 110: VIEW_LEVEL1
TAG2 = View tag match
TAG4 = Point up to turn it OFF
Point down to turn it ON
A matching VIEW_LEVEL sprite must be in both the upper and lower
sectors of any room-over-room areas where the player can look
through the ceiling or floor into the other area. Use VIEW_LEVEL1
in the lower areas. See ADVANCED.TXT for guidelines to building
room-over-room areas.
EXAMPLES: AC, AD, and FC in EXAMPLE.MAP
SEE ALSO: VIEW_LEVEL2 (hitag 111), VIEW_THRU_CEILING (hitag 120),
VIEW_THRU_FLOOR (hitag 121), BOUND_FLOOR_BASE_OFFSET
(hitag 202), BOUND_FLOOR_OFFSET (hitag 203)
Hitag 111: VIEW_LEVEL2
TAG2 = View tag match
TAG4 = Point up to turn it OFF
Point down to turn it ON
A matching VIEW_LEVEL sprite must be in both the upper and lower
sectors of any room-over-room areas where the player can look
through the ceiling or floor into the other area. Use VIEW_LEVEL2
in the upper areas. See ADVANCED.TXT for guidelines to building
room-over-room areas.
EXAMPLES: AB, AE, and FE in EXAMPLE.MAP
SEE ALSO: VIEW_LEVEL1 (hitag 110), VIEW_THRU_CEILING (hitag 120),
VIEW_THRU_FLOOR (hitag 121), BOUND_FLOOR_BASE_OFFSET
(hitag 202), BOUND_FLOOR_OFFSET (hitag 203)
Hitag 120: VIEW_THRU_CEILING
TAG2 = View tag match
Use this in a sector with a floor mirror texture on the ceiling in
the lower half of a room-over-room area. The ST1 sprite must be in
the same relative location in the sector as the VIEW_THRU_FLOOR
(hitag 121) sprite in the upper sector. TAG2 will be the same as
all the VIEW_LEVEL sprites and the VIEW_THRU_FLOOR sprite. See
ADVANCED.TXT for guidelines to building room-over-room areas.
EXAMPLES: AC, AD, and FC in EXAMPLE.MAP
SEE ALSO: VIEW_LEVEL1 (hitag 110), VIEW_LEVEL2 (hitag 111),
VIEW_THRU_FLOOR (hitag 121), BOUND_FLOOR_BASE_OFFSET
(hitag 202), BOUND_FLOOR_OFFSET (hitag 203)
Hitag 121: VIEW_THRU_FLOOR
TAG2 = View tag match
Use this in a sector with a floor mirror texture on the floor in
the upper half of a room-over-room area. The ST1 sprite must be in
the same relative location in the sector as the VIEW_THRU_CEILING
(hitag 120) sprite in the lower sector. TAG2 will be the same as
all the VIEW_LEVEL sprites and the VIEW_THRU_CEILING sprite. See
ADVANCED.TXT for guidelines to building room-over-room areas.
EXAMPLES: AB, AE, and FE in EXAMPLE.MAP
SEE ALSO: VIEW_LEVEL1 (hitag 110), VIEW_THRU_CEILING (hitag 120),
VIEW_LEVEL2 (hitag 121), BOUND_FLOOR_BASE_OFFSET
(hitag 202), BOUND_FLOOR_OFFSET (hitag 203)
Hitag 132: BREAKABLE
TAG2 = Match - used to match up with BREAKABLE_SPRITE
(hitag 132 on a non-ST1 sprite) or TAG_BREAK_WALL
(walltag 307)
TAG5 = Picnum to change to after BROKEN
Not needed if TAG8 = "1"
TAG7 = Number of damage hits to take before a sprite or
wall texture is BROKEN. Note that if this is set to 2
or greater the picnum will increment toward TAG5 until
TAG5 is reached. The graphics in the art file must be
imported in the correct order to support this. Nothing
in Shadow Warrior uses this, but the functionality is
there for anybody who feels like importing their own
art.
TAG8 = BROKEN type:
0 = Change the picnum only
1 = Kill sprite/wallpic when BROKEN
For walls this will turn off masking, blocking,
and 1-way.
2 = Turn off blocking bits when BROKEN
For walls this will just turn off blocking bits,
but leave the masking or 1-way alone. Breaking
an air vent grate is an example of this.
Sprites and wall breaking info. There are 2 ways to use this:
1) As ST1 sprite info for breaking a sprite, or 2) As ST1 sprite info
for breaking a wall. NOTE: Can be re-used for many BREAKABLE_SPRITEs.
Example: All chairs that break could use a single ST1 132 to tell
them how to break as long as the same matching TAG2 is used.
When hitting a wall tagged with TAG_WALL_BREAK (307) the code will
look for a BREAKABLE_SPRITE ST1 with a matching tag and use this info
if found.
EXAMPLES: DE in EXAMPLE.MAP
Hitag 132: BREAKABLE_SPRITE
(This is used with non-ST1 sprites to make them breakable)
TAG2 = Match - used to match up with BREAKABLE ST1's
TAG6 = Match - extra match value for activating ST1's like
SPAWN_SPOT and LIGHTING. By this method you can spawn
debris or turn off a light when this sprite is broken.
BOOL1= 1: Denotes that this is not an ST1 but is tagged like
one. IMPORTANT: THIS MUST BE SET TO "1".
BOOL2= 1: Don't break this sprite. Use this to override
automatic breakables.
Use this tagging on the actual sprite you want to break. TAG2 should
match the TAG2 of the BREAKABLE (hitag 132) ST1 that tells this
sprite how to break. NOTE: You don't actually need the ST1 132
if you just want to kill the sprite when its broken. Giving it a
hitag of 132 and setting BOOL1 is sufficient.
EXAMPLES: DE in EXAMPLE.MAP
Hitag 133: QUAKE_SPOT
TAG2 = Match
TAG3 = Shake Z amount - This is the amount the view moves in
the Z direction.
TAG4 = Radius of quake - distance in which quake is felt -
this value is multiplied by 8 internally for the
distance. The code is set up so that the quake amount
decreases from the epicenter, but this effect can be
overridden by setting BOOL1 to "1"
TAG5 = Duration of quake in seconds
TAG6 = Timed quake - shake the screen every X seconds, where
X = TAG6 multiplied by 10.
TAG7 = Shake angle amount - amount the view's angle moves
TAG8 = Shake x,y position amount - multiplied by 8 internally
TAG9 = Random quake value (1 to 128). Multiplied by 4
internally. Used with TAG6. Instead of automatically
spawning a quake after time it does a random test.
The larger the number the greater the chance of a
quake. 0 is default - will not do random test.
BOOL1= 1: Quake does not decrease from epicenter, and will
basically shake the entire level.
BOOL2= 1: Only quake once and never again
BOOL3= 1: Wait for trigger before starting timed quake code.
This is only used for timed quakes.
This is used to shake the player's view as though an earthquake were
happening.
EXAMPLES: DE in EXAMPLE.MAP
Hitag 134: SOUND_SPOT
TAG2 = Match
TAG4 = 1st Sound #
TAG5 = 2nd Sound #
TAG6 = 3rd Sound #
BOOL1= 1: Play the sound once and only once
BOOL2= 1: Play the sound as a looping sound. The sound will
continue to loop until stopped by STOP_SOUND_SPOT
(hitag 150).
1: Also means follow sprite, and needs to be set if
the ST1 sprite will be moving (usually with a sector
object.)
BOOL3= 1: Random play. When the ST1 is triggered, it will
randomly choose between sounds 1 and 2 or between
sounds 1, 2, and 3.
BOOL4= 1: Don't pan sound. This is useful when the sound
is very near the player.
BOOL5= 1: Use doppler effect.
BOOL6= 0: Make sure this is always reset to "0".
BOOL7= 1: The sound is Lo Wang's voice, heard inside his
head at max volume no matter how far from the
SOUND_SPOT he is.
SOUND_SPOT will play the sound specified in TAG4 when the
match tag in TAG2 is triggered. SOUND_SPOT can also be
triggered by operating a vator, spike, sliding door, or
rotating door with the same match tag. Sound numbers can be
obtained from the digital sound index in SWSOUNDS.TXT. Don't
confuse these with ambient sounds, which are used with the
AMBIENT_SOUND (hitag 1002) ST1. If SOUND_SPOT is placed in a
sector object operational sector, the 1st sound (TAG4) will
be the 'idle' sound. The 2nd sound (TAG5) will be the 'drive'
sound. IMPORTANT: The match tag (TAG2) will still need to be
a unique value even though the mapper never sets up a trigger
for it. If you do not use a unique value then other
SOUND_SPOTs with the match value will do the same sound
processing. This could be used as a feature - drive something
and something else on the level makes a noise. Note that you
can specify 3 different sounds. Some things like vators can
have more than one sound attached for different operations
such as moving to the ON and OFF positions. Most of the time
only the 1st sound (TAG4) will be used.
EXAMPLES: DB, DC, DD, and others in EXAMPLE.MAP
SEE ALSO: AMBIENT_SOUND (hitag 1002)
Hitag 135: SLIDE_SECTOR
TAG2 = Speed value. (0 is fastest, 32 is slowest)
Note that the angle of the slope also has an effect on
speed.
Tag a sloped sector with this and it will cause the player to
slide in the direction of the slope. Actors are not affected. The
steeper the slope, and the lower the TAG2 value, the faster the
slide. Lo Wang will slide even if he is in the air over the sector.
Use with SECT_SPIKE (hitag 106) to create a variable speed slide.
EXAMPLES: DF in EXAMPLE.MAP
Hitag 136: CEILING_FLOOR_PIC_OVERRIDE
TAG2 = Picnum (from the "V" menu)
TAG3 = 0: Pic override on the ceiling
1: Pic override on the floor
TAG7 = Draw type
0 = normal
1 = masked
2 = translucent
3 = very translucent
BOOL1= 1: Block hitscans
This is primarily used to give a floor or ceiling texture to the
floor mirror in room-over-room areas. This is used in Shadow Warrior
to create the translucent water, the reflective floors, and the
masked grating in $VOLCANO.MAP. A sloped floor cannot have a masked
or translucent texture. Use with FLOOR_Z_ADJUST (hitag 98) to keep
the player from falling through into the lower area. Actors can
stand on it too, but will usually fall through when they are killed.
EXAMPLES: AB and AD in EXAMPLE.MAP
SEE ALSO: FLOOR_Z_ADJUST (hitag 98)
Hitag 140: TRIGGER_SECTOR
TAG2 = Match
TAG3 = Type
0 = Trip Entering Sector
1 = Trip Leaving Sector
2 = Continuous as long as you're standing on it
3 = Operated with the SPACEBAR
TAG4 = Angle
TAG5 = Trigger definition
0 = Remote sector object trigger
1 = Lava Erupt trigger
TAG7 = Remote sector object number
BOOL1= 0: Player's view follows the sector object
1: Player's view stays at the angle of TRIGGER_SECTOR
TRIGGER_SECTOR is only used for two things: driving remote controlled
operational sector objects, and triggering LAVA_ERUPT ST1's. BOOL1
on the LAVA_ERUPT (hitag 56) sprite must be set to BOOL1 for this
trigger to work.
EXAMPLES: BF and EF in EXAMPLE.MAP
SEE ALSO: SECT_OPERATIONAL (hitag 1), LAVA_ERUPT (hitag 56)
Hitag 141: DELETE_SPRITE
TAG2 = Match
BOOL2= Move with a sector object
Place a DELETE_SPRITE ST1 at the same x, y location as another
sprite. When the TAG2 match is triggered, the sprites at the same
x, y will be deleted. Works on most sprites but not all. Some that
can be deleted include decoration sprites, vator ST1's, spike ST1's,
and room-over-room view sprites.
EXAMPLES: DF in EXAMPLE.MAP
SEE ALSO: BREAKABLE (hitag 132)
Hitag 143: SECT_ROTATOR
TAG2 = Match
TAG3 = Type
0 = Manual/Switch/Trigger. If a manual type has a
TAG2 value that is not 0 then ALL rotators,
vators, spikes, or whatever with the same TAG2
will be operated on. Rotators can be manually
operated from on top of sector or alongside of
it. A switch resets when the rotator returns to
its default position. Trigger operation is the
same as a switch but its a floor trigger instead.
1 = Switch/Trigger Only. The rotator cannot be
operated manually. All rotator types with the
same TAG2 value get operated on.
TAG5 = Angle move amount (512 = 90 degrees). Use a negative
value to make the sector rotate counter-clockwise.
TAG6 = Match at destination. When a rotator reaches its
destination it will trigger any event with this
match tag.
TAG7 = Angle increment. The speed at which the sector
rotates. Use an unsigned value.
TAG9 = Auto return time in 1/8th of a second resolution.
If non-zero then the sector will return to its default
position after the allotted time. If TAG9=0 then the
sector will remain in the ON position until the
SECT_ROTATOR is operated again.
BOOL2= 1: Can be operated only once.
BOOL4= 0: Can be operated during a WangBang game.
1: Cannot be operated during a WangBang game.
BOOL5= 1: Trigger the TAG6 match when moving to the OFF
position as well as when moving to the ON position.
BOOL6= 0: SECT_ROTATOR cannot be operated again until it's
finished moving.
1: Can operate it again while it's moving.
BOOL11=1: Displays "Single play only" message when
operated in WangBang. Use with BOOL4.
SECT_ROTATOR is used primarily to create rotating (swinging) doors,
although it has many other potential uses. Any number of red
sector walls of any shape can be rotated simultaneously around a
single pivot point, defined by SECT_ROTATOR_PIVOT (hitag 144).
EXAMPLES: EA in EXAMPLE.MAP
SEE ALSO: SECT_ROTATOR_PIVOT (hitag 144), SECT_VATOR (hitag 92),
SECT_SPIKE (hitag 106), SECT_SLIDOR (hitag 145).
Hitag 144: SECT_ROTATOR_PIVOT
TAG2 = Match
The CLOSEST SECT_ROTATOR (hitag 143) with same matching TAG2 will
rotate about this sprite.
EXAMPLES: EA in EXAMPLE.MAP
SEE ALSO: SECT_ROTATOR (hitag 143)
Hitag 145: SECT_SLIDOR
TAG2 = Match
TAG3 = Type
0 = Manual/Switch/Trigger - primarily used for manual
type. If a manual type has a match tag that is
not 0 then ALL slidors with the same match type
will be operated on. A slidor can be manually
operated from either within the sector, or to the
side. With switch operation, the switch resets
when the slidor goes to default position. With
trigger operation, it's the same as a switch but
it's a floor trigger.
1 = Switch/Trigger Only - cannot be operated manually
ALL slidors with the same matching tag get
operated on by the switch or trigger.
TAG5 = Distance to move (largest grid square is 1024).
TAG6 = Match at destination. When a slidor reaches its
destination it will trigger any event with this
match tag.
TAG7 = Move speed
TAG8 = Acceleration at which slidor approaches TAG7 speed.
TAG9 = Auto return time - 1/8th of a second resolution - if
non 0 then the slidor will return to its default
position after the allotted time. If 0 then it will
stay in the ON position until the slidor is operated
again.
BOOL2= 1: Can only operate the slidor once.
BOOL3= 1: Don't crush the player. WARNING: Never let a white
walled slidor crush the player, or the game will
quit with an error.
BOOL4= 0: Slidor can be operated during a WangBang game.
1: Slidor cannot be operated during a WangBang game.
BOOL5= 1: Insta-Close(TM) feature. Tired of not being able to
run through sliding doors in BUILD 3D mode? Leave
them open and let Shadow Warrior close them for
you. BOOL5 uses the position of the SECT_SLIDOR
sprite to close the doors.
BOOL6= 0: Slidor cannot be operated again until it stops
moving.
1: Can operate the slidor again while it's in motion.
BOOL7= 1: Call the TAG6 match when moving to the OFF position
as well as when moving to the ON position.
BOOL11=1: Displays "Single play only" message when
operated in WangBang. Use with BOOL4.
Use SECT_SLIDOR to create sliding or split doors. Several different
types can be built, both with red walls and with white walls.
Look to the game maps for various examples. IMPORTANT: The walls
that form the edges of the door must be tagged properly in order for
the slidor to work. If, in 2D mode, the door slides to the left, tag
the wall TAG_WALL_SLIDOR_LEFT (walltag 220), if it slides to the
right, tag the wall TAG_WALL_SLIDOR_RIGHT (walltag 221), if it slides
upwards, tag it TAG_WALL_SLIDOR_TOP (walltag 222), and if it slides
downwards, tag it TAG_WALL_SLIDOR_BOTTOM (walltag 223).
EXAMPLES: EA in EXAMPLE.MAP
SEE ALSO: SECT_ROTATOR (hitag 143), SECT_VATOR (hitag 92),
SECT_SPIKE (hitag 106)
Hitag 146: SECT_CHANGOR
TAG2 = Match
TAG4 = New picnum
TAG5 = Z adjustment in pixels - can be negative
TAG6 = Slope adjustment - can be negative
TAG7 = New shade value - can be negative
TAG8 = New palette value
TAG9 = New visibility value - can be negative
BOOL1= 0: Affect the floor
1: Affect the ceiling
BOOL2= 1: Do not kill this sprite after using once.
By default it is killed after one use.
Change attibutes of sector when match code is called. Can be used
to create breakable floor or ceiling textures, or other special
effects. Most commonly used for shootable lights.
EXAMPLES: EB in EXAMPLE.MAP
SEE ALSO: SECT_COPY_DEST (hitag 58), SECT_COPY_SOURCE (hitag 59)
Hitag 147: SO_DRIVABLE_ATTRIB
TAG2 = Angle speed (1 to 16384)
0 provides a default speed
TAG3 = Angle "slide" amount (1 to 100)
TAG5 = Match triggered when the driveable is operated with
the SPACEBAR.
TAG6 = Movement speed (1 to 16384)
0 provides a default speed
TAG7 = Movement "slide" amount (1 to 100)
BOOL1= 1: Don't shake the screen when running into something
BOOL2= 1: Trigger match tag TAG5 + 1 when the player
presses SPACEBAR to stop driving the sector object
BOOL3= 1: Sector object can only be driven from a remote
TRIGGER_SECTOR (hitag 140)
BOOL4= 1: Rectangular clipping - the outer 504 bounding
wall loop of the sector object serves as the
clipping box. The wall loop MUST be a 4 wall
rectangle. This is the only alternative to the
default clipping provided by the operational code.
This clipping is better behaved because it never
allows the sector object to cross sector lines.
This ST1 provides some additional control over the behavior of
driveable sector objects. It allows speed and angle velocities to be
scaled, and adds momentum with TAG3 and TAG7 to make the driving
a little more realistic. Must be placed in the center tagged
sector of the sector object.
EXAMPLES: EF in EXAMPLES.MAP
SEE ALSO: SECT_OPERATIONAL (hitag 1), SECT_SO_DONT_ROTATE (hitag 45),
SO_LIMIT_TURN (hitag 68), SO_TURN_SPEED (hitag 55)
Hitag 148: WALL_DONT_STICK
TAG4 = Point sprite at wall
Point this at a wall, and nothing will stick to that wall. This keeps
bullet holes, blood, sticky bombs, and so forth from landing on the
wall.
EXAMPLES: BB in EXAMPLE.MAP
Hitag 149: SPAWN_ITEMS
TAG2 = Match
TAG3 = Item to spawn:
0/32 = Uzi
1 = Red Key
2 = Blue Key
3 = Green Key
4 = Yellow Key
5 = Red Card
6 = Blue Card
7 = Green Card
8 = Yellow Card
9 = Gold Skeleton Key
10 = Silver Skeleton Key
11 = Bronze Skeleton Key
12 = Red Skeleton Key
20 = Uzi for Floor
40 = Repair Kit
41 = Shurikens
42 = Sticky Mines
43 = Rocket Launcher
44 = Rocket Battery
45 = Grenade Launcher
46 = Grenades
47 = Rail Gun
48 = Rail Ammo
51 = Shotgun
52 = Shotgun Ammo
53 = Head
55 = Heart
57 = Gray Armor (can't spawn red armor)
58 = Portable Medkit
59 = Small Medkit
60 = Chem Bomb
61 = Flash Bomb
62 = Nuke
63 = Caltrops
64 = Cookie
65 = Heat seeker card
66 = Cloak
67 = Night Vision
90 = Boy Bunny
91 = Girl Bunny
92 = Random Bunny
TAG4 = Angle to throw the item
TAG7 = Velocity 0 to 255
Set to 0 and the item stays in place
TAG8 = Jump velocity 0 to 255
BOOL1= 0: Kill the ST1 after it's triggered
1: Don't kill after it's triggered
BOOL2= 1: Don't spawn another item if a sprite exists in
the exact position of the SPAWN_ITEMS sprite.
This is used to spawn an item when the TAG2 match is triggered.
Used for placing items in trash cans, dropping items from the sky,
and any number of cool uses. Flag the ST1 as a Multiplayer only
item (F8 menu, option 2), and the item will only spawn during a
WangBang game.
EXAMPLES: EB in EXAMPLE.MAP
SEE ALSO: SPAWN_SPOT (hitag 69)
Hitag 150: STOP_SPOUND_SPOT
TAG2 = Match
TAG5 = Matched sound spot to stop
Use this to stop a looping sound when TAG2 is triggered. TAG5 is the
TAG2 match tag of the SOUND_SPOT (hitag 134) to be stopped.
EXAMPLES: EB in EXAMPLE.MAP
SEE ALSO: SOUND_SPOT (hitag 134)
Hitag 202: BOUND_FLOOR_BASE_OFFSET
TAG2 = Bound Floor # - First one is 0, then 1, 2, etc.
All areas with this tag in them set up a new BASE OFFSET to
move other areas to. TAG2 is the order in which they are processed.
Consider this to be the "anchor" to which BOUND_FLOOR_OFFSET
(hitag 203) areas are moved.
EXAMPLES: AB, AC, FB, and FC in EXAMPLE.MAP
SEE ALSO: BOUND_FLOOR_OFFSET (hitag 203)
Hitag 203: BOUND_FLOOR_OFFSET
TAG2 = Bound Floor # = First one is 0, then 1, 2, etc.
All bound areas with this tag in them are moved to the last
BOUND_FLOOR_BASE_OFFSET sprite. "Bound" areas means all sectors
that are either directly or indirectly attached to the sector
with BOUND_FLOOR_OFFSET in it. This allows you to build stacked
sectors separately and let Shadow Warrior overlap them for you.
Useful mainly for room-over-room and special dive sector cases.
If a sector object is part of a bound floor group, it can have
a matching 504 wall loop in the bound floor base group, which
will move and behave exactly like the sector object. This is
incredibly useful for a variety of effects, like the bottom of a
boat in the underwater sector stays with the boat in the upper
sector, and so on.
EXAMPLES: AD, AE, FE, and FF in EXAMPLE.MAP
SEE ALSO: BOUND_FLOOR_BASE_OFFSET (hitag 202)
Hitags 500-596: SECT_SO_BOUNDING
Bounding sprites for sector objects. Every sector object needs
bounding sprites, one in the upper left corner (BOUND_SO_UPPER)
and one in the lower right corner (BOUND_SO_LOWER). These two
sprites form the opposing points of an imaginary rectangle that
must encompass the entire sector object, plus any sprites you
want to move with it (like a gun barrel.) You are allowed to
have a maximum of 20 sector objects in a level. The
BOUND_SO_UPPER sprite hitag of a sector object is calculated as
500 + (5 * sector object #). The BOUND_SO_LOWER sprite hitag of
a sector object is calculated as 501 + (5 * sector object #).
So, sector object 0 uses BOUND_SO_UPPER 500 and BOUND_SO_LOWER
501. Sector object 1 uses BOUND_SO_UPPER 505 and BOUND_SO_LOWER
506. This goes up in increments of 5 all the way to sector
object 19, which uses BOUND_SO_UPPER 595 and BOUND_SO_LOWER 596.
EXAMPLES: EC, ED, EE, EF, FA, FB, and FC in EXAMPLE.MAP
Hitag 1000: MIRROR_CAM
TAG2 = Match tag
TAG4 = Angle of camera
TAG6 = Camera maximum turn angle from 0-2048. This is the angle
from center that the camera will rotate back and forth.
(512 = 90 degrees each way for 180 degrees range
of motion)
TAG7 = Camera look up/down amount. Valid values (5-195).
BOOL1= 0: Draw monitor to look like a magic view into another
place, looks more like reality.
1: Draw monitor using draw to tile. This makes it look
like a TV screen.
BOOL2= 0: Don't rotate the camera.
1: Rotate the camera by angle specified in TAG6 from
current camera angle.
BOOL3= 0: Negative turn direction
1: Positive turn direction
BOOL11=When BOOL1 is set to "1":
0: Do normal TV camera view
1: Cycle through all players' views in 5 second
increments on this monitor.
The camera's view can be displayed in a monitor built using a mirror.
Tag the mirror wall with lotag 306 and a hitag equal to the
MIRROR_CAM TAG2 match tag. NOTE: Mirrors MUST be built using one way
walls, not masked walls or they won't operate. A TV monitor requires
a TV monitor sprite (picnums 3830-3837) with a hitag equal to the
MIRROR_CAM TAG2 match tag. The TV monitor sprite must be placed in
front of a mirror.
EXAMPLES: GB and GC in EXAMPLE.MAP
Hitag 1002: AMBIENT_SOUND
TAG2 = Ambient sound number
Plays an ambient sound. Look at the ambient sound index in
SWSOUNDS.TXT to find the ambient sound number you want.
EXAMPLES: EC and ED in EXAMPLE.MAP
SEE ALSO: SOUND_SPOT (hitag 134)
Hitag 1005: ECHO_SPOT
TAG2 = Reverb setting from 100 - 200
TAG4 = Radius that the reverb effect can be heard
Causes all sounds in the area around the ECHO_SPOT to reverb by the
amount set in TAG2. Note that there is no reverb available when
using a Soundscape.
EXAMPLES: $YAMATO.MAP, plus many other game maps
Hitag 1006: DRIP_GENERATOR
TAG2 = Delay in seconds. If 0, then it uses internally
programmed delays (quite fast), otherwise it drips
every TAG2 seconds.
BOOL1= Drip type
0: Blood drips
1: Water drips
BOOL2= 0: Drips
1: No drips, do a bubble instead
Used to create a dripping or bubbling spot. The Z height of the ST1
is important, because that's the height where the drip or bubble will
spawn.
EXAMPLES: AA in EXAMPLE.MAP
---------------------------------------
2. The Shadow Warrior Track Sprite
---------------------------------------
Tracks are a powerful feature of Shadow Warrior. Similar to the "Locators"
in Duke Nukem 3D, tracks are a series of sprites which determine the path
certain game objects can follow. Sector objects, sprite objects, and
some actors can follow tracks.
2.1 Meet the Track sprites:
You can find the track sprites in the tileset starting at tile 1900 and
proceeding all the way up to tile 1999. They are blue numbers counting up
from 0 to 99. A single track uses one of these tiles, (i.e. track #0 only
uses tile 1900), so this means you can have up to 100 different tracks in a
single level. In 2D mode, the sprite will have a sign that reads "T0", "T1",
or whatever depending on which track # it is.
2.2 Building a track:
Build a track by placing track sprites all along the route you want an
object to take. All of the track sprites in a single track use the same tile
(i.e. the sprites for track #0 will all use tile 1900). When an object
follows a track, it will move in a straight line from one track sprite to the
next, then change direction and move in a straight line to the next track
sprite. It will do this around the entire track until it reaches the end,
then it will head in a straight line back to the start and begin the process
all over again. All tracks must loop like this, and a track can never cross
its own path.
2.3 Tagging a track sprite:
Track sprites only make use of their hitag and lotag. Not all track sprites
need a lotag, if you want the object to travel to that point, but don't want
to alter its behavior.
2.3.1 Lotag
The track sprite's lotag is its "tracktag." It identifies what kind
of behavior should occur at that point when an object reaches it
while following the track. Different tracktag values allow for
changing speeds, bobbing, firing, waiting, and much more.
2.3.2 Hitag
The hitag is used to give additional information for those tracktags
that need it. For instance, TRACK_SET_SPEED (tracktag 702) uses its
hightag as the actual speed value.
2.4 Using a track:
Some tracktags only work for sector object, while others only work for
actors. Most tracktags work for both sector objects and actors.
2.4.1 Sector and sprite objects
To make a sector object (or a sector object tagged as a sprite
object) follow a track, just set the sector hitag of the center
sector to the number of the track. So if you've got a track #5
in your level, you can make a sector object follow that track by
setting the center sector hitag to 5.
2.4.2 Actors
Some actors will follow a track, with varying degrees of success.
To make an actor follow a track, give the actor sprite a lotag
of 30000 + the track number. So to make a green guardian follow
track #10, you would give him a lotag of 30010. Angle the actor to
the right to make him move in the forward direction (from start to
end) or angle the actor to the left to make him move in the backward
direction (from end to start.)
2.5 Tracktag function reference:
Examples of most of these can be found throughout Shadow Warrior. A few
simple tracktags are also demonstrated in EXAMPLE.MAP.
Lotag 700: TRACK_START
Every track needs a TRACK_START and a TRACK_END (tracktag 701).
This is the first sprite on a track, and it marks the beginning.
Lotag 701: TRACK_END
Every track needs a TRACK_START (tracktag 700) and a TRACK_END.
This is the last sprite on a track. When an object encounters this,
it loops back to the TRACK_START.
Lotag 702: TRACK_SET_SPEED
Hitag = Target speed (0 to 128)
Set the target speed at this point. Setting the hitag to 0 is a good
way to make sure the object stops moving once it reaches this
point. (See the boat in $WHIRL.MAP)
Lotag 703: TRACK_STOP
Hitag = Seconds to stop
Object will pause at this point on the track for the number of
seconds in the hitag.
Lotag 704: TRACK_REVERSE
Reverses the object's direction. It will now travel along the
track in the opposite direction. Causes some tags to have an
opposite effect (e.g. tracktags 705 and 706)
Lotag 705: TRACK_SPEED_UP
Hitag = Speed offset (0 to 128)
Target speed will increase by the amount in the hitag.
Lotag 706: TRACK_SLOW_DOWN
Hitag = Speed offset (0 to 128)
Target speed will decrease by the amount in the hitag.
Lotag 707: TRACK_VEL_RATE
Hitag = Acceleration (1 to 12, default 6)
The rate at which the actual speed approaches the target speed.
Lotag 709: TRACK_ZUP
Hitag = Pixel amount
Moves the floor of the object up by the number of pixels in the
hitag.
Lotag 710: TRACK_ZDOWN
Hitag = Pixel amount
Moves the floor of the object down by the number of pixels in the
hitag.
Lotag 711: TRACK_ZRATE
Hitag = Rate
Sets the rate at which TRACK_ZUP/TRACK_ZDOWN moves. Defaults to 256.
Lotag 712: TRACK_ZDIFF_MODE
Hitag = Z offset
Special mode where the object looks at the Z-height of the next track
point and moves up or down to achieve the destination. In the hitag
is a negative delta Z from the placement of the track sprites Z
value.
Lotag 715: TRACK_SPIN
Hitag = Spin speed
Object spins clockwise as it goes along its track.
Lotag 716: TRACK_SPIN_STOP
Hitag = Angle (0 to 2048)
Object stops spinning. It will then point in the direction indicated
by the hitag.
Lotag 717: TRACK_BOB_START
Hitag = Pixel height to bob
Causes a sector object to start bobbing up and down like a cork.
Lotag 718: TRACK_BOB_SPEED
Hitag = Speed at which to bob
Sets the speed at which a sector object will bob.
Lotag 719: TRACK_BOB_STOP
The sector object will stop bobbing.
Lotag 720: TRACK_SPIN_REVERSE
Hitag = Spin speed
Object spins counter-clockwise as it goes along its track.
Lotag 723: TRACK_SO_SINK
Hitag = Speed of sinking
Start sector object sinking to ST1 SECT_SO_SINK_DEST (hitag 33).
Will sink at the speed in the hitag. Look at the boat in $WHIRL.MAP
for an example.
Lotag 724: TRACK_SO_FORM_WHIRLPOOL
Will cause a sector object to lower the sectors tagged with
SECT_SO_FORM_WHIRLPOOL (hitag 37) ST1. Look at the boat in
$WHIRL.MAP for an example.
Lotag 725: TRACK_MOVE_VERTICAL
Hitag = Speed of movement - default is 256
Move sprite objects (not sector objects) straight up or down in the
Z direction to the next point's Z height then continue along the
track.
Lotag 726: TRACK_WAIT_FOR_EVENT
Hitag = Match
Object will wait at this point on the track for a trigger or switch
to be activated. Most types of triggers and switches with the same
match tag can be used to free the sector object to continue. Look
at the moving crane in $SEABASE.MAP for an example.
Lotag 728: TRACK_MATCH_EVERYTHING
Hitag = Match
When the object or actor reaches this point, it will trigger
everything with this match tag.
Lotag 729: TRACK_MATCH_EVERYTHING_ONCE
Hitag = Match
When the object or actor reaches this point, it will trigger
everything with this match tag once, and never again.
Lotag 751: TRACK_ACTOR_STOP
Hitag = Seconds
Causes an actor to stop for the number of seconds in the hitag.
Lotag 752: TRACK_ACTOR_REVERSE
Reverses the actor's direction. It will now travel along the
track in the opposite direction. Note that tracktags 753 and
754 will have the opposite effect when traveling the reverse
direction
Lotag 753: TRACK_ACTOR_SPEED_UP
Hitag = Speed offset (0 to 128)
The actor's target speed will increase by the amount in the hitag.
Lotag 754: TRACK_ACTOR_SLOW_DOWN
Hitag = Speed offset (0 to 128)
The actor's target speed will decrease by the amount in the hitag.
Lotag 755: TRACK_ACTOR_VEL_RATE
Hitag = Acceleration (1 to 12, default 6)
The rate at which the actor's actual speed approaches the target
speed.
Lotag 771: TRACK_ACTOR_JUMP
Hitag = Height to jump (default 384)
Actor will jump. Only works with actors who can jump, like evil
ninjas, rippers, and bunnies.
Lotag 772: TRACK_ACTOR_CRAWL
Causes an actor to crawl. Only works with evil ninjas.
Lotag 780: TRACK_ACTOR_CLOSE_ATTACK1
An actor will do his close range attack, like the sword attack in the
case of the green guardian.
Lotag 782: TRACK_ACTOR_ATTACK1
An actor will do his long range attack, like shooting fireballs in
the case of the green guardian.
Lotag 791: TRACK_ACTOR_OPERATE
Point the track sprite angle in the direction of the operable
sector, wall, or switch. Actor will operate the switch, door, or
whatever, just like a player pressing SPACEBAR. May only work in
certain cases.
Lotag 792: TRACK_ACTOR_CLIMB_LADDER
The track sprite angle must be facing the ladder. Only evil ninjas
can climb ladders.
Lotag 799: TRACK_ACTOR_WAIT_FOR_PLAYER
Hitag = Range (Largest grid square = 1024)
The actor will wait for the player to come into range before moving
from this point. Look at the rabbit on the mountain in $SHRINE.MAP
for an example of this.
-------------------------------
3. Other Important Sprites
-------------------------------
3.1 Actors:
3.1.1 Hornets (picnum 800)
Use a sprite with picnum 800 to place a hornet in your map.
3.1.2 Bouncing Betty (picnum 817)
This sprite also comes in voxel (3D sprite) format. This actor is
functionally the same as an "Accursed Head." A betty can be tagged
to produce different effects. Set the HITAG to these values for
the following effects:
Hitag 0: Explosion (The betty just explodes)
Hitag 1: ChemBombs
Lotag = # of chembombs to spawn (max 3, default 2)
Hitag 2: Caltrops
Lotag = # of caltrops to spawn (max 10, default 5)
Hitag 3: Flash effect (blinds the player like a FlashBomb)
Hitag 4: Grenades
Lotag = # of grenades to spawn (max 10, default 5)
3.1.3 Accursed Head (picnum 820)
These are functionally the same as a bouncing betty and can be
tagged similarly. (see above)
3.1.4 Sumo Boss (picnum 1210)
If you set the sprite's palette to 16, he will be a "mini-boss,"
which is smaller and less powerful.
3.1.5 Serpent Boss (picnum 1300)
If you set the sprite's palette to 16, he will be a "mini-boss,"
which is smaller and less powerful.
3.1.6 Coolie (picnum 1400)
Use a sprite with picnum 1400 to place a coolie in your map.
3.1.7 Coolie Ghost (picnum 1441)
Use a sprite with picnum 1441 to place a coolie ghost in your map.
3.1.8 Green Guardian (picnum 1469)
Use a sprite with picnum 1469 to place a guardian in your map.
3.1.9 Little Ripper (picnum 1580)
If you set the sprite's palette to 7, he will become a big boss
ripper.
3.1.10 Fish (picnum 3780)
Use a sprite with picnum 3780 to place a fish in your map.
3.1.11 Evil Ninja (picnum 4096)
You can set the palette on an Evil Ninja to make him fire different
kinds of weaponry.
Palette 0: Default. His pants appear blue in BUILD, but will be
brown in the game. This ninja throws shurikens.
Palette 17: Gray ninja. He's tough and fires grenades.
Palette 19: Red ninja. He's tough and fires rockets.
Palette 21: Shadow ninja. He's really tough and can fire two kinds
of napalm, plus use flash bombs.
Palette 24: Orange ninja. Like a red ninja but fires heat seeking
rockets.
3.1.12 Crouching Evil Ninja (picnum 4162)
This type of ninja stays crouched except to fire at the player. This
is great for ducking behind crates and whatnot. His palette can be
set just like the regular evil ninja, and he will take on the
toughness of that color, but he won't fire the heavy weaponry.
3.1.13 Big Ripper (picnum 4320)
If you set the sprite's palette to 7, he will become a big boss
ripper.
3.1.14 Bunny (picnum 4550)
Bunnies come in three flavors. Set their palette to define which
kind the actor is. You can also scale a bunny down to make it
younger. It will grow into an adult before mating.
Palette 0: Female bunny. Appears blue in BUILD but will be light
brown in the game.
Palette 17: White bunny. Monty Python style killer rabbit.
Palette 24: Male bunny. Orange-brown colored.
3.1.15 Female Warrior (picnum 5162)
Use a sprite with picnum 5162 to place a female warrior in your map.
3.1.16 Zilla Boss (picnum 5426)
Use a sprite with picnum 5426 to place a Zilla boss in your map.
There is no mini-boss version of Zilla.
3.1.17 Leaders And Followers
Give an actor a hitag of 1008 and it will be part of a group
mentality. If the actor has a lotag of 1, it will be a follower,
while if it has a lotag of 2, it will be a leader. Followers will
hover around the nearest leader unless the player is within range.
This works especially well with rippers and fish.
3.1.18 Spawning Actors With A Trigger
Give any actor TAG_SPAWN_ACTOR (lotag 203), and it will not appear
in the map immediately when you start out. The hitag of the actor is
a match tag. When that match tag is triggered, with a floor trigger
or a switch or whatever, the actor will be magically teleported in.
3.2 Cracks (TAG_SPRITE_HIT_MATCH):
Any sprite in the game can be given a lotag of 257 and it will then become a
TAG_SPRITE_HIT_MATCH. This means that when the sprite is shot by the player,
it will trigger any event matched to the hitag of the TAG_SPRITE_HIT_MATCH
sprite. By default, the sprite will be invisible, unless it uses picnum 80,
in which case it will be visible. Picnum 188 is another crack sprite,
designed to be usable on ceilings or floors, but it will still be invisible
by default. Here's the info:
Lotag 257: TAG_SPRITE_HIT_MATCH
Hitag = Match. Can trigger anything.
TAG3 = Default is 32. The larger this number, the more
sensitive the sprite is to explosion radius.
TAG7 = Reacts to ammo type:
0: Default. React only to explosions with radius
damage.
1: React only to a direct hit by a weapon with
explosive radius. (e.g. Hit it directly with a
rocket)
2: React to any explosive weapon or any hitscan
weapon (uzis or shotgun).
3: React to any weapon hit, including shurikens,
sword, and fist.
4: React only to sector object weapon fire. This
means any type of sector object weapon, including
machine gun.
TAG8 = This is kind of a weird tag. Add the numbers of the
effects you want together and put the total in TAG8:
+1: Force the sprite to be invisible
+2: Force the sprite to be visible
+4: Do not kill this sprite when it is hit. Can be
triggered over and over again
+8: Bouncing a grenade off of the sprite counts as a
hit
EXAMPLES: Rooms CA and EB in EXAMPLE.MAP.
3.3 Switches: (picnums 551-584)
Any sprite can be tagged as a switch, but it will only animate if it's using
one of the picnums (551-584). There are several different switch tags, used
to activate different types of events. A switch sprite's lotag identifies
what kind of switch it is, while its hitag is a match tag to the event you
wish to trigger. In most cases a switch will not make a sound. You must place
a SOUND_SPOT (hitag 134) ST1 nearby with a TAG2 that matches the switch's
hitag. I recommend sound #201 for most switches. Here is a list of the
different switch lotags you can use:
Lotag 206: TAG_SPRITE_SWITCH_VATOR
Hitag = Match
This switch is used to activate vators, spikes, rotators, and
slidors - basically any kind of door. This is the best switch to use
with a door because multiple switches with the same match will
animate, and the switch pays attention to auto-closing doors, doors
that have a player holding them open, etc. etc. When placing the
switch in the BUILD editor, be sure to use the frame that matches
the door's starting position. For instance, if BOOL1 is set to "1" on
a vator, be sure to use the second frame of a switch, because that
door considers itself to be "on." Otherwise, the switch might not
animate the first time you operate it.
Lotag 210: TAG_LIGHT_SWITCH
Hitag = Match
This switch can only be used to activate LIGHTING (hitag 108) ST1's,
but there's no real good reason to do this, since a
TAG_SWITCH_EVERYTHING (lotag 211) will work just as well. It's only
included here because you'll find it in several Shadow Warrior maps.
Lotag 211: TAG_SWITCH_EVERYTHING
Hitag = Match
This switch is the one you will use most often, because it can
trigger any event in the game.
Lotag 212: TAG_SWITCH_EVERYTHING_ONCE
Hitag = Match
This is the same as TAG_SWITCH_EVERYTHING (lotag 211) in that it can
be used to trigger any event, but this switch can only be activated
once, and never again.
Lotag 213: TAG_COMBO_SWITCH_EVERYTHING
Hitag = Match
TAG3 = 0: The switch must be off to trigger the event
1: The switch must be on to trigger the event
Every COMBO switch in the level with the same hitag must be in the
state specified by their TAG3 before the event will be triggered.
This switch can trigger any event. COMBO switches make sound
automatically, without a SOUND_SPOT (hitag 134) ST1.
Lotag 214: TAG_COMBO_SWITCH_EVERYTHING_ONCE
Hitag = Match
TAG3 = 0: The switch must be off to trigger the event
1: The switch must be on to trigger the event
Every COMBO switch in the level with the same hitag must be in the
state specified by their TAG3 before the event will be triggered.
This switch can trigger any event. COMBO switches make sound
automatically, without a SOUND_SPOT (hitag 134) ST1. Once the combo
is properly triggered, it can never be triggered again.
Lotag 216: TAG_SPAWN_ACTOR_SWITCH
Hitag = Match
This switch can only be used to spawn actors with a lotag of 203.
The actors and the switch must have the same hitag.
Lotag 304: TAG_ROTATE_SO_SWITCH
Hitag = # of the sector object to rotate
Operating this switch causes a sector object to rotate smoothly
clockwise 90 degrees. We never found a place to use this in Shadow
Warrior, but it's a pretty cool feature nevertheless. This switch
has an automatic sound associated with it, and is demonstrated in
EXAMPLE.MAP, room FD.
3.3.1 Shootable switch (picnum 577)
Switch tile 577 is unique, because it can be shot by the player
to activate and deactivate. Don't match this switch to a locked door,
though, because the door can be activated by shooting the switch,
despite its locked status.
3.3.2 Exit switch (picnum 2470)
An exit switch causes the level to end when the player operates it,
and the bonus or frag screen is displayed. Any switch can be tagged
as an exit switch, but tile 2470 is the graphic that Shadow Warrior
usually uses. An exit switch must have a lotag of 116. The hitag
specifies which level to go to next, but this only works if the
map has the same filename as one of the official Shadow Warrior
game maps. For a standard external map, a hitag of 0 will suffice.
3.4 Keys And Keyholes:
3.4.1 Keys (picnums 1765-1779)
These are the keys used to unlock doors (ignore the little dog
sprites.) You can mix and match key types in a level, but be
aware that some keys will overwrite the others in the status bar
when the player picks it up. A gold master key will overwrite
a red keycard, a silver master key will overwrite a blue keycard,
a bronze master key will overwrite a green keycard, and a red
master key will overwrite a yellow keycard.
3.4.2 Keyholes (picnums 1846, 1850, and 1852)
These are the sprites the player operates to unlock a door with
a key. Always set the lotag to 29. Set the hitag equal to the lotag
of the SECT_LOCK_DOOR (hitag 29) ST1. The BUILD editor will
automatically set the palette of the keyhole when you re-enter 3D
mode from 2D mode. Use the correct style of keyhole to match the
desired key.
3.5 TV Monitors: (picnums 3830-3837)
These sprites are used in conjunction with mirrors and MIRROR_CAM
(hitag 1000) ST1. Rotate the monitor sprite flat and place it in front of the
mirror, facing out away from the wall. Give it a hitag equal to TAG2 of the
MIRROR_CAM. This is only necessary for TV monitors, not for magic monitors.
See EXAMPLE.MAP for a demonstration of how to build this.
3.6 QuickJump And QuickJumpDown
3.6.1 QuickJump (picnum 2309)
This is a special sector effector. When an actor steps on the QJ
sprite, he will jump in the direction the sprite is pointing. This
is a good way to get actors to jump up onto ledges, and it looks
pretty cool. Only jumping actors (ninjas, bunnies, and rippers) are
affected by this.
3.6.2 QuickJumpDown (picnum 2310)
This is another special sector effector, similar to QuickJump.
When an actor steps on the QJD sprite, he will jump down off a
ledge in the direction the sprite is pointing. Make ninjas leap
down on the player from high ledges. Only jumping actors (ninjas,
bunnies, and rippers) are affected by this.
3.7 Gratings
Gratings can be tagged so the player can operate them by pressing
the SPACEBAR on them. Point the grating sprite in the direction you
want it to move. The lotag must be 200. The hitag is the distance
the sprite will move, 1024 is a good distance. This feature may have
other applications.
3.8 DeathFlag(tm) Capture the Flag
Shadow Warrior has a pretty cool Capture the Flag facility that we didn't
really take advantage of in the game.
3.8.1 The Flag Sprite (picnum 2520)
HITAG= 0: Default. Flag explodes if carried for longer
than 30 seconds, or if carrier dies. The flag
respawns every 30 seconds.
1003: Flag carrier must die or score before the flag
will respawn back at the base.
LOTAG= Match. When the carrier scores with this flag, this
match tag will be triggered. Reward a score with
free items, trigger a sound, whatever.
TAG5 = If non-zero, the match in TAG6 will be triggered when
this flag is scored this many times. Make a special
reward happen every ten points, or open a secret
passage to the exit when the score reaches 25.
TAG6 = Secondary match. Used with TAG5.
BOOL1= 0: The score is incremented when the carrier enters
the score sector.
1: Do not score when entering the score sector. This
feature can be used for a flag that you just
want to trigger things with, but not score. For
example: a map might have a red base and a blue
base, and a neutral yellow flag. Teams race to
get the yellow flag which when returned to their
base, causes the path to the opposing team's flag
to open up.
PAL: 16: Brown (you must set the flag's palette)
17: Gray
18: Purple
19: Red
20: Yellow
21: Olive
22: Green
23: Blue
A level can have multiple flags of any type or color, allowing for a
variety of possibilities, including up to eight teams. NOTE: A flag
will automatically tag the sector it's in with a sector
hitag 9000, and a sector lotag equal to the flag's palette. You
can create a scoring sector anywhere in the map in addition to the
flag's sector just by using these tags.