mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2024-11-29 23:22:32 +00:00
2388 lines
No EOL
99 KiB
Text
Executable file
2388 lines
No EOL
99 KiB
Text
Executable file
>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<
|
||
> <
|
||
> BOOM reference v1.3 4/12/98 <
|
||
> <
|
||
>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<
|
||
|
||
======================================================================
|
||
Part I Linedef Types
|
||
======================================================================
|
||
|
||
#######################
|
||
Section 0. Terminology
|
||
#######################
|
||
|
||
In BOOM actions are caused to happen in the game thru linedef types.
|
||
BOOM has three kinds of linedef types:
|
||
|
||
Regular - the linedef types that were already in DOOM II v1.9
|
||
|
||
Extended - linedef types not in DOOM II v1.9 but less than 8192
|
||
in value
|
||
|
||
Generalized - linedef types over 8192 in value that contain bit
|
||
fields that independently control the actions of the sector
|
||
affected.
|
||
|
||
A linedef with non-zero linedef type is called a linedef trigger. A
|
||
linedef trigger is always activated in one of three ways - pushing on
|
||
the first sidedef of the linedef, walking over the linedef, or
|
||
shooting the linedef with an impact weapon (fists, chainsaw, pistol,
|
||
shotgun, double barreled, or chaingun).
|
||
|
||
Linedefs activated by pushing on them come in two varieties. A manual
|
||
linedef affects the sector on the second sidedef of the line pushed.
|
||
A switched linedef affects all sectors that have the same tag field
|
||
as the linedef that was pushed.
|
||
|
||
Nearly all switched, walkover, and gun linedefs operate on the sectors
|
||
with the same tag as that in the tag field of the linedef.
|
||
|
||
Some linedefs are never activated per se, but simply create or control
|
||
an effect thru their existence and properties, usually affecting the
|
||
sectors sharing the linedef's tags. There are also a few special case
|
||
like line-line teleporters and exit linedefs that do not affect
|
||
sectors.
|
||
|
||
Some linedefs are only triggerable once, others are triggerable as
|
||
many times as you like.
|
||
|
||
Triggering types are denoted by the letters P, S, W, and G for
|
||
manual(push), switched, walkover, and gun. Their retriggerability is
|
||
denoted by a 1 or R following the letter. So the triggering types for
|
||
linedefs are:
|
||
|
||
P1 PR S1 SR W1 WR G1 GR
|
||
|
||
Often linedef actions depend on values in neighboring sectors. A
|
||
neighboring sector is one that shares a linedef in common, just
|
||
sharing a vertex is not sufficient.
|
||
|
||
In DOOM only one action on a sector could occur at a time. BOOM
|
||
supports one floor action, one ceiling action, and one lighting
|
||
action simultaneously.
|
||
|
||
|
||
################
|
||
Section 1. Doors
|
||
################
|
||
|
||
A door is a sector, usually placed between two rooms, whose ceiling
|
||
raises to open, and lowers to close.
|
||
|
||
A door is fully closed when its ceiling height is equal to its floor
|
||
height.
|
||
|
||
A door is fully open when its ceiling height is 4 less than the lowest
|
||
neighbor ceiling adjacent to it.
|
||
|
||
A door may be set to an intermediate state initially, or thru the action
|
||
of a linedef trigger that affects ceilings or floors. The door is passable
|
||
to a player when its ceiling is at least 56 units higher than its floor.
|
||
In general the door is passable to a monster or a thing when its ceiling
|
||
is at least the monster or thing's height above the floor.
|
||
|
||
If a door has a ceiling height ABOVE the fully open height, then an
|
||
open door action moves the ceiling to the fully open height
|
||
instantly.
|
||
|
||
If a door has a ceiling height BELOW the fully closed height (that is
|
||
the ceiling of the door sector is lower than the floor of the door
|
||
sector) a close door action moves the ceiling to the fully closed
|
||
height instantly.
|
||
|
||
--------------------------
|
||
Section 1.1 Door functions
|
||
--------------------------
|
||
|
||
Open, Wait, Then Close
|
||
|
||
On activation, door opens fully, waits a specified period, then
|
||
closes fully.
|
||
|
||
Open and Stay Open
|
||
|
||
On activation, door opens fully and remains there.
|
||
|
||
Close and Stay Closed
|
||
|
||
On activation, door closes fully, and remains there.
|
||
|
||
Close, Wait, Then Open
|
||
|
||
On activation, door closes fully, waits a specified period, then
|
||
opens fully.
|
||
|
||
------------------------------
|
||
Section 1.2 Varieties of doors
|
||
------------------------------
|
||
|
||
A door can be triggered by pushing on it, walking over or pressing a
|
||
linedef trigger tagged to it, or shooting a linedef tagged to it.
|
||
These are called manual, walkover, switched, or gun doors resp.
|
||
|
||
Since a push door (P1/PR) has no use for its tag, BOOM has extended
|
||
the functionality to include changing any tagged sectors to maximum
|
||
neighbor lighting on fully opening, then to minimum neighbor lighting
|
||
on fully closing. This is true for regular, extended, and generalized
|
||
doors with push triggers.
|
||
|
||
A door trigger can be locked. This means that the door function will only
|
||
operate if the player is in possession of the right key(s). Regular
|
||
and extended door triggers only care if the player has a key of the
|
||
right color, they do not care which. Generalized door triggers
|
||
can distinguish between skull and card keys, and can also require
|
||
any key, or all keys in order to activate.
|
||
|
||
A door can have different speeds, slow, normal, fast or turbo.
|
||
|
||
A door can wait for different amounts of time.
|
||
|
||
A door may or may not be activatable by monsters.
|
||
|
||
Any door function except Close and Stay Closed, when closing and
|
||
encountering a monster or player's head will bounce harmlessly off
|
||
that head and return to fully open. A Close and Stay Closed will rest
|
||
on the head until it leaves the door sector.
|
||
|
||
------------------------------
|
||
Section 1.3 Door linedef types
|
||
------------------------------
|
||
|
||
Regular and Extended Door Types
|
||
---------------------------------------------------------------
|
||
# Class Trig Lock Speed Wait Monst Function
|
||
|
||
1 Reg PR No Slow 4s Yes Open, Wait, Then Close
|
||
117 Reg PR No Fast 4s No Open, Wait, Then Close
|
||
63 Reg SR No Slow 4s No Open, Wait, Then Close
|
||
114 Reg SR No Fast 4s No Open, Wait, Then Close
|
||
29 Reg S1 No Slow 4s No Open, Wait, Then Close
|
||
111 Reg S1 No Fast 4s No Open, Wait, Then Close
|
||
90 Reg WR No Slow 4s No Open, Wait, Then Close
|
||
105 Reg WR No Fast 4s No Open, Wait, Then Close
|
||
4 Reg W1 No Slow 4s No Open, Wait, Then Close
|
||
108 Reg W1 No Fast 4s No Open, Wait, Then Close
|
||
|
||
31 Reg P1 No Slow -- No Open and Stay Open
|
||
118 Reg P1 No Fast -- No Open and Stay Open
|
||
61 Reg SR No Slow -- No Open and Stay Open
|
||
115 Reg SR No Fast -- No Open and Stay Open
|
||
103 Reg S1 No Slow -- No Open and Stay Open
|
||
112 Reg S1 No Fast -- No Open and Stay Open
|
||
86 Reg WR No Slow -- No Open and Stay Open
|
||
106 Reg WR No Fast -- No Open and Stay Open
|
||
2 Reg W1 No Slow -- No Open and Stay Open
|
||
109 Reg W1 No Fast -- No Open and Stay Open
|
||
46 Reg GR No Slow -- No Open and Stay Open
|
||
|
||
42 Reg SR No Slow -- No Close and Stay Closed
|
||
116 Reg SR No Fast -- No Close and Stay Closed
|
||
50 Reg S1 No Slow -- No Close and Stay Closed
|
||
113 Reg S1 No Fast -- No Close and Stay Closed
|
||
75 Reg WR No Slow -- No Close and Stay Closed
|
||
107 Reg WR No Fast -- No Close and Stay Closed
|
||
3 Reg W1 No Slow -- No Close and Stay Closed
|
||
110 Reg W1 No Fast -- No Close and Stay Closed
|
||
|
||
196 Ext SR No Slow 30s No Close, Wait, Then Open
|
||
175 Ext S1 No Slow 30s No Close, Wait, Then Open
|
||
76 Reg WR No Slow 30s No Close, Wait, Then Open
|
||
16 Reg W1 No Slow 30s No Close, Wait, Then Open
|
||
|
||
Regular and Extended Locked Door Types
|
||
---------------------------------------------------------------
|
||
# Class Trig Lock Speed Wait Monst Function
|
||
|
||
26 Reg PR Blue Slow 4s No Open, Wait, Then Close
|
||
28 Reg PR Red Slow 4s No Open, Wait, Then Close
|
||
27 Reg PR Yell Slow 4s No Open, Wait, Then Close
|
||
|
||
32 Reg P1 Blue Slow -- No Open and Stay Open
|
||
33 Reg P1 Red Slow -- No Open and Stay Open
|
||
34 Reg P1 Yell Slow -- No Open and Stay Open
|
||
99 Reg SR Blue Fast -- No Open and Stay Open
|
||
134 Reg SR Red Fast -- No Open and Stay Open
|
||
136 Reg SR Yell Fast -- No Open and Stay Open
|
||
133 Reg S1 Blue Fast -- No Open and Stay Open
|
||
135 Reg S1 Red Fast -- No Open and Stay Open
|
||
137 Reg S1 Yell Fast -- No Open and Stay Open
|
||
|
||
|
||
There are two generalized door linedef types, Generalized Door, and
|
||
Generalized Locked Door. The following tables show the possibilities
|
||
for each parameter, any combination of parameters is allowed:
|
||
|
||
Slow and Fast represent the same speeds as slow and fast regular doors. Normal
|
||
is twice as fast as slow, Fast is twice normal, Turbo is twice Fast.
|
||
|
||
Generalized Door Types
|
||
---------------------------------------------------------------
|
||
# Class Trig Lock Speed Wait Monst Function
|
||
|
||
3C00H- Gen P1/PR No Slow 1s Yes Open, Wait, Then Close
|
||
4000H S1/SR Normal 4s No Open and Stay Open
|
||
W1/WR Fast 9s Close and Stay Closed
|
||
G1/GR Turbo 30s Close, Wait, Then Open
|
||
|
||
|
||
Generalized Locked Door Types
|
||
---------------------------------------------------------------
|
||
# Class Trig Lock Speed Wait Monst Function
|
||
|
||
3800H- Gen P1/PR Any Slow 1s No Open, Wait, Then Close
|
||
3C00H S1/SR Blue Normal 4s Open and Stay Open
|
||
W1/WR Red Fast 9s Close and Stay Closed
|
||
G1/GR Yell Turbo 30s Close, Wait, Then Open
|
||
BlueC
|
||
RedC
|
||
YellC
|
||
BlueS
|
||
RedS
|
||
YellS
|
||
All3
|
||
All6
|
||
|
||
#################
|
||
Section 2. Floors
|
||
#################
|
||
|
||
----------------------------
|
||
Section 2.1 Floor targets
|
||
----------------------------
|
||
|
||
Lowest Neighbor Floor (LnF)
|
||
|
||
This means that the floor moves to the height of the lowest
|
||
neighboring floor including the floor itself. If the floor
|
||
direction is up (only possible with generalized floors) motion is
|
||
instant, else at the floor's speed.
|
||
|
||
Next Neighbor Floor (NnF)
|
||
|
||
This means that the floor moves up to the height of the lowest
|
||
adjacent floor greater in height than the current, or down to the
|
||
height of the highest adjacent floor less in height than the current,
|
||
as determined by the floor's direction. Instant motion is not
|
||
possible in this case. If no such floor exists, the floor does not move.
|
||
|
||
Lowest Neighbor Ceiling (LnC)
|
||
|
||
This means that the floor height changes to the height of the lowest
|
||
ceiling possessed by any neighboring sector, including that floor's
|
||
ceiling. If the target height is in the opposite direction to floor
|
||
motion, motion is instant, otherwise at the floor action's speed.
|
||
|
||
8 Under Lowest Neighbor Ceiling (8uLnC)
|
||
|
||
This means that the floor height changes to 8 less than the height
|
||
of the lowest ceiling possessed by any neighboring sector, including
|
||
that floor's ceiling. If the target height is in the opposite
|
||
direction to floor motion, motion is instant, otherwise at the floor
|
||
action's speed.
|
||
|
||
Highest Neighbor Floor (HnF)
|
||
|
||
This means that the floor height changes to the height of the highest
|
||
neighboring floor, excluding the floor itself. If no neighbor floor
|
||
exists, the floor moves down to -32000. If the target height is in
|
||
the opposite direction to floor motion, the motion is instant,
|
||
otherwise it occurs at the floor action's speed.
|
||
|
||
8 Above Highest Neighbor Floor (8aHnF)
|
||
|
||
This means that the floor height changes to 8 above the height of
|
||
the highest neighboring floor, excluding the floor itself. If no
|
||
neighbor floor exists, the floor moves down to -31992. If the target
|
||
height is in the opposite direction to floor motion, the motion is
|
||
instant, otherwise it occurs at the floor action's speed.
|
||
|
||
Ceiling
|
||
|
||
The floor moves up until its at ceiling height, instantly if floor
|
||
direction is down (only available with generalized types), at the
|
||
floor speed if the direction is up.
|
||
|
||
24 Units (24)
|
||
|
||
The floor moves 24 units in the floor action's direction. Instant
|
||
motion is not possible with this linedef type.
|
||
|
||
32 Units (32)
|
||
|
||
The floor moves 32 units in the floor action's direction. Instant
|
||
motion is not possible with this linedef type.
|
||
|
||
512 Units (512)
|
||
|
||
The floor moves 512 units in the floor action's direction. Instant
|
||
motion is not possible with this linedef type.
|
||
|
||
Shortest Lower Texture (SLT)
|
||
|
||
The floor moves the height of the shortest lower texture on the
|
||
boundary of the sector, in the floor direction. Instant motion is not
|
||
possible with this type. In the case that there is no surrounding
|
||
texture the motion is to -32000 or +32000 depending on direction.
|
||
|
||
None
|
||
|
||
Some pure texture type changes are provided for changing the floor
|
||
texture and/or sector type without moving the floor.
|
||
|
||
--------------------------------
|
||
Section 2.2 Varieties of floors
|
||
--------------------------------
|
||
|
||
A floor can be activated by pushing on a linedef bounding it
|
||
(generalized types only), or by pushing on a switch with the same tag
|
||
as the floor sector, or by walking over a linedef with the same tag
|
||
as the floor, or by shooting a linedef with the same tag as the
|
||
floor with an impact weapon.
|
||
|
||
A floor can move either Up or Down.
|
||
|
||
A floor can move with speeds of Slow, Normal, Fast, or Turbo. If the
|
||
target height specified by the floor function (see Floor Targets
|
||
above) is in the opposite direction to the floor's motion, then
|
||
travel is instantaneous, otherwise its at the speed specified.
|
||
|
||
A floor action can be a texture change type, in which case after the
|
||
action the floor texture of the affected floor, and possibly the
|
||
sector type of the affected floor are changed to those of a model
|
||
sector. The sector type may be zeroed instead of copied from the
|
||
model, or not changed at all. These change types are referred to
|
||
below as Tx (texture only), Tx0 (type zeroed), and TxTy (texture and
|
||
type changed). The model sector for the change may be the sector on
|
||
the first sidedef of the trigger (trigger model) or the sector with
|
||
floor at destination height across the lowest numbered two-sided
|
||
linedef surrounding the affected sector (numeric model). If no model
|
||
sector exists, no change occurs. If a change occurs, floor texture is
|
||
always affected, lighting is never affected, even that corresponding
|
||
to the sector's type, nor is any other sector property other than the
|
||
sector's type.
|
||
|
||
Numeric model algorithm:
|
||
|
||
1) Find all floors adjacent to the tagged floor at destination height
|
||
2) Find the lowest numbered linedef separating those floors from that tagged
|
||
3) The sector on the other side of that linedef is the model
|
||
|
||
A floor action can have the crush property, in which case players and
|
||
monsters are crushed when the floor tries to move above the point
|
||
where they fit exactly underneath the ceiling. This means they take
|
||
damage until they die, leave the sector, or the floor action is stopped.
|
||
A floor action never reverses on encountering an obstacle, even if
|
||
the crush property is not true, the floor merely remains in the same
|
||
position until the obstacle is removed or dies, then continues.
|
||
|
||
-------------------------------
|
||
Section 2.3 Floor linedef types
|
||
-------------------------------
|
||
|
||
Regular and Extended Floor Types
|
||
-------------------------------------------------------------------
|
||
# Class Trig Dir Spd Chg Mdl Mon Crsh Target
|
||
|
||
60 Reg SR Dn Slow None -- No No Lowest Neighbor Floor
|
||
23 Reg S1 Dn Slow None -- No No Lowest Neighbor Floor
|
||
82 Reg WR Dn Slow None -- No No Lowest Neighbor Floor
|
||
38 Reg W1 Dn Slow None -- No No Lowest Neighbor Floor
|
||
|
||
177 Ext SR Dn Slow TxTy Num No No Lowest Neighbor Floor
|
||
159 Ext S1 Dn Slow TxTy Num No No Lowest Neighbor Floor
|
||
84 Reg WR Dn Slow TxTy Num No No Lowest Neighbor Floor
|
||
37 Reg W1 Dn Slow TxTy Num No No Lowest Neighbor Floor
|
||
|
||
69 Reg SR Up Slow None -- No No Next Neighbor Floor
|
||
18 Reg S1 Up Slow None -- No No Next Neighbor Floor
|
||
128 Reg WR Up Slow None -- No No Next Neighbor Floor
|
||
119 Reg W1 Up Slow None -- No No Next Neighbor Floor
|
||
|
||
132 Reg SR Up Fast None -- No No Next Neighbor Floor
|
||
131 Reg S1 Up Fast None -- No No Next Neighbor Floor
|
||
129 Reg WR Up Fast None -- No No Next Neighbor Floor
|
||
130 Reg W1 Up Fast None -- No No Next Neighbor Floor
|
||
|
||
222 Ext SR Dn Slow None -- No No Next Neighbor Floor
|
||
221 Ext S1 Dn Slow None -- No No Next Neighbor Floor
|
||
220 Ext WR Dn Slow None -- No No Next Neighbor Floor
|
||
219 Ext W1 Dn Slow None -- No No Next Neighbor Floor
|
||
|
||
64 Reg SR Up Slow None -- No No Lowest Neighbor Ceiling
|
||
101 Reg S1 Up Slow None -- No No Lowest Neighbor Ceiling
|
||
91 Reg WR Up Slow None -- No No Lowest Neighbor Ceiling
|
||
5 Reg W1 Up Slow None -- No No Lowest Neighbor Ceiling
|
||
24 Reg G1 Up Slow None -- No No Lowest Neighbor Ceiling
|
||
|
||
65 Reg SR Up Slow None -- No Yes Lowest Neighbor Ceiling - 8
|
||
55 Reg S1 Up Slow None -- No Yes Lowest Neighbor Ceiling - 8
|
||
94 Reg WR Up Slow None -- No Yes Lowest Neighbor Ceiling - 8
|
||
56 Reg W1 Up Slow None -- No Yes Lowest Neighbor Ceiling - 8
|
||
|
||
45 Reg SR Dn Slow None -- No No Highest Neighbor Floor
|
||
102 Reg S1 Dn Slow None -- No No Highest Neighbor Floor
|
||
83 Reg WR Dn Slow None -- No No Highest Neighbor Floor
|
||
19 Reg W1 Dn Slow None -- No No Highest Neighbor Floor
|
||
|
||
70 Reg SR Dn Fast None -- No No Highest Neighbor Floor + 8
|
||
71 Reg S1 Dn Fast None -- No No Highest Neighbor Floor + 8
|
||
98 Reg WR Dn Fast None -- No No Highest Neighbor Floor + 8
|
||
36 Reg W1 Dn Fast None -- No No Highest Neighbor Floor + 8
|
||
|
||
180 Ext SR Up Slow None -- No No Absolute 24
|
||
161 Ext S1 Up Slow None -- No No Absolute 24
|
||
92 Reg WR Up Slow None -- No No Absolute 24
|
||
58 Reg W1 Up Slow None -- No No Absolute 24
|
||
|
||
179 Ext SR Up Slow TxTy Trg No No Absolute 24
|
||
160 Ext S1 Up Slow TxTy Trg No No Absolute 24
|
||
93 Reg WR Up Slow TxTy Trg No No Absolute 24
|
||
59 Reg W1 Up Slow TxTy Trg No No Absolute 24
|
||
|
||
176 Ext SR Up Slow None -- No No Abs Shortest Lower Texture
|
||
158 Ext S1 Up Slow None -- No No Abs Shortest Lower Texture
|
||
96 Reg WR Up Slow None -- No No Abs Shortest Lower Texture
|
||
30 Reg W1 Up Slow None -- No No Abs Shortest Lower Texture
|
||
|
||
178 Ext SR Up Slow None -- No No Absolute 512
|
||
140 Reg S1 Up Slow None -- No No Absolute 512
|
||
147 Ext WR Up Slow None -- No No Absolute 512
|
||
142 Ext W1 Up Slow None -- No No Absolute 512
|
||
|
||
190 Ext SR -- ---- TxTy Trg No No None
|
||
189 Ext S1 -- ---- TxTy Trg No No None
|
||
154 Ext WR -- ---- TxTy Trg No No None
|
||
153 Ext W1 -- ---- TxTy Trg No No None
|
||
|
||
78 Ext SR -- ---- TxTy Num No No None
|
||
241 Ext S1 -- ---- TxTy Num No No None
|
||
240 Ext WR -- ---- TxTy Num No No None
|
||
239 Ext W1 -- ---- TxTy Num No No None
|
||
|
||
The following tables show the possibilities for generalized floor
|
||
linedef type parameters. Any combination of parameters is allowed:
|
||
|
||
Slow and Fast represent the same speeds as slow and fast regular
|
||
floors. Normal is twice as fast as slow, Fast is twice normal, Turbo
|
||
is twice Fast.
|
||
|
||
Generalized Floor Types
|
||
---------------------------------------------------------------------------
|
||
# Class Trig Dir Spd *Chg *Mdl Mon Crsh Target
|
||
|
||
6000H- Gen P1/PR Up Slow None Trg Yes Yes Lowest Neighbor Floor
|
||
7FFFH S1/SR Dn Normal Tx Num No No Next Neighbor Floor
|
||
W1/WR Fast Tx0 Lowest Neighbor Ceiling
|
||
G1/GR Turbo TxTy Highest Neighbor Floor
|
||
Ceiling
|
||
24
|
||
32
|
||
*Mon(ster) enabled must be No if Shortest Lower Texture
|
||
Chg field is not None
|
||
|
||
Tx = Texture copied only Trg = Trigger Model
|
||
Tx0 = Texture copied and Type->0 Num = Numeric Model
|
||
TxTy = Texture and Type copied
|
||
|
||
|
||
####################
|
||
Section 3. Ceilings
|
||
####################
|
||
|
||
----------------------------
|
||
Section 3.1 Ceiling Targets
|
||
----------------------------
|
||
|
||
Highest Neighbor Ceiling (HnC)
|
||
|
||
This means that the ceiling moves to the height of the highest
|
||
neighboring ceiling NOT including the ceiling itself. If the ceiling
|
||
direction is down (only possible with generalized ceilings) motion is
|
||
instant, else at the ceiling's speed. If no adjacent ceiling exists
|
||
the ceiling moves to -32000 units.
|
||
|
||
Next Neighbor Ceiling (NnC)
|
||
|
||
This means that the ceiling moves up to the height of the lowest
|
||
adjacent ceiling greater in height than the current, or to the
|
||
height of the highest adjacent ceiling less in height than the current,
|
||
as determined by the ceiling's direction. Instant motion is not
|
||
possible in this case. If no such ceiling exists, the ceiling does
|
||
not move.
|
||
|
||
Lowest Neighbor Ceiling (LnC)
|
||
|
||
This means that the ceiling height changes to the height of the lowest
|
||
ceiling possessed by any neighboring sector, NOT including itself.
|
||
If the target height is in the opposite direction to ceiling
|
||
motion, motion is instant, otherwise at the ceiling action's speed.
|
||
If no adjacent ceiling exists the ceiling moves to 32000 units.
|
||
|
||
Highest Neighbor Floor (HnF)
|
||
|
||
This means that the ceiling height changes to the height of the
|
||
highest neighboring floor, excluding the ceiling's floor itself. If
|
||
no neighbor floor exists, the ceiling moves down to -32000 or the
|
||
ceiling's floor, whichever is higher. If the target height is in the
|
||
opposite direction to ceiling motion, the motion is instant,
|
||
otherwise it occurs at the ceiling action's speed.
|
||
|
||
Floor
|
||
|
||
The ceiling moves down until its at floor height, instantly if
|
||
ceiling direction is up (only available with generalized types), at
|
||
the ceiling speed if the direction is down.
|
||
|
||
8 Above Floor (8aF)
|
||
|
||
This means that the ceiling height changes to 8 above the height of
|
||
the ceiling's floor. If the target height is in the opposite direction
|
||
to ceiling motion, the motion is instant, otherwise it occurs at the
|
||
ceiling action's speed.
|
||
|
||
24 Units (24)
|
||
|
||
The ceiling moves 24 units in the ceiling action's direction. Instant
|
||
motion is not possible with this linedef type.
|
||
|
||
32 Units (32)
|
||
|
||
The ceiling moves 32 units in the ceiling action's direction. Instant
|
||
motion is not possible with this linedef type.
|
||
|
||
Shortest Upper Texture (SUT)
|
||
|
||
The ceiling moves the height of the shortest upper texture on the
|
||
boundary of the sector, in the ceiling direction. Instant motion is not
|
||
possible with this type. In the case that there is no surrounding
|
||
texture the motion is to -32000 or +32000 depending on direction.
|
||
|
||
----------------------------------
|
||
Section 3.2 Varieties of ceilings
|
||
----------------------------------
|
||
|
||
A ceiling can be activated by pushing on a linedef bounding it
|
||
(generalized types only), or by pushing on a switch with the same tag
|
||
as the ceiling sector, or by walking over a linedef with the same tag
|
||
as the ceiling, or by shooting a linedef with the same tag as the
|
||
ceiling with an impact weapon (generalized types only).
|
||
|
||
A ceiling can move either Up or Down.
|
||
|
||
A ceiling can move with speeds of Slow, Normal, Fast, or Turbo. If the
|
||
target height specified by the ceiling function (see Ceiling Targets
|
||
above) is in the opposite direction to the ceiling's motion, then
|
||
travel is instantaneous, otherwise its at the speed specified.
|
||
|
||
A ceiling action can be a texture change type, in which case after
|
||
the action the ceiling texture of the affected ceiling, and possibly
|
||
the sector type of the affected ceiling are changed to those of a
|
||
model sector. The sector type may be zeroed instead of copied from
|
||
the model, or not changed at all. These change types are referred to
|
||
below as Tx (texture only), Tx0 (type set to 0), and TxTy (texture
|
||
and type copied from model). The model sector for the change may be
|
||
the sector on the first sidedef of the trigger (trigger model) or the
|
||
sector with ceiling at destination height across the lowest numbered
|
||
two-sided linedef surrounding the affected sector (numeric model). If
|
||
no model sector exists, no change occurs. If a change occurs, ceiling
|
||
texture is always affected, lighting is never affected, even that
|
||
corresponding to the sector's type, nor is any other sector property
|
||
other than the sector's type.
|
||
|
||
Numeric model algorithm:
|
||
|
||
1) Find all ceilings adjacent to the tagged ceiling at destination height
|
||
2) Find the lowest numbered linedef separating those ceilings from that tagged
|
||
3) The sector on the other side of that linedef is the model
|
||
|
||
A ceiling action can have the crush property (generalized types only),
|
||
in which case players and monsters are crushed when the ceiling tries
|
||
to move below the point where they fit exactly underneath the
|
||
ceiling. This means they take damage until they die, leave the
|
||
sector, or the ceiling action is stopped. A ceiling action never
|
||
reverses on encountering an obstacle, even if the crush property is
|
||
not true, the ceiling merely remains in the same position until the
|
||
obstacle is removed or dies, then continues.
|
||
|
||
---------------------------------
|
||
Section 3.3 Ceiling linedef types
|
||
---------------------------------
|
||
|
||
Regular and Extended Ceiling Types
|
||
-------------------------------------------------------------------
|
||
# Class Trig Dir Spd *Chg *Mdl Mon Crsh Target
|
||
|
||
43 Reg SR Dn Fast None -- No No Floor
|
||
41 Reg S1 Dn Fast None -- No No Floor
|
||
152 Ext WR Dn Fast None -- No No Floor
|
||
145 Ext W1 Dn Fast None -- No No Floor
|
||
|
||
186 Ext SR Up Slow None -- No No Highest Neighbor Ceiling
|
||
166 Ext S1 Up Slow None -- No No Highest Neighbor Ceiling
|
||
151 Ext WR Up Slow None -- No No Highest Neighbor Ceiling
|
||
40 Reg W1 Up Slow None -- No No Highest Neighbor Ceiling
|
||
|
||
187 Ext SR Dn Slow None -- No No 8 Above Floor
|
||
167 Ext S1 Dn Slow None -- No No 8 Above Floor
|
||
72 Reg WR Dn Slow None -- No No 8 Above Floor
|
||
44 Reg W1 Dn Slow None -- No No 8 Above Floor
|
||
|
||
205 Ext SR Dn Slow None -- No No Lowest Neighbor Ceiling
|
||
203 Ext S1 Dn Slow None -- No No Lowest Neighbor Ceiling
|
||
201 Ext WR Dn Slow None -- No No Lowest Neighbor Ceiling
|
||
199 Ext W1 Dn Slow None -- No No Lowest Neighbor Ceiling
|
||
|
||
206 Ext SR Dn Slow None -- No No Highest Neighbor Floor
|
||
204 Ext S1 Dn Slow None -- No No Highest Neighbor Floor
|
||
202 Ext WR Dn Slow None -- No No Highest Neighbor Floor
|
||
200 Ext W1 Dn Slow None -- No No Highest Neighbor Floor
|
||
|
||
Generalized Ceiling Types
|
||
---------------------------------------------------------------------------
|
||
# Class Trig Dir Spd *Chg *Mdl Mon Crsh Target
|
||
|
||
4000H- Gen P1/PR Up Slow None Trg Yes Yes Highest Neighbor Ceiling
|
||
5FFFH S1/SR Dn Normal Tx Num No No Next Neighbor Ceiling
|
||
W1/WR Fast Tx0 Lowest Neighbor Ceiling
|
||
G1/GR Turbo TxTy Highest Neighbor Floor
|
||
Floor
|
||
24
|
||
32
|
||
*Mon(ster) enabled must be No if Shortest Upper Texture
|
||
Chg field is not None
|
||
|
||
Tx = Texture copied only Trg = Trigger Model
|
||
Tx0 = Texture copied and Type->0 Num = Numeric Model
|
||
TxTy = Texture and Type copied
|
||
|
||
|
||
############################
|
||
Section 4. Platforms (Lifts)
|
||
############################
|
||
|
||
A platform is basically a floor action involving two heights. The
|
||
simple raise platform actions, for example, differ from the
|
||
corresponding floor actions in that if they encounter an obstacle,
|
||
they reverse direction and return to their former height.
|
||
|
||
The most often used kind of platform is a lift which travels from its
|
||
current height to the target height, then waits a specified time and
|
||
returns to it former height.
|
||
|
||
-----------------------------
|
||
Section 4.1 Platform Targets
|
||
-----------------------------
|
||
|
||
Lowest Neighbor Floor
|
||
|
||
This means that the platforms "low" height is the height of the
|
||
lowest surrounding floor, including the platform itself. The "high"
|
||
height is the original height of the floor.
|
||
|
||
Next Lowest Neighbor Floor
|
||
|
||
This means that the platforms "low" height is the height of the
|
||
highest surrounding floor lower than the floor itself. If no lower
|
||
floor exists, no motion occurs as the "low" and "high" heights are
|
||
then both equal to the floors current height.
|
||
|
||
Lowest Neighbor Ceiling
|
||
|
||
This means that the platforms "low" height is the height of the
|
||
lowest surrounding ceiling unless this is higher than the floor
|
||
itself. If no adjacent ceiling exists, or is higher than the floor no
|
||
motion occurs as the "low" and "high" heights are then both equal to
|
||
the floors current height.
|
||
|
||
Lowest and Highest Floor
|
||
|
||
This target sets the "low" height to the lowest neighboring floor,
|
||
including the floor itself, and the "high" height to the highest
|
||
neighboring floor, including the floor itself. When this target is
|
||
used the floor moves perpetually between the two heights. Once
|
||
triggered this type of linedef runs permanently, even if the motion
|
||
is temporarily suspended with a Stop type. No other floor action can
|
||
be commanded on the sector after this type is begun.
|
||
|
||
Ceiling
|
||
|
||
This target sets the "high" height to the ceiling of the sector and
|
||
the "low" height to the floor height of the sector and is only used in
|
||
the instant toggle type that switches the floor between the ceiling
|
||
and its original height on each activation. This is also the ONLY
|
||
instant platform type.
|
||
|
||
Raise Next Floor
|
||
|
||
This means that the "high" height is the lowest surrounding floor
|
||
higher than the platform. If no higher adjacent floor exists no
|
||
motion will occur.
|
||
|
||
Raise 24 Units
|
||
|
||
The "low" height is the original floor height, the "high" height is 24
|
||
more.
|
||
|
||
Raise 32 Units
|
||
|
||
The "low" height is the original floor height, the "high" height is 32
|
||
more.
|
||
|
||
-----------------------------------
|
||
Section 4.2 Varieties of Platforms
|
||
-----------------------------------
|
||
|
||
A platform can be activated by pushing on a linedef bounding it
|
||
(generalized types only), or by pushing on a switch with the same tag
|
||
as the platform sector, or by walking over a linedef with the same tag
|
||
as the platform, or by shooting a linedef with the same tag as the
|
||
platform with an impact weapon.
|
||
|
||
A platform can move with speeds of Slow, Normal, Fast, or Turbo.
|
||
Only the instant toggle platform moves instantly, all others move at
|
||
the platform's speed.
|
||
|
||
A platform can have a delay, in between when it reaches "high" height
|
||
and returns to "low" height, or at both ends of the motion in the
|
||
case of perpetual lifts.
|
||
|
||
A platform action can be a texture change type, in which case after
|
||
the action the floor texture of the affected floor, and possibly the
|
||
sector type of the affected floor are changed to those of a model
|
||
sector. The sector type may be zeroed instead of copied from the
|
||
model, or not changed at all. These change types are referred to
|
||
below as Tx (texture only), Tx0 (type zeroed), and TxTy (texture and
|
||
type changed). The model sector for the change is always the sector
|
||
on the first sidedef of the trigger (trigger model). If a change
|
||
occurs, floor texture is always affected, lighting is never affected,
|
||
even that corresponding to the sector's type, nor is any other sector
|
||
property other than the sector's type.
|
||
|
||
-----------------------------------
|
||
Section 4.3 Platform Linedef types
|
||
-----------------------------------
|
||
|
||
Regular and Extended Platform Types
|
||
-------------------------------------------------------------------
|
||
# Class Trig Dly Spd Chg Mdl Mon Target
|
||
|
||
66 Reg SR -- Slow Tx Trg No Raise 24 Units
|
||
15 Reg S1 -- Slow Tx Trg No Raise 24 Units
|
||
148 Ext WR -- Slow Tx Trg No Raise 24 Units
|
||
143 Ext W1 -- Slow Tx Trg No Raise 24 Units
|
||
|
||
67 Reg SR -- Slow Tx0 Trg No Raise 32 Units
|
||
14 Reg S1 -- Slow Tx0 Trg No Raise 32 Units
|
||
149 Ext WR -- Slow Tx0 Trg No Raise 32 Units
|
||
144 Ext W1 -- Slow Tx0 Trg No Raise 32 Units
|
||
|
||
68 Reg SR -- Slow Tx0 Trg No Raise Next Floor
|
||
20 Reg S1 -- Slow Tx0 Trg No Raise Next Floor
|
||
95 Reg WR -- Slow Tx0 Trg No Raise Next Floor
|
||
22 Reg W1 -- Slow Tx0 Trg No Raise Next Floor
|
||
47 Reg G1 -- Slow Tx0 Trg No Raise Next Floor
|
||
|
||
181 Ext SR 3s Slow None -- No Lowest and Highest Floor (perpetual)
|
||
162 Ext S1 3s Slow None -- No Lowest and Highest Floor (perpetual)
|
||
87 Reg WR 3s Slow None -- No Lowest and Highest Floor (perpetual)
|
||
53 Reg W1 3s Slow None -- No Lowest and Highest Floor (perpetual)
|
||
|
||
182 Ext SR -- ---- ---- -- -- Stop
|
||
163 Ext S1 -- ---- ---- -- -- Stop
|
||
89 Reg WR -- ---- ---- -- -- Stop
|
||
54 Reg W1 -- ---- ---- -- -- Stop
|
||
|
||
62 Reg SR 3s Slow None -- No Lowest Neighbor Floor (lift)
|
||
21 Reg S1 3s Slow None -- No Lowest Neighbor Floor (lift)
|
||
88 Reg WR 3s Slow None -- No Lowest Neighbor Floor (lift)
|
||
10 Reg W1 3s Slow None -- No Lowest Neighbor Floor (lift)
|
||
|
||
123 Reg SR 3s Fast None -- No Lowest Neighbor Floor (lift)
|
||
122 Reg S1 3s Fast None -- No Lowest Neighbor Floor (lift)
|
||
120 Reg WR 3s Fast None -- No Lowest Neighbor Floor (lift)
|
||
121 Reg W1 3s Fast None -- No Lowest Neighbor Floor (lift)
|
||
|
||
211 Ext SR -- Inst None -- No Ceiling (toggle)
|
||
212 Ext WR -- Inst None -- No Ceiling (toggle)
|
||
|
||
Generalized Lift Types
|
||
---------------------------------------------------------------------------
|
||
# Class Trig Dly Spd Mon Target
|
||
|
||
3400H- Gen P1/PR 1s Slow Yes Lowest Neighbor Floor
|
||
37FFH S1/SR 3s Normal No Next Lowest Neighbor Floor
|
||
W1/WR 5s Fast Lowest Neighbor Ceiling
|
||
G1/GR 10s Turbo Lowest and Highest Floor (perpetual)
|
||
|
||
############################
|
||
Section 5. Crusher Ceilings
|
||
############################
|
||
|
||
A crusher ceiling is a linedef type that causes the ceiling to cycle
|
||
between its starting height and 8 above the floor, damaging
|
||
monsters and players that happen to be in between. Barrels explode
|
||
when crushed.
|
||
|
||
Once a crusher ceiling is started it remains running for the
|
||
remainder of the level even if temporarily suspended with a stop type.
|
||
No other ceiling action can be used in that sector thereafter.
|
||
|
||
----------------------------------
|
||
Section 5.1 Varieties of Crushers
|
||
----------------------------------
|
||
|
||
A crusher can be activated by pushing on a linedef bounding it
|
||
(generalized types only), or by pushing on a switch with the same tag
|
||
as the crusher sector, or by walking over a linedef with the same tag
|
||
as the crusher, or by shooting a linedef with the same tag as the
|
||
crusher with an impact weapon (generalized types only).
|
||
|
||
A crusher has a speed: slow, normal, fast, or turbo. The slower the
|
||
speed, the more damage the crusher does when crushing, simply thru
|
||
being applied longer. When a slow or normal crusher is moving down
|
||
and encounters something to crush, it slows down even more, by a
|
||
factor of 8. This persists until it reaches bottom of stroke and
|
||
starts up again. Fast and turbo crushers do not slow down.
|
||
|
||
A crusher can be silent. The regular silent crusher makes platform
|
||
stop and start noises at top and bottom of stroke. The generalized
|
||
silent crusher is completely quiet.
|
||
|
||
A crusher linedef is provided to stop a crusher in its current
|
||
position. Care should be used that this doesn't lock the player out
|
||
of an area of the wad if the crusher is too low to pass. A crusher
|
||
can be restarted, but not changed, with any crusher linedef.
|
||
|
||
----------------------------------
|
||
Section 5.2 Crusher Linedef Types
|
||
----------------------------------
|
||
|
||
Regular and Extended Crusher Types
|
||
-------------------------------------------------------------------
|
||
# Class Trig Spd Mon Silent Action
|
||
|
||
184 Ext SR Slow No No Start
|
||
49 Reg S1 Slow No No Start
|
||
73 Reg WR Slow No No Start
|
||
25 Reg W1 Slow No No Start
|
||
|
||
183 Ext SR Fast No No Start
|
||
164 Ext S1 Fast No No Start
|
||
77 Reg WR Fast No No Start
|
||
6 Reg W1 Fast No No Start
|
||
|
||
185 Ext SR Slow No Yes Start
|
||
165 Ext S1 Slow No Yes Start
|
||
150 Ext WR Slow No Yes Start
|
||
141 Reg W1 Slow No Yes Start
|
||
|
||
188 Ext SR ---- -- -- Stop
|
||
168 Ext S1 ---- -- -- Stop
|
||
74, Reg WR ---- -- -- Stop
|
||
57, Reg W1 ---- -- -- Stop
|
||
|
||
Generalized Crusher Types
|
||
---------------------------------------------------------------------------
|
||
# Class Trig Spd Mon Silent
|
||
|
||
2F80H- Gen P1/PR Slow Yes Yes
|
||
2FFFH S1/SR Normal No No
|
||
W1/WR Fast
|
||
G1/GR Turbo
|
||
|
||
##########################
|
||
Section 6. Stair Builders
|
||
##########################
|
||
|
||
A stair builder is a linedef type that sets a sequence of sectors
|
||
defined by a complex rule to an ascending or descending sequence of
|
||
heights.
|
||
|
||
The rule for stair building is as follows:
|
||
|
||
1) The first step to rise or fall is the tagged sector. It rises or
|
||
falls by the stair stepsize, at the stair speed.
|
||
|
||
2) To find the next step (sector) affected examine all two-sided
|
||
linedefs with first sidedef facing into the previous step for the one
|
||
with lowest linedef number. The sector on the other side of this
|
||
linedef is the next step. If no such linedef exists, stair building
|
||
ceases.
|
||
|
||
3) If the next step is already moving, or has already risen as part
|
||
of the stair, stair building ceases. Optionally if the floor texture
|
||
of the next step is different from the previous step's the stair
|
||
building stops. Otherwise the next step moves to the height of the
|
||
previous step plus or minus the stepsize depending on the direction
|
||
the stairs build, up or down. If the motion is in the same direction
|
||
as the stairs build, it occurs at stair build speed, otherwise it is
|
||
instant.
|
||
|
||
4) Repeat from step 2 until stair building ceases.
|
||
|
||
----------------------------------------
|
||
Section 6.1 Varieties of Stair Builders
|
||
----------------------------------------
|
||
|
||
A stair can be activated by pushing on a linedef bounding it
|
||
(generalized types only), or by pushing on a switch with the same tag
|
||
as the stair sector, or by walking over a linedef with the same tag
|
||
as the stair, or by shooting a linedef with the same tag as the
|
||
stair with an impact weapon (generalized types only).
|
||
|
||
Only extended and generalized stair types are retriggerable. The
|
||
extended retriggerable stairs are mostly useless, though triggering a
|
||
stair with stepsize 8 twice might be used. The generalized
|
||
retriggerable stairs alternate building up and down on each
|
||
activation which is much more useful.
|
||
|
||
A stair can build up or down (generalized types only).
|
||
|
||
A stair can have a step size of 4, 8, 16, or 24. Only generalized
|
||
types support stepsize of 4 or 24.
|
||
|
||
A stair can have build speeds of slow, normal, fast or turbo. Only
|
||
generalized types support speeds of normal or turbo.
|
||
|
||
A stair can stop on encountering a different texture or ignore
|
||
(generalized types only) different textures and continue.
|
||
|
||
Only the regular build fast, stepsize 16 stair has the property that
|
||
monsters and players can be crushed by the motion, all others do not
|
||
crush.
|
||
|
||
----------------------------------------------------
|
||
Section 6.2 Regular and Extended Stair Builder Types
|
||
----------------------------------------------------
|
||
|
||
Regular and Extended Stairs Types
|
||
-------------------------------------------------------------------
|
||
# Class Trig Dir Spd Step Ignore Mon
|
||
|
||
258 Ext SR Up Slow 8 No No
|
||
7 Reg S1 Up Slow 8 No No
|
||
256 Ext WR Up Slow 8 No No
|
||
8 Reg W1 Up Slow 8 No No
|
||
|
||
259 Ext SR Up Fast 16 No No
|
||
127 Reg S1 Up Fast 16 No No
|
||
257 Ext WR Up Fast 16 No No
|
||
100 Reg W1 Up Fast 16 No No
|
||
|
||
Generalized Stairs Types
|
||
---------------------------------------------------------------------------
|
||
# Class Trig Dir Spd Step Ignore Mon
|
||
|
||
3000H- Gen P1/PR Up Slow 4 Yes Yes
|
||
33FFH S1/SR Dn Normal 8 No No
|
||
W1/WR Fast 16
|
||
G1/GR Turbo 24
|
||
|
||
####################
|
||
Section 7 Elevators
|
||
####################
|
||
|
||
An elevator is a linedef type that moves both floor and ceiling
|
||
together. All elevator linedefs are extended, there are no regular or
|
||
generalized elevator types. Instant elevator motion is not possible,
|
||
and monsters cannot activate elevators. All elevator triggers are
|
||
either switched or walkover.
|
||
|
||
-----------------------------
|
||
Section 7.1 Elevator Targets
|
||
-----------------------------
|
||
|
||
Next Highest Floor
|
||
|
||
The elevator floor moves to the lowest adjacent floor higher than the
|
||
elevator's floor, the ceiling staying the same height above the floor.
|
||
If there is no higher floor the elevator doesn't move.
|
||
|
||
Next Lowest Floor
|
||
|
||
The elevator floor moves to the highest adjacent floor lower than the
|
||
current floor, the ceiling staying the same height above the floor. If
|
||
there is no lower floor the elevator doesn't move.
|
||
|
||
Current Floor
|
||
|
||
The elevator floor moves to the height of the floor on the first
|
||
sidedef of the triggering line, the ceiling remaining the same height
|
||
above the elevator floor.
|
||
|
||
-----------------------------------
|
||
Section 7.2 Elevator Linedef Types
|
||
-----------------------------------
|
||
|
||
Extended Elevator types
|
||
-------------------------------------------------------------------
|
||
# Class Trig Spd Target
|
||
|
||
230 Ext SR Fast Next Highest Floor
|
||
229 Ext S1 Fast Next Highest Floor
|
||
228 Ext WR Fast Next Highest Floor
|
||
227 Ext W1 Fast Next Highest Floor
|
||
|
||
234 Ext SR Fast Next Lowest Floor
|
||
233 Ext S1 Fast Next Lowest Floor
|
||
232 Ext WR Fast Next Lowest Floor
|
||
231 Ext W1 Fast Next Lowest Floor
|
||
|
||
238 Ext SR Fast Current Floor
|
||
237 Ext S1 Fast Current Floor
|
||
236 Ext WR Fast Current Floor
|
||
235 Ext W1 Fast Current Floor
|
||
|
||
###################
|
||
Section 7 Lighting
|
||
###################
|
||
|
||
The lighting linedef types change the lighting in the tagged sector.
|
||
All are regular or extended types, there are no generalized lighting
|
||
types. All are switched or walkovers.
|
||
|
||
-----------------------------
|
||
Section 7.1 Lighting Targets
|
||
-----------------------------
|
||
|
||
Lights to Minimum Neighbor
|
||
|
||
Each tagged sector is set to the minimum light level found in any
|
||
adjacent sector. The tagged sectors are changed in numerical order,
|
||
and this may influence the result.
|
||
|
||
Lights to Maximum Neighbor
|
||
|
||
Each tagged sector is set to the maximum light level found in any
|
||
adjacent sector. The tagged sectors are changed in numerical order,
|
||
and this may influence the result.
|
||
|
||
Blinking
|
||
|
||
Each tagged sector begins blinking between two light levels. The
|
||
brighter level is the light level in the tagged sector. The darker
|
||
level is the minimum neighbor light level, or 0 if all neighbor
|
||
sectors have lighting greater than or equal to the sector's at the
|
||
time of activation. The blinking is non-synchronous, beginning 1-9
|
||
gametics after activation, with a dark period of 1 sec (35 gametics)
|
||
and a bright period of 1/7 sec (5 gametics).
|
||
|
||
35 Units
|
||
|
||
Each tagged sector is set to a light level of 35 units.
|
||
|
||
255 Units
|
||
|
||
Each tagged sector is set to a light level of 255 units.
|
||
|
||
-----------------------------------
|
||
Section 7.2 Lighting Linedef Types
|
||
-----------------------------------
|
||
|
||
Regular and Extended Lighting types
|
||
-------------------------------------------------------------------
|
||
# Class Trig Target
|
||
|
||
139 Reg SR 35 Units
|
||
170 Ext S1 35 Units
|
||
79 Reg WR 35 Units
|
||
35 Reg W1 35 Units
|
||
|
||
138 Reg SR 255 Units
|
||
171 Ext S1 255 Units
|
||
81 Reg WR 255 Units
|
||
13 Reg W1 255 Units
|
||
|
||
192 Ext SR Maximum Neighbor
|
||
169 Ext S1 Maximum Neighbor
|
||
80 Reg WR Maximum Neighbor
|
||
12 Reg W1 Maximum Neighbor
|
||
|
||
194 Ext SR Minimum Neighbor
|
||
173 Ext S1 Minimum Neighbor
|
||
157 Ext WR Minimum Neighbor
|
||
104 Reg W1 Minimum Neighbor
|
||
|
||
193 Ext SR Blinking
|
||
172 Ext S1 Blinking
|
||
156 Ext WR Blinking
|
||
17 Reg W1 Blinking
|
||
|
||
|
||
################
|
||
Section 8 Exits
|
||
################
|
||
|
||
An exit linedef type ends the current level bringing up the
|
||
intermission screen with its report of kills/items/secrets or frags
|
||
in the case of deathmatch. Obviously, none are retriggerable, and
|
||
none require tags, since no sector is affected.
|
||
|
||
---------------------------
|
||
Section 8.1 Exit Varieties
|
||
---------------------------
|
||
|
||
An exit can be activated by pushing on a switch with the exit type
|
||
or by walking over a linedef with the exit type, or by shooting a
|
||
linedef with the exit type with an impact weapon.
|
||
|
||
An exit can be normal or secret. The normal exit simply ends the
|
||
level and takes you to the next level via the intermission screen. A
|
||
secret exit only works in a special level depending on the IWAD being
|
||
played. In DOOM the secret exits can be on E1M3, E2M5, or E3M6. In
|
||
DOOM II they can be in levels 15 and 31. If a secret exit is used in
|
||
any other level, it brings you back to the start of the current
|
||
level. In DOOM the secret exits go from E1M3 to E1M9, E2M5 to E2M9,
|
||
and E3M6 to E3M9. In DOOM II they go from 15 to 31 and from 31 to 32.
|
||
In DOOM II a normal exit from 31 or 32 goes to level 16.
|
||
|
||
-----------------------------------
|
||
Section 8.2 Exit Linedef Types
|
||
-----------------------------------
|
||
|
||
Regular and Extended Exit types
|
||
-------------------------------------------------------------------
|
||
# Class Trig Type
|
||
|
||
11 Reg S1 Normal
|
||
52 Reg W1 Normal
|
||
197 Ext G1 Normal
|
||
|
||
51 Reg S1 Secret
|
||
124 Reg W1 Secret
|
||
198 Ext G1 Secret
|
||
|
||
######################
|
||
Section 9 Teleporters
|
||
######################
|
||
|
||
A teleporter is a linedef that when crossed or switched makes the
|
||
player or monster appear elsewhere in the level. There are only
|
||
regular and extended teleporters, no generalized teleporters exist
|
||
(yet). Teleporters are the only direction sensitive walkover
|
||
triggers in DOOM (to allow them to be exited without teleporting
|
||
again). They must be crossed from the first sidedef side in order to
|
||
work.
|
||
|
||
The place that the player or monster appears is set in one of two
|
||
ways. The more common is by a teleport thing in the sector tagged to
|
||
the teleport line. The newer completely player preserving line-line
|
||
silent teleport makes the player appear relative to the exit line
|
||
(identified by having the same tag as the entry line) with the same
|
||
orientation, position, momentum and height that they had relative to
|
||
the entry line just before teleportation. A special kind of line-line
|
||
teleporter is also provided that reverses the player's orientation by
|
||
180 degrees.
|
||
|
||
In the case of several lines tagged the same as the teleport line, or
|
||
several sectors tagged the same, or several teleport things in the
|
||
tagged sector, in all cases the lowest numbered one is used.
|
||
|
||
In DOOM crossing a W1 teleport line in the wrong direction used it
|
||
up, and it was never activatable. In BOOM this is not the case, it
|
||
does not teleport but remains active until next crossed in the right
|
||
direction.
|
||
|
||
If the exit of a teleporter is blocked a monster (or anything besides
|
||
a player) will not teleport thru it. However if the exit of teleporter
|
||
is blocked a player will, including into a down crusher, a monster,
|
||
or another player. In the latter two cases the monster/player
|
||
occupying the spot dies messily, and this is called a telefrag.
|
||
|
||
-------------------------------
|
||
Section 9.1 Teleport Varieties
|
||
-------------------------------
|
||
|
||
A teleporter can be walkover or switched, and retriggerable or not.
|
||
|
||
A teleporter can have destination set by a teleport thing in the
|
||
tagged sector, or by a line tagged the same as the teleport line.
|
||
These are called thing teleporters and line teleporters resp.
|
||
|
||
A teleporter can preserve orientation or set orientation from the
|
||
position, height, and angle of the teleport thing. Note a thing
|
||
destination teleporter always sets position, though it may preserve
|
||
orientation otherwise.
|
||
|
||
A teleporter can produce green fog and a whoosh noise, or it can be
|
||
silent, in which case it does neither.
|
||
|
||
A teleporter can transport monsters only, or both players and
|
||
monsters.
|
||
|
||
-----------------------------------
|
||
Section 9.2 Teleport Linedef types
|
||
-----------------------------------
|
||
|
||
Regular and Extended Teleport types
|
||
-------------------------------------------------------------------
|
||
# Class Trig Silent Mon Plyr Orient Dest
|
||
|
||
195 Ext SR No Yes Yes Set TP thing in tagged sector
|
||
174 Ext S1 No Yes Yes Set TP thing in tagged sector
|
||
97 Reg WR No Yes Yes Set TP thing in tagged sector
|
||
39 Reg W1 No Yes Yes Set TP thing in tagged sector
|
||
|
||
126 Reg WR No Yes No Set TP thing in tagged sector
|
||
125 Reg W1 No Yes No Set TP thing in tagged sector
|
||
269 Ext WR Yes Yes No Set TP thing in tagged sector
|
||
268 Ext W1 Yes Yes No Set TP thing in tagged sector
|
||
|
||
210 Ext SR Yes Yes Yes Preserve TP thing in tagged sector
|
||
209 Ext S1 Yes Yes Yes Preserve TP thing in tagged sector
|
||
208 Ext WR Yes Yes Yes Preserve TP thing in tagged sector
|
||
207 Ext W1 Yes Yes Yes Preserve TP thing in tagged sector
|
||
|
||
244 Ext WR Yes Yes Yes Preserve Line with same tag
|
||
243 Ext W1 Yes Yes Yes Preserve Line with same tag
|
||
263 Ext WR Yes Yes Yes Preserve Line with same tag (reversed)
|
||
262 Ext W1 Yes Yes Yes Preserve Line with same tag (reversed)
|
||
|
||
267 Ext WR Yes Yes No Preserve Line with same tag
|
||
266 Ext W1 Yes Yes No Preserve Line with same tag
|
||
265 Ext WR Yes Yes No Preserve Line with same tag (reversed)
|
||
264 Ext W1 Yes Yes No Preserve Line with same tag (reversed)
|
||
|
||
##################
|
||
Section 10 Donuts
|
||
##################
|
||
|
||
A donut is a very specialized linedef type that lowers a pillar in a
|
||
surrounding pool, while raising the pool and changing its texture and
|
||
type.
|
||
|
||
The tagged sector is the pillar, and its lowest numbered line must be
|
||
two-sided. The sector on the other side of that is the pool. The pool
|
||
must have a two-sided line whose second sidedef does not adjoin the
|
||
pillar, and the sector on the second side of the lowest numbered such
|
||
linedef is the model for the pool's texture change. The model sector
|
||
floor also provides the destination height both for lowering the
|
||
pillar and raising the pool.
|
||
|
||
No generalized donut linedefs exist, and all are switched or
|
||
walkover.
|
||
|
||
---------------------------------
|
||
Section 10.1 Donut Linedef types
|
||
---------------------------------
|
||
|
||
Regular and Extended Donut types
|
||
-------------------------------------------------------------------
|
||
# Class Trig
|
||
|
||
191 Ext SR
|
||
9 Reg S1
|
||
155 Ext WR
|
||
146 Ext W1
|
||
|
||
#############################
|
||
Section 11 Property Transfer
|
||
#############################
|
||
|
||
These linedefs are special purpose and are used to transfer
|
||
properties from the linedef itself or the sector on its first sidedef
|
||
to the tagged sector(s). None are triggered, they simply exist.
|
||
|
||
Extended Property Transfer Linedefs
|
||
-------------------------------------------------------------------
|
||
# Class Trig Description
|
||
|
||
213 Ext -- Set Tagged Floor Lighting to Lighting on 1st Sidedef's Sector
|
||
|
||
Used to give the floor of a sector a different light level from the
|
||
remainder of the sector. For example bright lava in a dark room.
|
||
|
||
261 Ext -- Set Tagged Ceiling Lighting to Lighting on 1st Sidedef's Sector
|
||
|
||
Used to give the ceiling of a sector a different light level from the
|
||
remainder of the sector.
|
||
|
||
260 Ext -- Make Tagged Lines (or this line if tag==0) Translucent
|
||
|
||
Used to make 2s normal textures translucent. If tag==0, then this linedef's
|
||
normal texture is made translucent if it's 2s, and the default translucency
|
||
map TRANMAP is used as the filter. If tag!=0, then all similarly-tagged 2s
|
||
linedefs' normal textures are made translucent, and if this linedef's first
|
||
sidedef contains a valid lump name for its middle texture (as opposed to a
|
||
texture name), and the lump is 64K long, then that lump will be used as the
|
||
translucency filter instead of the default TRANMAP, allowing different
|
||
filters to be used in different parts of the same maps. If the first side's
|
||
normal texture is not a valid translucency filter lump name, it must be a
|
||
valid texture name, and will be displayed as such on this linedef.
|
||
|
||
242 Ext -- Set Tagged Lighting, Flats Heights to 1st Sidedef's Sector,
|
||
and set colormap based on sidedef textures.
|
||
|
||
This allows the tagged sector to have two levels -- an actual floor and
|
||
ceiling, and another floor or ceiling where more flats are rendered. Things
|
||
will stand on the actual floor or hang from the actual ceiling, while this
|
||
function provides another rendered floor and ceiling at the heights of the
|
||
sector on the first sidedef of the linedef. Typical use is "deep water" that
|
||
can be over the player's head.
|
||
|
||
---------------------------------- < real sector's ceiling height
|
||
| real ceiling | < control sector's ceiling texture
|
||
| |
|
||
| | < control sector's lightlevel
|
||
| A |
|
||
| | < upper texture as colormap
|
||
| |
|
||
| | < control sector's floor texture
|
||
---------------------------------- < control sector's ceiling height
|
||
| fake ceiling | < real sector's ceiling texture
|
||
| |
|
||
| | < real sector's lightlevel
|
||
| B |
|
||
| | < normal texture as colormap
|
||
| |
|
||
| fake floor | < real sector's floor texture
|
||
---------------------------------- < control sector's floor height
|
||
| | < control sector's ceiling texture
|
||
| |
|
||
| | < control sector's lightlevel
|
||
| C |
|
||
| | < lower texture as colormap
|
||
| |
|
||
| real floor | < control sector's floor texture
|
||
---------------------------------- < real sector's floor height
|
||
|
||
Boom sectors controlled by a 242 linedef are partitioned into 3 spaces.
|
||
The viewer's xyz coordinates uniquely determine which space they are in.
|
||
|
||
If they are in space B (normal space), then the floor and ceiling textures
|
||
and lightlevel from the real sector are used, and the colormap from the 242
|
||
linedef's first sidedef's normal texture is used (COLORMAP is used if it's
|
||
invalid or missing). The floor and ceiling are rendered at the control
|
||
sector's heights.
|
||
|
||
If they are in space C ("underwater"), then the floor and ceiling textures
|
||
and lightlevel from the control sector are used, and the lower texture in
|
||
the 242 linedef's first sidedef is used as the colormap.
|
||
|
||
If they are in space A ("head over ceiling"), then the floor and ceiling
|
||
textures and lightlevel from the control sector are used, and the upper
|
||
texture in the 242 linedef's first sidedef is used as the colormap.
|
||
|
||
If only two of these adjacent partitions in z-space are used, such as
|
||
underwater and normal space, one has complete control over floor textures,
|
||
ceiling textures, light level, and colormaps, in each of the two partitions.
|
||
The control sector determines the textures and lighting in the more "unusual"
|
||
case (e.g. underwater).
|
||
|
||
It's also possible for the fake floor to extend below the real floor, in
|
||
which case an invisible platform / stair effect is created. In that case,
|
||
the picture looks like this (barring any ceiling effects too):
|
||
|
||
---------------------------------- < real sector's ceiling texture
|
||
| real ceiling = fake ceiling |
|
||
| |
|
||
| |
|
||
| B | < real sector's lightlevel
|
||
| | < normal texture's colormap
|
||
| |
|
||
| real floor |
|
||
---------------------------------- < invisible, no texture drawn
|
||
| |
|
||
| |
|
||
| | < real sector's lightlevel
|
||
| C | < normal texture's colormap
|
||
| |
|
||
| |
|
||
| fake floor | < real sector's floor texture
|
||
---------------------------------- < fake sector's floor height
|
||
|
||
In this case, since the viewer is always at or above the fake floor, no
|
||
colormap/lighting/texture changes occur -- the fake floor just gets drawn
|
||
at the control sector's height, but at the real sector's lighting and
|
||
texture, while objects stand on the higher height of the real floor.
|
||
|
||
It's the viewer's position relative to the fake floor and/or fake ceiling,
|
||
which determines whether the control sector's lighting and textures should
|
||
be used, and which colormap should be used. If the viewer is always between
|
||
the fake floor and fake ceiling, then no colormap, lighting, or texture
|
||
changes occur, and the view just sees the real sector's textures and light
|
||
level drawn at possibly different heights.
|
||
|
||
If the viewer is below the fake floor height set by the control sector, or is
|
||
above the fake ceiling height set by the control sector, then the corresponding
|
||
colormap is used (lower or upper texture name), and the textures and lighting
|
||
are taken from the control sector rather than the real sector. They are still
|
||
stacked vertically in standard order -- the control sector's ceiling is always
|
||
drawn above the viewer, and the control sector's floor is always drawn below
|
||
the viewer.
|
||
|
||
The kaleidescope effect only occurs when F_SKY1 is used as the control sector's
|
||
floor or ceiling. If F_SKY1 is used as the control sector's ceiling texture,
|
||
then under water, only the control sector's floor appears, but it "envelops"
|
||
the viewer. Similarly, if F_SKY1 is used as the control sector's floor texture,
|
||
then when the player's head is over a fake ceiling, the control sector's
|
||
ceiling is used throughout.
|
||
|
||
F_SKY1 causes HOM when used as a fake ceiling between the viewer and normal
|
||
space. Since there is no other good use for it, this kaleidescope is an
|
||
option turned on by F_SKY1. Note that this does not preclude the use of sky
|
||
REAL ceilings over deep water -- this is the control sector's ceiling, the
|
||
one displayed when the viewer is underwater, not the real one.
|
||
|
||
A colormap has the same size and format as Doom's COLORMAP. Extra colormaps
|
||
may defined in Boom by adding them between C_START and C_END markers in wads.
|
||
Colormaps between C_START and C_END are automatically merged by Boom with any
|
||
previously defined colormaps.
|
||
|
||
WATERMAP is a colormap predefined by Boom which can be used to provide a
|
||
blue-green tint while the player is under water. WATERMAP can be modified by
|
||
pwads.
|
||
|
||
Ceiling bleeding may occur if required upper textures are not used.
|
||
|
||
223 Ext -- Length Sets Friction in tagged Sector,Sludge<100, Ice>100
|
||
|
||
The length of the linedef with type 223 controls the amount of friction
|
||
experienced by the player in the tagged sector, when in contact with the
|
||
floor. Lengths less than 100 are sticker than normal, lengths greater than
|
||
100 are slipperier than normal. The effect is only present in the tagged
|
||
sector when its friction enable bit (bit 8) in the sector type is set.
|
||
This allows the flat to be changed in conjunction with turning the effect
|
||
on or off thru texture/type changes.
|
||
|
||
|
||
Constant pushers
|
||
----------------
|
||
Two types of constant pushers are available, wind and current. Depending
|
||
on whether you are above, on, or below (special water sectors) the ground
|
||
level, the amount of force varies.
|
||
|
||
The length of the linedef defines the 'full' magnitude of the force, and
|
||
the linedef's angle defines the direction.
|
||
|
||
line type above on under
|
||
--------- ----- -- -----
|
||
wind 224 full half none
|
||
current 225 none full full
|
||
|
||
The linedef should be tagged to the sector where you want the effect. The
|
||
special type of the sector should have bit 9 set (0x200). If this bit
|
||
is turned off, the effect goes away. For example, a fan creating a wind
|
||
could be turned off, and the wind dies, by changing the sector type and
|
||
clearing that bit.
|
||
|
||
Constant pushers can be combined with scrolling effects and point
|
||
pushers.
|
||
|
||
224 Ext -- Length/Direction Sets Wind Force in tagged Sectors
|
||
|
||
|
||
225 Ext -- Length/Direction Sets Current Force in tagged Sectors
|
||
|
||
Point pushers
|
||
-------------
|
||
Two types of point pushers are available, push and pull.
|
||
|
||
The previous implementation of these was SECTOR-SPECIFIC. The new
|
||
implementation ignores sector boundaries and provides the effect in a
|
||
circular area whose center is defined by a Thing of type 5001 (push)
|
||
or 5002 (pull). You now also don't have to set any option flags on these
|
||
Things. A new linedef type of 226 is used to control the effect, and this
|
||
line should be tagged to the sector with the 5001/5002 Thing.
|
||
|
||
The length of the linedef defines the 'full' magnitude of the force, and
|
||
the force is inversely proportional to distance from the point source. If
|
||
the length of the controlling linedef is L, then the force is reduced to
|
||
zero at a distance of 2L.
|
||
|
||
The angle of the controlling linedef is not used.
|
||
|
||
The sector where the 5001/5002 Things reside must have bit 9 set (0x200)
|
||
in its type. If this is turned off, the effect goes away.
|
||
|
||
Point pushers can be combined with scrolling effects and constant
|
||
pushers.
|
||
|
||
226 Ext -- Length Sets Point Source Wind/Current Force in Tagged Sectors
|
||
|
||
###########################################
|
||
Section 12 Scrolling Walls, Flats, Objects
|
||
###########################################
|
||
|
||
|
||
Static Scrollers
|
||
|
||
The most basic kind of scrolling linedef causes some part of the tagged
|
||
sector or tagged wall to scroll, in proportion to the length of the
|
||
linedef the trigger is on, and according to the direction that trigger
|
||
linedef lies. For each 32 units of length of the trigger, the tagged
|
||
object scrolls 1 unit per frame. Since the length of a linedef doesn't
|
||
change during gameplay, these types are static, the scrolling effect
|
||
remains constant during gameplay. However, these effects can be combined
|
||
with, and/or canceled by, other scrollers.
|
||
|
||
|
||
250 -- Scroll Tagged Ceiling
|
||
|
||
The ceiling of the tagged sector scrolls in the direction of the linedef
|
||
trigger, 1 unit per frame for each 32 units of linedef trigger length.
|
||
Objects attached to the ceiling do not move.
|
||
|
||
|
||
251 -- Scroll Tagged Floor
|
||
|
||
The floor of the tagged sector scrolls in the direction of the linedef
|
||
trigger, 1 unit per frame for each 32 units of linedef trigger length.
|
||
Objects resting on the floor do not move.
|
||
|
||
|
||
252 -- Carry Objects on Tagged Floor
|
||
|
||
Objects on the floor of the tagged sector move in the direction of the
|
||
linedef trigger, 1 unit per frame for each 32 units of linedef trigger
|
||
length. The floor itself does not scroll.
|
||
|
||
|
||
253 -- Scroll Tagged Floor, Carry Objects
|
||
|
||
Both the floor of the tagged sector and objects resting on that floor
|
||
move in the direction of the linedef trigger, 1 unit per frame for each
|
||
32 units of linedef trigger length.
|
||
|
||
|
||
254 -- Scroll Tagged Wall, Same as Floor/Ceiling
|
||
|
||
Walls with the same tag as the linedef trigger scroll at the same
|
||
rate as a floor or ceiling controlled by one of 250-253, allowing
|
||
their motion to be synchronized. When the linedef trigger is not
|
||
parallel to the wall, the component of the linedef in the direction
|
||
perpendicular to the wall causes the wall to scroll vertically. The
|
||
length of the component parallel to the wall sets the horizontal
|
||
scroll rate, the length of the component perpendicular to the wall
|
||
sets the vertical scroll rate.
|
||
|
||
|
||
Simple Static Scrollers
|
||
|
||
For convenience three simpler static scroll functions are provided
|
||
for when you just need a wall to scroll and don't need to control its
|
||
rate and don't want to bother with proportionality.
|
||
|
||
255 -- Scroll Wall Using Sidedef Offsets
|
||
|
||
For simplicity, a static scroller is provided that scrolls the first
|
||
sidedef of a linedef, based on its x- and y- offsets. No tag is used.
|
||
The x offset controls the rate of horizontal scrolling, 1 unit per
|
||
frame per x offset, and the y offset controls the rate of vertical
|
||
scrolling, 1 unit per frame per y offset.
|
||
|
||
48 -- Animated wall, Scrolls Left
|
||
|
||
A linedef with this type scrolls its first sidedef left at a
|
||
constant rate of 1 unit per frame.
|
||
|
||
85 -- Animated wall, Scrolls Right
|
||
|
||
A linedef with this type scrolls its first sidedef right at a
|
||
constant rate of 1 unit per frame.
|
||
|
||
|
||
|
||
Dynamic Scrolling
|
||
|
||
To achieve dynamic scrolling effects, the position or rate of scrolling
|
||
is controlled by the relative position of the floor and ceiling of the
|
||
sector on the scrolling trigger's first sidedef. The direction of
|
||
scrolling remains controlled by the direction of the linedef trigger.
|
||
Either the floor or ceiling may move in the controlling sector, or
|
||
both. The control variable is the amount of change in the sum of the
|
||
floor and ceiling heights.
|
||
|
||
All scroll effects are additive, and thus two or more effects may
|
||
reinforce and/or cancel each other.
|
||
|
||
Displacement Scrollers
|
||
|
||
In the first kind, displacement scrolling, the position of the scrolled
|
||
objects or walls changes proportionally to the motion of the floor or
|
||
ceiling in the sector on the first sidedef of the scrolling trigger.
|
||
The proportionality is set by the length of the linedef trigger. If it
|
||
is 32 units long, the wall, floor, ceiling, or object moves 1 unit for
|
||
each unit the floor or ceiling of the controlling sector moves. If it
|
||
is 64 long, they move 2 units per unit of relative floor/ceiling motion
|
||
in the controlling sector and so on.
|
||
|
||
245 -- Scroll Tagged Ceiling w.r.t. 1st Side's Sector
|
||
|
||
The tagged sector's ceiling texture scrolls in the direction of the
|
||
scrolling trigger line, when the sector on the trigger's first sidedef
|
||
changes height. The amount moved is the height change times the trigger
|
||
length, divided by 32. Objects attached to the ceiling do not move.
|
||
|
||
|
||
246 -- Scroll Tagged Floor w.r.t. 1st Side's Sector
|
||
|
||
The tagged sector's floor texture scrolls in the direction of the
|
||
scrolling trigger line when the sector on the trigger's first sidedef
|
||
changes height. The amount moved is the height change times the trigger
|
||
length, divided by 32. Objects on the floor do not move.
|
||
|
||
|
||
247 -- Push Objects on Tagged Floor wrt 1st Side's Sector
|
||
|
||
Objects on the tagged sector's floor move in the direction of the
|
||
scrolling trigger line when the sector on the trigger's first sidedef
|
||
changes height. The amount moved is the height change times the trigger
|
||
length, divided by 32.
|
||
|
||
|
||
248 -- Push Objects & Tagged Floor wrt 1st Side's Sector
|
||
|
||
The tagged sector's floor texture, and objects on the floor, move in
|
||
the direction of the scrolling trigger line when the sector on the
|
||
trigger's first sidedef changes height. The amount moved is the height
|
||
change times the trigger length, divided by 32.
|
||
|
||
|
||
249 -- Scroll Tagged Wall w.r.t 1st Side's Sector
|
||
|
||
Walls with the same tag as the linedef trigger scroll at the same
|
||
rate as a floor or ceiling controlled by one of 245-249, allowing
|
||
their motion to be synchronized. When the linedef trigger is not
|
||
parallel to the wall, the component of the linedef in the direction
|
||
perpendicular to the wall causes the wall to scroll vertically. The
|
||
length of the component parallel to the wall sets the horizontal
|
||
scroll displacement, the length of the component perpendicular to
|
||
the wall sets the vertical scroll displacement. The distance scrolled
|
||
is the controlling sector's height change times the trigger length,
|
||
divided by 32.
|
||
|
||
|
||
Accelerative Scrollers
|
||
|
||
The second kind of dynamic scrollers, accelerative scrollers, also
|
||
react to height changes in the sector on the first sidedef of the
|
||
linedef trigger, but the RATE of scrolling changes, not the
|
||
displacement. That is, changing the controlling sector's height
|
||
speeds up or slows down the scrolling by the change in height
|
||
times the trigger's length, divided by 32.
|
||
|
||
An on/off scroller can be made by using an accelerative scroller
|
||
and any linedef that changes the controlling sector's heights.
|
||
If a scroll effect which is initially on is desired, then the
|
||
accelerative scroller should be combined with a static one which
|
||
turns the scroll effect on initially. The accelerative scroller
|
||
would then need to be set up to cancel the static scroller's
|
||
effect when the controlling sector's height changes.
|
||
|
||
|
||
214 -- Accel Tagged Ceiling w.r.t. 1st Side's Sector
|
||
|
||
The tagged sector's ceiling's rate of scroll changes in the direction
|
||
of the trigger linedef (use vector addition if already scrolling) by
|
||
the change in height of the sector on the trigger's first sidedef
|
||
times the length of the linedef trigger, divided by 32. For example,
|
||
if the ceiling is motionless originally, the linedef trigger is 32
|
||
long, and the ceiling of the controlling sector moves 1 unit, the
|
||
tagged ceiling will start scrolling at 1 unit per frame.
|
||
|
||
|
||
215 -- Accel Tagged Floor w.r.t. 1st Side's Sector
|
||
|
||
The tagged sector's floor's rate of scroll changes in the direction of
|
||
the trigger linedef (use vector addition if already scrolling) by the
|
||
change in height of the sector on the trigger's first sidedef times
|
||
the length of the linedef trigger, divided by 32. For example, if
|
||
the floor is motionless originally, the linedef trigger is 32 long,
|
||
and the ceiling of the controlling sector moves 1 unit, the tagged
|
||
floor will start scrolling at 1 unit per frame.
|
||
|
||
|
||
216 -- Accel Objects on Tagged Floor wrt 1st Side's Sector
|
||
|
||
Objects on the tagged sector's floor's rate of motion changes in the
|
||
direction of the trigger linedef (use vector addition if already
|
||
moving) by the change in height of the sector on the trigger's first
|
||
sidedef times the length of the linedef trigger divided by 32. For
|
||
example, if the objects are motionless originally, the linedef trigger
|
||
is 32 long, and the ceiling of the controlling sector moves 1 unit,
|
||
the objects on the tagged floor will start moving at 1 unit per frame.
|
||
|
||
|
||
217 -- Accel Objects&Tagged Floor wrt 1st Side's Sector
|
||
|
||
The tagged sector's floor, and objects on it, change its rate of
|
||
motion in the direction of the trigger linedef (use vector addition
|
||
if already moving) by the change in height of the sector on the
|
||
trigger's first sidedef times the length of the linedef trigger, divided
|
||
by 32. For example, if the floor and objects are motionless originally,
|
||
the linedef trigger is 32 long, and the ceiling of the controlling
|
||
sector moves 1 unit, the objects and the tagged floor will start moving
|
||
at 1 unit per frame.
|
||
|
||
|
||
218 -- Accel Tagged Wall w.r.t 1st Side's Sector
|
||
|
||
Walls with the same tag as the linedef trigger increase their
|
||
scroll rate in sync with a floor or ceiling controlled by one of
|
||
214-217. When the linedef trigger is not parallel to the wall, the
|
||
component of the linedef in the direction perpendicular to the wall
|
||
causes the wall to increase its vertical scroll rate. The length of
|
||
the component parallel to the wall sets the change in horizontal
|
||
scroll rate, the length of the component perpendicular to the wall
|
||
sets the change in vertical scroll rate. The rate change is the height
|
||
change times the trigger length, divided by 32.
|
||
|
||
|
||
======================================================================
|
||
|
||
#######################################################
|
||
Section 13 Detailed Generalized Linedef Specification
|
||
#######################################################
|
||
|
||
|
||
BOOM has added generalized linedef types that permit the parameters
|
||
of linedef actions to be nearly independently chosen.
|
||
|
||
To support these, DETH has been modified to support them via dialogs
|
||
for each generalized type; each dialog allows the parameters for
|
||
that type to be independently specified by choice from a array of
|
||
radio buttons. A parser has also been added to support reading back
|
||
the function of a generalized linedef from its type number.
|
||
|
||
NOTE to wad authors:
|
||
|
||
This requires a lot of type numbers, 20608 in all so far. Some
|
||
editors may object to the presence of these new types thru assuming
|
||
that a lookup table of size 256 suffices (or some other reason). For
|
||
those that must continue to use such an editor, it may be necessary
|
||
to stick to the old linedef types, which are still present.
|
||
|
||
We are also providing command line tools to set these linedef types,
|
||
independent of which editor you happen to use, but they are a lot
|
||
less slick, and more difficult to use than DETH. See TRIGCALC.EXE and
|
||
CLED.EXE in the EDITUTIL.ZIP package of the BOOM distribution.
|
||
|
||
== Generalized Linedef Ranges =======================================
|
||
|
||
There are types for Floors, Ceilings, Doors, Locked Doors, Lifts,
|
||
Stairs, and Crushers. The allocation of linedef type field numbers is
|
||
according to the following table:
|
||
|
||
Type Start Length (Dec)
|
||
-----------------------------------------------------------------
|
||
Floors 0x6000 0x2000 (8192)
|
||
Ceilings 0x4000 0x2000 (8192)
|
||
Doors 0x3c00 0x0400 (1024)
|
||
Locked Doors 0x3800 0x0400 (1024)
|
||
Lifts 0x3400 0x0400 (1024)
|
||
Stairs 0x3000 0x0400 (1024)
|
||
Crushers 0x2F80 0x0080 (128)
|
||
-----------------------------------------------------------------
|
||
Totals: 0x2f80-0x7fff 0x5080 (20608)
|
||
|
||
======================================================================
|
||
|
||
The following sections define the placement and meaning of the bit
|
||
fields within each linedef category. Fields in the description are
|
||
listed in increasing numeric order.
|
||
|
||
Some nomenclature:
|
||
|
||
Target height designations:
|
||
|
||
H means highest, L means lowest, N means next, F means floor, C means
|
||
ceiling, n means neighbor, Cr means crush, sT means shortest
|
||
lower texture.
|
||
|
||
Texture change designations:
|
||
|
||
c0n change texture, change sector type to 0, numeric model change
|
||
c0t change texture, change sector type to 0, trigger model change
|
||
cTn change texture only, numeric model change
|
||
cTt change texture only, trigger model change
|
||
cSn change texture and sector type to model's, numeric model change
|
||
cSt change texture and sector type to model's, trigger model change
|
||
|
||
A trigger model change uses the sector on the first side of the
|
||
trigger for its model. A numeric model change looks at the sectors
|
||
adjoining the tagged sector at the target height, and chooses the one
|
||
across the lowest numbered two sided line for its model. If no model
|
||
exists, no change occurs. Note that in DOOM II v1.9, no model meant
|
||
an illegal sector type was generated.
|
||
|
||
|
||
------------------------------------------------------------------
|
||
generalized floors (8192 types)
|
||
|
||
field description NBits Mask Shift
|
||
------------------------------------------------------------------
|
||
|
||
trigger W1/WR/S1/SR/G1/GR/D1/DR 3 0x0007 0
|
||
speed slow/normal/fast/turbo 2 0x0018 3
|
||
model trig/numeric -or- nomonst/monst 1 0x0020 5
|
||
direct down/up 1 0x0040 6
|
||
target HnF/LnF/NnF/LnC/C/sT/24/32 3 0x0380 7
|
||
change nochg/zero/txtonly/type 2 0x0c00 10
|
||
crush no/yes 1 0x1000 12
|
||
|
||
DETH Nomenclature:
|
||
|
||
W1[m] F->HnF DnS [c0t] [Cr]
|
||
WR[m] F->LnF DnN [c0n]
|
||
S1[m] F->NnF DnF [cTt]
|
||
SR[m] F->LnC DnT [cTn]
|
||
G1[m] F->C UpS [cSt]
|
||
GR[m] FbysT UpN [cSn]
|
||
D1[m] Fby24 UpF
|
||
DR[m] Fby32 UpT
|
||
|
||
Notes:
|
||
|
||
1) When change is nochg, model is 1 when monsters can activate trigger
|
||
otherwise monsters cannot activate it.
|
||
2) The change fields mean the following:
|
||
nochg - means no texture change or type change
|
||
zero - means sector type is zeroed, texture copied from model
|
||
txtonly - means sector type unchanged, texture copied from model
|
||
type - means sector type and floor texture are copied from model
|
||
3) down/up specifies the "normal" direction for moving. If the
|
||
target specifies motion in the opposite direction, motion is instant.
|
||
Otherwise it occurs at speed specified by speed field.
|
||
4) Speed is 1/2/4/8 units per tic
|
||
5) If change is nonzero then model determines which sector is copied.
|
||
If model is 0 its the sector on the first side of the trigger.
|
||
if model is 1 (numeric) then the model sector is the sector at
|
||
destination height on the opposite side of the lowest numbered
|
||
two sided linedef around the tagged sector. If it doesn't exist
|
||
no change occurs.
|
||
|
||
------------------------------------------------------------------
|
||
generalized ceilings (8192 types)
|
||
|
||
field description NBits Mask Shift
|
||
------------------------------------------------------------------
|
||
|
||
trigger W1/WR/S1/SR/G1/GR/D1/DR 3 0x0007 0
|
||
speed slow/normal/fast/turbo 2 0x0018 3
|
||
model trig/numeric -or- nomonst/monst 1 0x0020 5
|
||
direct down/up 1 0x0040 6
|
||
target HnC/LnC/NnC/HnF/F/sT/24/32 3 0x0380 7
|
||
change nochg/zero/txtonly/type 2 0x0c00 10
|
||
crush no/yes 1 0x1000 12
|
||
|
||
DETH Nomenclature:
|
||
|
||
W1[m] C->HnC DnS [Cr] [c0t]
|
||
WR[m] C->LnC DnN [c0n]
|
||
S1[m] C->NnC DnF [cTt]
|
||
SR[m] C->HnF DnT [cTn]
|
||
G1[m] C->F UpS [cSt]
|
||
GR[m] CbysT UpN [cSn]
|
||
D1[m] Cby24 UpF
|
||
DR[m] Cby32 UpT
|
||
|
||
Notes:
|
||
|
||
1) When change is nochg, model is 1 when monsters can activate trigger
|
||
otherwise monsters cannot activate it.
|
||
2) The change fields mean the following:
|
||
nochg - means no texture change or type change
|
||
zero - means sector type is zeroed, texture copied from model
|
||
txtonly - means sector type unchanged, texture copied from model
|
||
type - means sector type and ceiling texture are copied from model
|
||
3) down/up specifies the "normal" direction for moving. If the
|
||
target specifies motion in the opposite direction, motion is instant.
|
||
Otherwise it occurs at speed specified by speed field.
|
||
4) Speed is 1/2/4/8 units per tic
|
||
5) If change is nonzero then model determines which sector is copied.
|
||
If model is 0 its the sector on the first side of the trigger.
|
||
if model is 1 (numeric) then the model sector is the sector at
|
||
destination height on the opposite side of the lowest numbered
|
||
two sided linedef around the tagged sector. If it doesn't exist
|
||
no change occurs.
|
||
|
||
------------------------------------------------------------------
|
||
generalized doors (1024 types)
|
||
|
||
field description NBits Mask Shift
|
||
------------------------------------------------------------------
|
||
|
||
trigger W1/WR/S1/SR/G1/GR/D1/DR 3 0x0007 0
|
||
speed slow/normal/fast/turbo 2 0x0018 3
|
||
kind odc/o/cdo/c 2 0x0060 5
|
||
monster n/y 1 0x0080 7
|
||
delay 1/4/9/30 (secs) 2 0x0300 8
|
||
|
||
DETH Nomenclature:
|
||
|
||
W1[m] OpnD{1|4|9|30}Cls S
|
||
WR[m] Opn N
|
||
S1[m] ClsD{1|4|9|30}Opn F
|
||
SR[m] Cls T
|
||
G1[m]
|
||
GR[m]
|
||
D1[m]
|
||
DR[m]
|
||
|
||
Notes:
|
||
|
||
1) The odc (Open, Delay, Close) and cdo (Close, Delay, Open) kinds use
|
||
the delay field. The o (Open and Stay) and c (Close and Stay) kinds
|
||
do not.
|
||
2) The precise delay timings in gametics are: 35/150/300/1050
|
||
3) Speed is 2/4/8/16 units per tic
|
||
|
||
------------------------------------------------------------------
|
||
generalized locked doors (1024 types)
|
||
|
||
field description NBits Mask Shift
|
||
------------------------------------------------------------------
|
||
|
||
trigger W1/WR/S1/SR/G1/GR/D1/DR 3 0x0007 0
|
||
speed slow/normal/fast/turbo 2 0x0018 3
|
||
kind odc/o 1 0x0020 5
|
||
lock any/rc/yc/bc/rs/bs/ys/all 3 0x01c0 6
|
||
sk=ck n/y 1 0x0200 9
|
||
|
||
DETH Nomenclature:
|
||
|
||
W1[m] OpnD{1|4|9|30}Cls S Any
|
||
WR[m] Opn N R{C|S|K}
|
||
S1[m] F B{C|S|K}
|
||
SR[m] T Y{C|S|K}
|
||
G1[m] All{3|6}
|
||
GR[m]
|
||
D1[m]
|
||
DR[m]
|
||
|
||
Notes:
|
||
|
||
1) Delay for odc kind is constant at 150 gametics or about 4.333 secs
|
||
2) The lock field allows any key to open a door, or a specific key to
|
||
open a door, or all keys to open a door.
|
||
3) If the sk=ck field is 0 (n) skull and cards are different keys,
|
||
otherwise they are treated identically. Hence an "all" type door
|
||
requires 3 keys if sk=ck is 1, and 6 keys if sk=ck is 0.
|
||
4) Speed is 2/4/8/16 units per tic
|
||
|
||
-------------------------------------------------------------------
|
||
generalized lifts (1024 types)
|
||
|
||
field description NBits Mask Shift
|
||
-------------------------------------------------------------------
|
||
|
||
trigger W1/WR/S1/SR/G1/GR/D1/DR 3 0x0007 0
|
||
speed slow/normal/fast/turbo 2 0x0018 3
|
||
monster n/y 1 0x0020 5
|
||
delay 1/3/5/10 (secs) 2 0x00c0 6
|
||
target LnF/NnF/LnC/LnF<->HnF(perp.) 2 0x0300 8
|
||
|
||
DETH Nomenclature:
|
||
|
||
W1[m] Lft F->LnFD{1|3|5|10} S
|
||
WR[m] F->NnFD{1|3|5|10} N
|
||
S1[m] F->LnCD{1|3|5|10} F
|
||
SR[m] HnF<->LnFD{1|3|5|10} T
|
||
G1[m]
|
||
GR[m]
|
||
D1[m]
|
||
DR[m]
|
||
|
||
Notes:
|
||
|
||
1) The precise delay timings in gametics are: 35/105/165/350
|
||
2) Speed is 1/2/4/8 units per tic
|
||
3) If the target specified is above starting floor height, or does not
|
||
exist the lift does not move when triggered. NnF is Next Lowest
|
||
Neighbor Floor.
|
||
4) Starting a perpetual lift between lowest and highest neighboring floors
|
||
locks out all other actions on the sector, even if it is stopped with
|
||
the non-extended stop perpetual floor function.
|
||
|
||
-------------------------------------------------------------------
|
||
generalized stairs (1024 types)
|
||
|
||
field description NBits Mask Shift
|
||
-------------------------------------------------------------------
|
||
|
||
trigger W1/WR/S1/SR/G1/GR/D1/DR 3 0x0007 0
|
||
speed slow/normal/fast/turbo 2 0x0018 3
|
||
monster n/y 1 0x0020 5
|
||
step 4/8/16/24 2 0x00c0 6
|
||
dir dn/up 1 0x0100 8
|
||
igntxt n/y 1 0x0200 9
|
||
|
||
DETH Nomenclature:
|
||
|
||
W1[m] Stair Dn s4 S [Ign]
|
||
WR[m] Up s8 N
|
||
S1[m] s16 F
|
||
SR[m] s24 T
|
||
G1[m]
|
||
GR[m]
|
||
D1[m]
|
||
DR[m]
|
||
|
||
Notes:
|
||
|
||
1) Speed is .25/.5/2/4 units per tic
|
||
2) If igntxt is 1, then the staircase will not stop building when
|
||
a step does not have the same texture as the previous.
|
||
3) A retriggerable stairs builds up and down alternately on each
|
||
trigger.
|
||
|
||
-------------------------------------------------------------------
|
||
generalized crushers (128 types)
|
||
|
||
field description NBits Mask Shift
|
||
-------------------------------------------------------------------
|
||
|
||
trigger W1/WR/S1/SR/G1/GR/D1/DR 3 0x0007 0
|
||
speed slow/normal/fast/turbo 2 0x0018 3
|
||
monster n/y 1 0x0020 5
|
||
silent n/y 1 0x0040 6
|
||
|
||
DETH Nomenclature:
|
||
|
||
W1[m] Crusher S [Silent]
|
||
WR[m] N
|
||
S1[m] F
|
||
SR[m] T
|
||
G1[m]
|
||
GR[m]
|
||
D1[m]
|
||
DR[m]
|
||
|
||
Notes:
|
||
|
||
1) Speed is 1/2/4/8 units per second, faster means slower damage as usual.
|
||
2) If silent is 1, the crusher is totally quiet, no start/stop sounds
|
||
|
||
|
||
======================================================================
|
||
Part II Sector Types
|
||
======================================================================
|
||
|
||
BOOM is backward compatible with DOOM's sector types. All types 0-17
|
||
have the same meaning they did under DOOM. Types 18-31 are reserved
|
||
for extended sector types, that work like DOOM's and share the
|
||
limitation that only one type can be active in a sector at once. No
|
||
extended sector types are implemented at this time.
|
||
|
||
####################################
|
||
Section 14. Regular Sector types
|
||
####################################
|
||
|
||
From Matt Fell's Unofficial DOOM Spec the DOOM sector types are:
|
||
|
||
Dec Hex Class Description
|
||
-------------------------------------------------------------------
|
||
0 00 - Normal, no special characteristic.
|
||
1 01 Light random off
|
||
2 02 Light blink 0.5 second
|
||
3 03 Light blink 1.0 second
|
||
4 04 Both -10/20% health AND light blink 0.5 second
|
||
5 05 Damage -5/10% health
|
||
7 07 Damage -2/5% health
|
||
8 08 Light oscillates
|
||
9 09 Secret a player must stand in this sector to get credit for
|
||
finding this secret. This is for the SECRETS ratio
|
||
on inter-level screens.
|
||
10 0a Door 30 seconds after level start, ceiling closes like a door.
|
||
11 0b End -10/20% health. If a player's health is lowered to less
|
||
than 11% while standing here, then the level ends! Play
|
||
proceeds to the next level. If it is a final level
|
||
(levels 8 in DOOM 1, level 30 in DOOM 2), the game ends!
|
||
12 0c Light blink 0.5 second, synchronized
|
||
13 0d Light blink 1.0 second, synchronized
|
||
14 0e Door 300 seconds after level start, ceiling opens like a door.
|
||
16 10 Damage -10/20% health
|
||
|
||
17 11 Light flickers on and off randomly
|
||
|
||
Note that BOOM will NEVER exit the game on an illegal sector type, as
|
||
was the case with DOOM. The sector type will merely be ignored.
|
||
|
||
####################################
|
||
Section 15. Generalized sector types
|
||
####################################
|
||
|
||
BOOM also provides generalized sector types, based on bit fields,
|
||
that allow several sector type properties to be independently
|
||
specified for a sector. Texture change linedefs can be used to switch
|
||
some or all of these properties dynamically, outside lighting.
|
||
|
||
Bits 0 thru 4 specify the lighting type in the sector, the same codes
|
||
that DOOM used are employed:
|
||
|
||
Dec Bits 4-0 Description
|
||
-------------------------------------------------------------------
|
||
0 00000 Normal lighting
|
||
1 00001 random off
|
||
2 00010 blink 0.5 second
|
||
3 00011 blink 1.0 second
|
||
4 00100 -10/20% health AND light blink 0.5 second
|
||
8 01000 oscillates
|
||
12 01100 blink 0.5 second, synchronized
|
||
13 01101 blink 1.0 second, synchronized
|
||
17 10001 flickers on and off randomly
|
||
|
||
Bits 5 and 6 set the damage type of the sector, with the usual
|
||
5/10/20 damage units per second.
|
||
|
||
Dec Bits 6-5 Description
|
||
-------------------------------------------------------------------
|
||
0 00 No damage
|
||
32 01 5 units damage per sec (halve damage in TYTD skill)
|
||
64 10 10 units damage per sec
|
||
96 11 20 units damage per sec
|
||
|
||
Bit 7 makes the sector count towards the secrets total at game end
|
||
|
||
Dec Bit 7 Description
|
||
-------------------------------------------------------------------
|
||
0 0 Sector is not secret
|
||
128 1 Sector is secret
|
||
|
||
Bit 8 enables the ice/mud effect controlled by linedef 223
|
||
|
||
Dec Bit 8 Description
|
||
-------------------------------------------------------------------
|
||
0 0 Sector friction disabled
|
||
256 1 Sector friction enabled
|
||
|
||
Bit 9 enables the wind effects controlled by linedefs 224-226
|
||
|
||
Dec Bit 9 Description
|
||
-------------------------------------------------------------------
|
||
0 0 Sector wind disabled
|
||
512 1 Sector wind enabled
|
||
|
||
Bits 10 and 11 are not implemented yet, but are reserved for use in
|
||
sound control. Bit 10 will suppress all sounds within the sector,
|
||
while bit 11 will disable any sounds due to floor or ceiling motion
|
||
by the sector.
|
||
|
||
======================================================================
|
||
Part III Linedef Flags
|
||
======================================================================
|
||
|
||
Only one new linedef flag is implemented, called PassThru, which
|
||
allows a push or switch linedef trigger to pass the push action thru
|
||
it to ones within range behind it. In this way BOOM is capable of
|
||
setting off many actions with a single push. Note that the limitation
|
||
of one floor action, one ceiling action, and one lighting action per
|
||
sector affect still applies however.
|
||
|
||
The new linedef flag is bit 9, value 512, in the linedef flags word.
|
||
|
||
======================================================================
|
||
Part IV Thing Flags
|
||
======================================================================
|
||
|
||
BOOM has implemented two new thing flags, "not in DM" and "not in
|
||
COOP", which in combination with the existing "not in Single" flag,
|
||
usually called "Multiplayer", allow complete control over a level's
|
||
inventory and monsters, in any game mode.
|
||
|
||
If you want a thing to be only available in Single play, you set both
|
||
the "not in DM" and "not in COOP" flags. Other combinations are
|
||
similar.
|
||
|
||
"not in DM" is bit 5, value 32, in the thing flags word.
|
||
"not in COOP" is bit 6, value 64, in the thing flags word.
|
||
|
||
======================================================================
|
||
Part V Thing Types
|
||
======================================================================
|
||
|
||
BOOM has implemented two new thing types as well, MT_PUSH (5001), and
|
||
MT_PULL(5002). These control the origin of the point source wind
|
||
effect controlled by linedef types 225 and 226, and set whether the
|
||
wind blows towards or away from the origin depending on which is
|
||
used.
|
||
|
||
======================================================================
|
||
Part VI BOOM Predefined Lumps
|
||
======================================================================
|
||
|
||
BOOM supports resources embedded in the .EXE that are loaded before
|
||
all other resources. They can be replaced by resources of the same
|
||
name in the IWAD or add-on PWADs. These resources can be extracted
|
||
into a wad thru use of the command:
|
||
|
||
BOOM -dumplumps predef.wad
|
||
|
||
You can then extract the resources from predef.wad to alter them for
|
||
replacement purposes.
|
||
|
||
Menu text
|
||
---------
|
||
M_HORSEN Mouse horizontal sensitivity menu
|
||
M_VERSEN Mouse vertical sensitivity menu
|
||
M_SETUP Setup menu entry in main menu
|
||
M_KEYBND Key Bindings entry in setup menu
|
||
M_AUTO Automap entry in setup menu
|
||
M_CHAT Chat string entry in setup menu
|
||
M_ENEM Enemies options entry in setup menu
|
||
M_STAT Status bar and Hud entry in setup menu
|
||
M_WEAP Weapons entry in setup menu
|
||
M_MESS Message option entry in setup menu
|
||
M_COLORS Palette color picker diagram
|
||
M_PALNO Xed-out symbol for unused automap features
|
||
M_BUTT1 Setup reset button off state
|
||
M_BUTT2 Setup reset button on state
|
||
|
||
Font chars
|
||
----------
|
||
STCFN096 ` character for standard DOOM font
|
||
|
||
STBR123 HUD font bargraph char, full, 4 vertical bars
|
||
STBR124 HUD font bargraph char, partial, 3 vertical bars
|
||
STBR125 HUD font bargraph char, partial, 2 vertical bars
|
||
STBR126 HUD font bargraph char, partial, 1 vertical bars
|
||
STBR127 HUD font bargraph char, empty, 0 vertical bars
|
||
|
||
DIG0 HUD font 0 char
|
||
DIG1 HUD font 1 char
|
||
DIG2 HUD font 2 char
|
||
DIG3 HUD font 3 char
|
||
DIG4 HUD font 4 char
|
||
DIG5 HUD font 5 char
|
||
DIG6 HUD font 6 char
|
||
DIG7 HUD font 7 char
|
||
DIG8 HUD font 8 char
|
||
DIG9 HUD font 9 char
|
||
DIGA HUD font A char
|
||
DIGB HUD font B char
|
||
DIGC HUD font C char
|
||
DIGD HUD font D char
|
||
DIGE HUD font E char
|
||
DIGF HUD font F char
|
||
DIGG HUD font G char
|
||
DIGH HUD font H char
|
||
DIGI HUD font I char
|
||
DIGJ HUD font J char
|
||
DIGK HUD font K char
|
||
DIGL HUD font L char
|
||
DIGM HUD font M char
|
||
DIGN HUD font N char
|
||
DIGO HUD font O char
|
||
DIGP HUD font P char
|
||
DIGQ HUD font Q char
|
||
DIGR HUD font R char
|
||
DIGS HUD font S char
|
||
DIGT HUD font T char
|
||
DIGU HUD font U char
|
||
DIGV HUD font V char
|
||
DIGW HUD font W char
|
||
DIGX HUD font X char
|
||
DIGY HUD font Y char
|
||
DIGZ HUD font Z char
|
||
DIG45 HUD font - char
|
||
DIG47 HUD font / char
|
||
DIG58 HUD font : char
|
||
DIG91 HUD font [ char
|
||
DIG93 HUD font ] char
|
||
|
||
Status bar
|
||
----------
|
||
STKEYS6 Both blue keys graphic
|
||
STKEYS7 Both yellow keys graphic
|
||
STKEYS8 Both red keys graphic
|
||
|
||
Box chars
|
||
---------
|
||
BOXUL Upper left corner of box
|
||
BOXUC Center of upper border of box
|
||
BOXUR Upper right corner of box
|
||
BOXCL Center of left border of box
|
||
BOXCC Center of box
|
||
BOXCR Center of right border of box
|
||
BOXLL Lower left corner of box
|
||
BOXLC Center of lower border of box
|
||
BOXLR Lower right corner of box
|
||
|
||
Lumps missing in v1.1
|
||
---------------------
|
||
STTMINUS minus sign for neg frags in status bar
|
||
WIMINUS minus sign for neg frags on end screen
|
||
M_NMARE nightmare skill menu string
|
||
STBAR status bar background
|
||
DSGETPOW sound for obtaining power-up
|
||
|
||
Text end screen
|
||
---------------
|
||
ENDBOOM Text displayed at end of game, 80X25 with attributes
|
||
|
||
Sprites
|
||
-------
|
||
TNT1A0 Invisible sprite for push/pull controller things
|
||
|
||
Switches and Animations
|
||
-----------------------
|
||
SWITCHES Definition of switch textures recognized
|
||
ANIMATED Definition of animated textures and flats recognized
|
||
|
||
SWITCHES format:
|
||
|
||
The SWITCHES lump makes the names of the switch textures used in the
|
||
game known to the engine. It consists of a list of records each 20
|
||
bytes long, terminated by an entry (not used) whose last 2 bytes are 0.
|
||
|
||
9 bytes Null terminated string naming "off" state texture for switch
|
||
9 bytes Null terminated string naming "off" state texture for switch
|
||
2 bytes Short integer for the IWADs switch will work in
|
||
1=shareware
|
||
2=registered/retail DOOM or shareware
|
||
3=DOOM II, registered/retail DOOM, or shareware
|
||
0=terminates list of known switches
|
||
|
||
ANIMATED format:
|
||
|
||
The ANIMATED lump makes the names of the animated flats and textures
|
||
known to the engine. It consists of a list of records, each 23 bytes
|
||
long, terminated by a record (not used) whose first byte is -1 (255).
|
||
|
||
1 byte -1 to terminate list, 0 if a flat, 1 if a texture
|
||
9 bytes Null terminated string naming last texture/flat in animation
|
||
9 bytes Null terminated string naming first texture/flat in animation
|
||
4 bytes Animation speed, number of frames between animation changes
|
||
|
||
The utility package contains a program, SWANTBLS.EXE that will
|
||
generate both the SWITCHES and ANIMATED lumps from a text file. An
|
||
example is provided, DEFSWANI.DAT that generates the standard set of
|
||
switches and animations for DOOM.
|
||
|
||
Colormaps
|
||
---------
|
||
WATERMAP Custom greenish colormap for underwater use
|
||
|
||
The WATERMAP lump has the same format as COLORMAP, 34 tables of 256
|
||
bytes each, see the UDS for details. Note that colormaps you add to
|
||
a PWAD must be between C_START and C_END markers.
|
||
|
||
The utility package contains a program, CMAPTOOL.EXE, that will
|
||
generate custom colormaps for use with BOOM. It also includes 7
|
||
premade colormaps, and an add-on wad containing them.
|
||
|
||
|
||
Color translation tables
|
||
------------------------
|
||
CRBRICK Translates red range to brick red
|
||
CRTAN Translates red range to tan
|
||
CRGRAY Translates red range to gray
|
||
CRGREEN Translates red range to green
|
||
CRBROWN Translates red range to brown
|
||
CRGOLD Translates red range to dark yellow
|
||
CRRED Translates red range to red range (no change)
|
||
CRBLUE Translates red range to light blue
|
||
CRBLUE2 Translates red range to dark blue (status bar numerals)
|
||
CRORANGE Translates red range to orange
|
||
CRYELLOW Translates red range to light yellow
|
||
|
||
These tables are used to translate the red font characters to other
|
||
colors. They are made replaceable in order to support custom palettes
|
||
in TC's better. Note however that the font character graphics must
|
||
be defined using the palette indices for the standard red range of the
|
||
palette 176-191.
|
||
|
||
-END OF DOCUMENT----------------------------------------------------------
|
||
|