Difference between revisions of "Property transfer linedef types"

From Eternity Wiki
Jump to: navigation, search
(New page: 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 e...)
 
(Point pushers)
 
(16 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
{{backto|Linedef types}}
 
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.
 
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.
 +
 +
===New to Boom===
  
 
  Extended Property Transfer Linedefs
 
  Extended Property Transfer Linedefs
Line 5: Line 8:
 
  #    Class  Trig Description
 
  #    Class  Trig Description
 
  213  Ext    --  Set Tagged Floor Lighting to Lighting on 1st Sidedef's Sector
 
  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.
+
See [[Transfer_FloorLight]].
  
 
  261  Ext    --  Set Tagged Ceiling Lighting to Lighting on 1st Sidedef's Sector
 
  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.
+
See [[Transfer_CeilingLight]].
  
 
  260  Ext    --  Make Tagged Lines (or this line if tag==0) Translucent
 
  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.
 
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.
 +
 +
In [[UDMF]], you need to use '''linedef''''s '''tranmap''' property to obtain the same effect, on all lines which have to be translucent. You can also opt to use '''alpha''' and '''renderstyle'''. There's no dedicated linedef special on UDMF for this.
  
 
  242  Ext    --  Set Tagged Lighting, Flats Heights to 1st Sidedef's Sector,
 
  242  Ext    --  Set Tagged Lighting, Flats Heights to 1st Sidedef's Sector,
 
                   and set colormap based on sidedef textures.
 
                   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.
+
See [[Transfer_Heights]].
 
 
    ----------------------------------  < 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
 
  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.  
+
See [[Sector_SetFriction]].
  
 
=== New to MBF ===
 
=== New to MBF ===
Line 134: Line 69:
 
Two types of point pushers are available, push and pull.
 
Two types of point pushers are available, push and pull.
  
This 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 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.
+
This 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). In Doom format, a linedef type of 226 is used to control the effect, and this line should be tagged to the sector with the 5001/5002 Thing. In [[UDMF]] and [[ExtraData]], use [[PointPush_SetForce]].
  
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.
+
Usually, 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. In the parameterized version you also have the option to set an explicit length value.
  
The angle of the controlling linedef is not used.
+
The sector where the 5001/5002 Things reside must have the wind-enable bit set in its type. If this is turned off, the effect goes away. The bit is, depending on format:
 
+
* bit 9 (0x200, 512) in the Doom format,
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.
+
* bit 12 (0x1000, 4096) in [[UDMF]].
  
 
Point pushers can be combined with scrolling effects and constant pushers.
 
Point pushers can be combined with scrolling effects and constant pushers.
  
 
  226  Ext    --  Length Sets Point Source Wind/Current Force in Tagged Sectors
 
  226  Ext    --  Length Sets Point Source Wind/Current Force in Tagged Sectors
=== New to Eternity ===
 
  
 
==Moving 3DMidTex Lines==  
 
==Moving 3DMidTex Lines==  
Line 160: Line 94:
 
  282  Ext    --  Ceiling movement of sector on 1st side is transferred to all
 
  282  Ext    --  Ceiling movement of sector on 1st side is transferred to all
 
                   like-tagged 3DMidTex lines as vertical scrolling
 
                   like-tagged 3DMidTex lines as vertical scrolling
 +
 +
For the parameterized special, see [[Sector_Attach3dMidtex]].
 +
 
==Heretic wind/current transfer==
 
==Heretic wind/current transfer==
  
Line 190: Line 127:
 
  294  Ext    --  Heretic current in line direction with push magnitude proportional
 
  294  Ext    --  Heretic current in line direction with push magnitude proportional
 
                   to line length.
 
                   to line length.
 +
 +
[[category:Editing reference]]

Latest revision as of 09:50, 9 March 2019

Back to Linedef types

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.

New to Boom[edit]

Extended Property Transfer Linedefs
-------------------------------------------------------------------
#     Class  Trig Description
213   Ext    --   Set Tagged Floor Lighting to Lighting on 1st Sidedef's Sector

See Transfer_FloorLight.

261   Ext    --   Set Tagged Ceiling Lighting to Lighting on 1st Sidedef's Sector

See Transfer_CeilingLight.

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.

In UDMF, you need to use linedef's tranmap property to obtain the same effect, on all lines which have to be translucent. You can also opt to use alpha and renderstyle. There's no dedicated linedef special on UDMF for this.

242   Ext    --   Set Tagged Lighting, Flats Heights to 1st Sidedef's Sector,
                  and set colormap based on sidedef textures.

See Transfer_Heights.

223   Ext    --   Length Sets Friction in tagged Sector,Sludge<100, Ice>100

See Sector_SetFriction.

New to MBF[edit]

271   Ext    --   Transfer sky texture to tagged sectors 
272   Ext    --   Transfer sky texture to tagged sectors, flipped

These linedefs transfer wall textures to skies. F_SKY1 must still be used as the floor or ceiling texture in the sectors for which sky is desired, but the presence of a 271 or 272 property-transfer linedef can change the sky texture to something other than a level-based default.

Every sector with F_SKY1 floor or ceiling which shares the same sector tag as the 271 or 272 linedef will use a sky texture based on the upper texture of the first sidedef in the 271 or 272 linedef. Sectors with F_SKY1 floors or ceilings which are not tagged with 271 or 272 linedefs, behave just like Doom.

Horizontal offsets or scrolling in the transferred texture, is converted into rotation of the sky texture. Vertical offsets or scrolling is transferred as well, allowing for precise adjustments of sky position. Unpegging in the sky transfer linedef does not affect the sky texture.

Horizontal scrolling of the transferred upper wall texture is converted into rotation of the sky texture, but it occurs at a very slow speed relative to the moving texture, allowing for long-period rotations (such as one complete revolution per Doom real-time hour).

Effects other than sky-transfer effects are not excluded from the affected sector(s), and tags can be shared so long as the effects are unambiguous. For example, a wall-scrolling linedef can share a sector tag with both its affectee linedef (the one being scrolled), and with the sector that the latter controls. There is no ambiguity because one effect (scrolling) applies to a linedef, while the other effect (sky transfer) applies to a sector.

If a sector underneath a special sky needs to be set up to have a different purpose (for example, if it is a lift or a stairbuilder), then two tags will need to be created, and the transfer linedef and any scrolling linedefs will need to be duplicated as well, so that the same effect as far as the sky goes, is duplicated in two separate sector tags. This will not affect sky appearance, but it will allow a special sector which needs a unique tag, to sit under such a sky.

Animated textures may be transferred to skies as well.

In Doom, skies were flipped horizontally. To maintain compatibility with this practice, the 272 linedef flips the wall image horizontally. The 271 linedef does not flip the wall image, and it is intended to make it easier to take existing non-flipped wall textures and transfer them to skies.

Sky textures which are different must be separated by non-sky textures, or else the results are undefined. Note for Eternity Engine v3.31 public beta 6 and later: Sky textures will be rendered using the maximum of the texture height and the height of the tallest patch in the texture, in order to properly support tall skies that do not require stretching for mlook. Because of this, textures which are meant to cut off a taller patch at the texture height will not appear as expected when used as sky textures. Avoid using sky textures which contain patches taller than the texture to avoid this problem.

Constant pushers[edit]

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[edit]

Two types of point pushers are available, push and pull.

This 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). In Doom format, a linedef type of 226 is used to control the effect, and this line should be tagged to the sector with the 5001/5002 Thing. In UDMF and ExtraData, use PointPush_SetForce.

Usually, 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. In the parameterized version you also have the option to set an explicit length value.

The sector where the 5001/5002 Things reside must have the wind-enable bit set in its type. If this is turned off, the effect goes away. The bit is, depending on format:

  • bit 9 (0x200, 512) in the Doom format,
  • bit 12 (0x1000, 4096) in UDMF.

Point pushers can be combined with scrolling effects and constant pushers.

226  Ext     --   Length Sets Point Source Wind/Current Force in Tagged Sectors

Moving 3DMidTex Lines[edit]

These line types allow lines with the 3DMidTex flag (linedef flag 1024) to be scrolled vertically along with the floor or ceiling action of a sector.

The floor or ceiling movement of the sector on the first side of one of these lines will be transferred to the y offsets of both sidedefs of all like-tagged 3DMixTex lines. If the transfer sector or the tagged lines are blocked by a moving object such as an enemy, they will obey the transfer sector's rules for movement when blocked (for example, 3DMidTex lines tagged to a DR door sector will bounce off of monster's heads).

The new linedefs are as follows:

281  Ext     --   Floor movement of sector on 1st side is transferred to all
                  like-tagged 3DMidTex lines as vertical scrolling
              
282  Ext     --   Ceiling movement of sector on 1st side is transferred to all
                  like-tagged 3DMidTex lines as vertical scrolling

For the parameterized special, see Sector_Attach3dMidtex.

Heretic wind/current transfer[edit]

These lines allow Heretic-style wind and current effects to be used independent of automatic Heretic map translation. BOOM-style Heretic levels should use these lines in combination with scrollers and generalized damage sector types to replicate Heretic sector types 4 and 20 through 51.

Line type 293 duplicates Heretic wind specials, which affect only things with the Bits3 WINDTHRUST flag when the things are anywhere within the tagged sectors.

Line type 294 duplicates Heretic current specials, which affect only the player, and only when he/she is on the ground.

The effect, applied in every tagged sector, is to push all things in the direction of the control linedef with a force proportional to its length. The length of the line is scaled by a factor of 512, giving the following equivalencies for Heretic sector types:

Heretic Sector Type    Equivalent Line Setup
---------------------------------------------------------------------------
4                      294, East (0 degrees), length  112

20 - 24                294, East (0 degrees), lengths 20, 40, 100, 120, 140
25 - 29                294, North (90 deg.),  lengths 20, 40, 100, 120, 140
30 - 34                294, South (270 deg.), lengths 20, 40, 100, 120, 140
35 - 39                294, West (180 deg.),  lengths 20, 40, 100, 120, 140

40 - 42                293, East (0 degrees), lengths 20, 40, 100
43 - 45                293, North (90 deg.),  lengths 20, 40, 100
46 - 48                293, South (270 deg.), lengths 20, 40, 100
49 - 51                293, West (180 deg.),  lengths 20, 40, 100
---------------------------------------------------------------------------

The new linedefs are as follows:

293  Ext     --   Heretic wind in line direction with push magnitude proportional
                  to line length.
              
294  Ext     --   Heretic current in line direction with push magnitude proportional
                  to line length.