Miscellaneous specials

121:Line_SetIdentification (lineid)

lineid
Identification number for this line

Used to identify this line for certain specials and ACS commands.

208:TranslucentLine (lineid, amount)

lineid
Line ID of lines to make translucent (0 for this line)
amount
How translucent the line should be [0..255].

Sets the amount of translucency for all matching lines (including itself). If lineid is 0, it only sets the translucency of the line it is on. Like Line_SetIdentification, this special sets the line's id. Amount controls how opaque the line is. 0 is nearly invisible. 255 is opaque. Intermediate values are somewhere in between.

You can also use this special in an ACS script to change the translucency for lines whose ids match lineid.

100:Scroll_Texture_Left (speed)
101:Scroll_Texture_Right (speed)
102:Scroll_Texture_Up (speed)
103:Scroll_Texture_Down (speed)

Scrolls a texture in the given direction.

221:Scroll_Texture_Both (lineid, left, right, down, up)

lineid
Line ID of line to scroll (must be 0 for now)
left
Speed to scroll left
right
Speed to scroll right
down
Speed to scroll down
up
Speed to scroll up

Scrolls a texture both horizotally and vertically. If the lineid is 0, this special will affect the speed of the texture scrolling on the line it is placed on. The other four parameters determine how quickly the texture scrolls in each direction.

If you use a non-zero lineid, you can change the scrolling of the specified lines when this special is activated (either directly or in a script). A positive lineid changes the scrolling on the front of the line, and a negative lineid changes the scrolling on the back of the line.

225:Scroll_Texture_Offsets

Scrolls a line's texture based on its left and right offsets.

222:Scroll_Texture_Model (lineid, scrollbits)
223:Scroll_Floor (tag, scrollbits, 0=scroll:1=carry:2=both, x-move, y-move)
224:Scroll_Ceiling (tag, scrollbits, 0, x-move, y-move)

All three are only valid during initialization and behave like various BOOM scrollers. Scrollbits determines how the scroll works:

bit 0 (1)
Displacement scroller
bit 1 (2)
Accelerative scroller
bit 2 (4)
Use this linedef to get dx and dy

Bit 2 is only used by Scroll_Floor and Scroll_Ceiling. Scroll_Floor can also only scroll the flat, only carry objects, or scroll and carry objects depending on what it's third argument is set to. Scroll_Ceiling should have the corresponding argument set to 0. x-move and y-move are only used if scrollbits does not indicate to use the linedef to determine the scroll rate. 128 is subtracted from these values to determine the actual direction and rate of scroll. (So 128 would be no scroll.) Otherwise, the linedef's length and orientation determine the scroll rate and direction.

209:Transfer_Heights (tag, when)

tag
Tag of affected sector
when
When the effect should be visible

This is BOOM's 242 linedef. It is used to divide a sector into upper, lower, and middle regions. The drawn heights of the tagged sector's floor and ceiling come from the heights of the sector on the line's front side. The line's texture names can be used to specify a specify a special color map or palette blend to be used in those ranges. Palette blends are of the form "AARRGGBB". You can use the testblend command to find a good blend from inside the game.

The when parameter determines when this special's effect is visible. If set to 0, there will be situations when the sector's real ceiling and floor heights will be used instead of the fake heights. (This is the way BOOM does it.) When set to 1, the fake ceiling and floor heights will always be used.

The following description is excerpted from boomref.txt:

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. [Note: See the waterzone thing (9045)]

     ----------------------------------  < 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.

Ceiling bleeding may occur if required upper textures are not used.

210:Transfer_FloorLight (tag)

tag
Tag of affected sector

The amount of lighting on the tagged sector's floor will be the same as the lighting in the sector that this line faces.

211:Transfer_CeilingLight (tag)

tag
Tag of affected sector

The amount of lighting on the tagged sector's ceiling will be the same as the lighting in the sector that this line faces.

120:Radius_Quake (intensity, duration, damrad, tremrad, tid)

intensity
Strength of earthquake [1..9]
duration
Duration in tics
damrad
Radius of damage in 64x64 cells
tremrad
Radius of tremor in 64x64 cells
tid
Thing ID of map thing(s) for quake foci

Creates an earthquake at the specified foci (map spots).

227:PointPush_SetForce (tag, tid, amount, useline)

tag
Tag of sector containing the point pusher/puller
tid
Thing ID of the point pusher/puller
amount
Strength of the point pusher/puller
useline
Set to 1 to use the line's length to determine strength

Only valid during initialization. Sets the amount of force for a point pusher or puller. If tag is non-zero it looks for point pusher/pullers in the tagged sectors. Otherwise, it looks for them by their tids. If useline is 1, then the amount of force is determined by the length of the linedef. Otherwise, the amount parameter is used.

237:ChangeCamera (tid, who, revert)

tid
Thing ID of the camera to use (0 for normal player's view)
who
Set to 1 if the view change should effect all players
revert
Set to 1 if movement should cancel the special

Causes a player's view to move to a camera. If tid is 0, then the player's view is restored to a spot inside his head. If who is 0, only the player who activated the special has his view changed, otherwise, everyone's view changes.

If revert is 1, then if a player moves, his view will be returned to his body automatically. This behavior makes this special more suitable for such things as security cameras.

191:SetPlayerProperty (who, set, which)

who
Set to 1 to effect all players, 0 for just the one who activated the special
set
Set to 1 to turn on the property or 0 to turn it off
which
Which property to change

Sets a property for a player. Currently, there are two:

0PROP_FROZENThe player cannot move
1PROP_NOTARGETMonsters ignore the player (unless they have already seen him)