Floor movement classic specials: Difference between revisions

From Eternity Wiki
Jump to navigationJump to search
(Undo revision 2387 by Printz (Talk))
Line 177: Line 177:
  Tx0 = Texture copied and Type->0  Num = Numeric Model
  Tx0 = Texture copied and Type->0  Num = Numeric Model
  TxTy = Texture and Type copied
  TxTy = Texture and Type copied
=Parameterized Floor Types=
There are currently seventeen types of parameterized floor specials, each performing a different type of floor action. See the Parameterized Floor Types section for full information on how to use these specials.
*306 '''Floor_RaiseToHighest'''(''tag'', ''speed'', ''change'', ''crush'')
Parameterized Floor Types
*307 '''Floor_LowerToHighest'''(''tag'', ''speed'', ''change'')
------------------------------------------------------------------------------
*308 '''Floor_RaiseToLowest'''(''tag'', ''change'', ''crush'')
#        Class  Function                          ExtraData Name
*309 '''Floor_LowerToLowest'''(''tag'', ''speed'', ''change'')
*310 '''Floor_RaiseToNearest'''(''tag'', ''speed'', ''change'', ''crush'')
306     Param  Up to Highest Neighbor Floor      Floor_RaiseToHighest
*311 '''Floor_LowerToNearest'''(''tag'', ''speed'', ''change'')
307     Param  Down to Highest Neighbor Floor    Floor_LowerToHighest
*312 '''Floor_RaiseToLowestCeiling'''(''tag'', ''speed'', ''change'', ''crush'')
308     Param  Up to Lowest Neighbor Floor        Floor_RaiseToLowest
*313 '''Floor_LowerToLowestCeiling'''(''tag'', ''speed'', ''change'')
309     Param  Down to Lowest Neighbor Floor      Floor_LowerToLowest
*314 '''Floor_RaiseToCeiling'''(''tag'', ''speed'', ''change'', ''crush'')
310     Param  Up to Next Neighbor Floor          Floor_RaiseToNearest
*315 '''Floor_RaiseByTexture'''(''tag'', ''speed'', ''change'', ''crush'')
311     Param  Down to Next Neighbor Floor        Floor_LowerToNearest
*316 '''Floor_LowerByTexture'''(''tag'', ''speed'', ''change'')
312     Param  Up to Lowest Neighbor Ceiling      Floor_RaiseToLowestCeiling
*317 '''Floor_RaiseByValue'''(''tag'', ''speed'', ''height'', ''change'', ''crush'')
313     Param  Down to Lowest Neighbor Ceiling    Floor_LowerToLowestCeiling
*318 '''Floor_LowerByValue'''(''tag'', ''speed'', ''height'', ''change'')
314     Param  Up to Ceiling                      Floor_RaiseToCeiling
*319 '''Floor_MoveToValue'''(''tag'', ''speed'', ''height'', ''change'', ''crush'')
315     Param  Up Abs Shortest Lower Texture      Floor_RaiseByTexture
*320 '''Floor_RaiseInstant'''(''tag'', ''height'', ''change'', ''crush'')
316     Param  Down Abs Shortest Lower Texture    Floor_LowerByTexture
*321 '''Floor_LowerInstant'''(''tag'', ''height'', ''change'')
317     Param  Up Absolute Param                  Floor_RaiseByValue
*322 '''Floor_ToCeilingInstant'''(''tag'', ''change'', ''crush'')
318     Param  Down Absolute Param                Floor_LowerByValue
:''tag'': Tag of sector whose floor to move. Use zero if the intended sector is behind the activating linedef, if applicable.
319     Param  To Absolute Height                Floor_MoveToValue
:''speed'': Speed in eights of units per tic. Doom's usual floors are equivalent to 8, others to 32. Note that some of Doom's drawbridges use the speed of 4.
320     Param  Up Absolute Param, Instant        Floor_RaiseInstant
:''height'': How many vertical map units to move the floor, if the parameterized special allows it.
321     Param  Down Absolute Param, Instant      Floor_LowerInstant
:''change'': Set up whether to change the texture and/or type and how:
322     Param  To Ceiling Instant                Floor_ToCeilingInstant
:*0 : No texture or type change.
:*1 : Copy texture, zero type; trigger model.
:*2 : Copy texture, zero type; numeric model.
:*3 : Copy texture, preserve type; trigger model.
:*4 : Copy texture, preserve type; numeric model.
:*5 : Copy texture and type; trigger model.
:*6 : Copy texture and type; numeric model.
:''crush'': If greater than zero, amount of damage to inflict at each four tics on obstructing shootable objects.
 
----


''Back to [[Linedef types]]''
''Back to [[Linedef types]]''

Revision as of 03:51, 22 February 2010

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.

Up/Down Absolute Param

Only available to parameterized floor specials, this target moves the floor in its indicated direction by the number of units provided as a special argument.

To Absolute Height

Only available to parameterized floor specials, this target moves the floor to an exact height which is provided as a parameter. This floor type always moves either up or down to the given height depending on whether it is higher or lower than the floor's current position. This means that instantaneous motion is not possible.

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. Parameterized floor types can move at any speed.

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.

Floor linedef types

Regular and Extended Floor Types
--------------------------------------------------------------------------------------------------
#     Class   Trig   Dir Spd   Chg  Mdl Mon Crsh  Target                        ExtraData mnemonic

60    Reg     SR     Dn  Slow  None --  No  No    Lowest Neighbor Floor         SR_Floor_DnLnF_Slow
23    Reg     S1     Dn  Slow  None --  No  No    Lowest Neighbor Floor         S1_Floor_DnLnF_Slow
82    Reg     WR     Dn  Slow  None --  No  No    Lowest Neighbor Floor         WR_Floor_DnLnF_Slow
38    Reg     W1     Dn  Slow  None --  No  No    Lowest Neighbor Floor         W1_Floor_DnLnF_Slow
     
177   Ext     SR     Dn  Slow  TxTy Num No  No    Lowest Neighbor Floor         SR_Floor_DnLnF_cSn_Slow
159   Ext     S1     Dn  Slow  TxTy Num No  No    Lowest Neighbor Floor         S1_Floor_DnLnF_cSn_Slow
84    Reg     WR     Dn  Slow  TxTy Num No  No    Lowest Neighbor Floor         WR_Floor_DnLnF_cSn_Slow
37    Reg     W1     Dn  Slow  TxTy Num No  No    Lowest Neighbor Floor         W1_Floor_DnLnF_cSn_Slow

69    Reg     SR     Up  Slow  None --  No  No    Next Neighbor Floor           SR_Floor_UpNnF_Slow
18    Reg     S1     Up  Slow  None --  No  No    Next Neighbor Floor           S1_Floor_UpNnF_Slow
128   Reg     WR     Up  Slow  None --  No  No    Next Neighbor Floor           WR_Floor_UpNnF_Slow
119   Reg     W1     Up  Slow  None --  No  No    Next Neighbor Floor           W1_Floor_UpNnF_Slow

132   Reg     SR     Up  Fast  None --  No  No    Next Neighbor Floor           SR_Floor_UpNnF_Fast
131   Reg     S1     Up  Fast  None --  No  No    Next Neighbor Floor           S1_Floor_UpNnF_Fast
129   Reg     WR     Up  Fast  None --  No  No    Next Neighbor Floor           WR_Floor_UpNnF_Fast
130   Reg     W1     Up  Fast  None --  No  No    Next Neighbor Floor           W1_Floor_UpNnF_Fast

222   Ext     SR     Dn  Slow  None --  No  No    Next Neighbor Floor           SR_Floor_DnNnF_Slow
221   Ext     S1     Dn  Slow  None --  No  No    Next Neighbor Floor           S1_Floor_DnNnF_Slow
220   Ext     WR     Dn  Slow  None --  No  No    Next Neighbor Floor           WR_Floor_DnNnF_Slow
219   Ext     W1     Dn  Slow  None --  No  No    Next Neighbor Floor           W1_Floor_DnNnF_Slow

64    Reg     SR     Up  Slow  None --  No  No    Lowest Neighbor Ceiling       SR_Floor_UpLnC_Slow
101   Reg     S1     Up  Slow  None --  No  No    Lowest Neighbor Ceiling       S1_Floor_UpLnC_Slow
91    Reg     WR     Up  Slow  None --  No  No    Lowest Neighbor Ceiling       WR_Floor_UpLnC_Slow
5     Reg     W1     Up  Slow  None --  No  No    Lowest Neighbor Ceiling       W1_Floor_UpLnC_Slow
24    Reg     G1     Up  Slow  None --  No  No    Lowest Neighbor Ceiling       G1_Floor_UpLnC_Slow

65    Reg     SR     Up  Slow  None --  No  Yes   Lowest Neighbor Ceiling - 8   SR_Floor_UpLnCm8_Slow_Crush
55    Reg     S1     Up  Slow  None --  No  Yes   Lowest Neighbor Ceiling - 8   S1_Floor_UpLnCm8_Slow_Crush
94    Reg     WR     Up  Slow  None --  No  Yes   Lowest Neighbor Ceiling - 8   WR_Floor_UpLnCm8_Slow_Crush
56    Reg     W1     Up  Slow  None --  No  Yes   Lowest Neighbor Ceiling - 8   W1_Floor_UpLnCm8_Slow_Crush

45    Reg     SR     Dn  Slow  None --  No  No    Highest Neighbor Floor        SR_Floor_DnHnF_Slow
102   Reg     S1     Dn  Slow  None --  No  No    Highest Neighbor Floor        S1_Floor_DnHnF_Slow
83    Reg     WR     Dn  Slow  None --  No  No    Highest Neighbor Floor        WR_Floor_DnHnF_Slow
19    Reg     W1     Dn  Slow  None --  No  No    Highest Neighbor Floor        W1_Floor_DnHnF_Slow

70    Reg     SR     Dn  Fast  None --  No  No    Highest Neighbor Floor + 8    SR_Floor_DnHnFp8_Fast
71    Reg     S1     Dn  Fast  None --  No  No    Highest Neighbor Floor + 8    S1_Floor_DnHnFp8_Fast
98    Reg     WR     Dn  Fast  None --  No  No    Highest Neighbor Floor + 8    WR_Floor_DnHnFp8_Fast
36    Reg     W1     Dn  Fast  None --  No  No    Highest Neighbor Floor + 8    W1_Floor_DnHnFp8_Fast

180   Ext     SR     Up  Slow  None --  No  No    Absolute 24                   SR_Floor_Up24_Slow
161   Ext     S1     Up  Slow  None --  No  No    Absolute 24                   S1_Floor_Up24_Slow
92    Reg     WR     Up  Slow  None --  No  No    Absolute 24                   WR_Floor_Up24_Slow
58    Reg     W1     Up  Slow  None --  No  No    Absolute 24                   W1_Floor_Up24_Slow

179   Ext     SR     Up  Slow  TxTy Trg No  No    Absolute 24                   SR_Floor_Up24_cSt_Slow
160   Ext     S1     Up  Slow  TxTy Trg No  No    Absolute 24                   S1_Floor_Up24_cSt_Slow
93    Reg     WR     Up  Slow  TxTy Trg No  No    Absolute 24                   WR_Floor_Up24_cSt_Slow
59    Reg     W1     Up  Slow  TxTy Trg No  No    Absolute 24                   W1_Floor_Up24_cSt_Slow

176   Ext     SR     Up  Slow  None --  No  No    Abs Shortest Lower Texture    SR_Floor_UpsT_Slow
158   Ext     S1     Up  Slow  None --  No  No    Abs Shortest Lower Texture    S1_Floor_UpsT_Slow
96    Reg     WR     Up  Slow  None --  No  No    Abs Shortest Lower Texture    WR_Floor_UpsT_Slow
30    Reg     W1     Up  Slow  None --  No  No    Abs Shortest Lower Texture    W1_Floor_UpsT_Slow

178   Ext     SR     Up  Slow  None --  No  No    Absolute 512                  SR_Floor_Up512_Slow
140   Reg     S1     Up  Slow  None --  No  No    Absolute 512                  S1_Floor_Up512_Slow
147   Ext     WR     Up  Slow  None --  No  No    Absolute 512                  WR_Floor_Up512_Slow
142   Ext     W1     Up  Slow  None --  No  No    Absolute 512                  W1_Floor_Up512_Slow

190   Ext     SR     --  ----  TxTy Trg No  No    None                          SR_Floor_cSt
189   Ext     S1     --  ----  TxTy Trg No  No    None                          S1_Floor_cSt
154   Ext     WR     --  ----  TxTy Trg No  No    None                          WR_Floor_cSt
153   Ext     W1     --  ----  TxTy Trg No  No    None                          W1_Floor_cSt

78    Ext     SR     --  ----  TxTy Num No  No    None                          SR_Floor_cSn
241   Ext     S1     --  ----  TxTy Num No  No    None                          S1_Floor_cSn
240   Ext     WR     --  ----  TxTy Num No  No    None                          WR_Floor_cSn
239   Ext     W1     --  ----  TxTy Num No  No    None                          W1_Floor_cSn

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     D1/DR  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

There are currently seventeen types of parameterized floor specials, each performing a different type of floor action. See the Parameterized Floor Types section for full information on how to use these specials.

Parameterized Floor Types
------------------------------------------------------------------------------
#        Class   Function                           ExtraData Name

306      Param   Up to Highest Neighbor Floor       Floor_RaiseToHighest
307      Param   Down to Highest Neighbor Floor     Floor_LowerToHighest
308      Param   Up to Lowest Neighbor Floor        Floor_RaiseToLowest
309      Param   Down to Lowest Neighbor Floor      Floor_LowerToLowest
310      Param   Up to Next Neighbor Floor          Floor_RaiseToNearest
311      Param   Down to Next Neighbor Floor        Floor_LowerToNearest
312      Param   Up to Lowest Neighbor Ceiling      Floor_RaiseToLowestCeiling
313      Param   Down to Lowest Neighbor Ceiling    Floor_LowerToLowestCeiling
314      Param   Up to Ceiling                      Floor_RaiseToCeiling
315      Param   Up Abs Shortest Lower Texture      Floor_RaiseByTexture
316      Param   Down Abs Shortest Lower Texture    Floor_LowerByTexture
317      Param   Up Absolute Param                  Floor_RaiseByValue
318      Param   Down Absolute Param                Floor_LowerByValue
319      Param   To Absolute Height                 Floor_MoveToValue
320      Param   Up Absolute Param, Instant         Floor_RaiseInstant
321      Param   Down Absolute Param, Instant       Floor_LowerInstant
322      Param   To Ceiling Instant                 Floor_ToCeilingInstant

Back to Linedef types