Editing Parameterized linedef specials

From Eternity Wiki
Jump to navigationJump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
The parameterized linedefs types are Hexen-like action specials with arguments, whose purpose is to be more customizable than the Boom generalized types. When mapping in UDMF, you have to use these parameterized specials instead of the classic parameter-less ones. They're also used in Hexen format maps (which is necessary when Hexen is going to be supported in Eternity), though Hexen format is not recommended or fully supported for other maps than vanilla Hexen in Eternity. To use parameterized specials in classic (Doom) format maps, provide an [[ExtraData]] lump by attaching it via [[MapInfo|EMAPINFO]] to the map. [[ACS]] scripts can also call parameterized specials. They're meant to be as compatible as possible with the ZDoom implementation, so minimal changes to zspecial.acs are needed, though Eternity may have extensions of its own. Most likely however the base zspecial.acs is going to be updated for Eternity. Parameters are only limited to 0-255 in the Hexen format (and some specials may have some legacy workarounds for that interval), but otherwise they're in the normal integer range for other environments (UDMF, ExtraData, ACS). Some specials have never been added to ExtraData, because of their mere purpose being to work under the limits of the Hexen map format.
The parameterized linedefs types are Hexen-like action specials with arguments, whose purpose is to be more customizable than the Boom generalized types. When mapping in UDMF, you have to use these parameterized specials instead of the classic parameter-less ones. They're also used in Hexen format maps (which is necessary when Hexen is going to be supported in Eternity), though Hexen format is not recommended or fully supported for other maps than vanilla Hexen in Eternity. Finally, to use parameterized specials in classic (Doom) format maps, provide an [[ExtraData]] lump by attaching it via [[MapInfo|EMAPINFO]] to the map. [[ACS]] scripts can also call parameterized specials. They're meant to be as compatible as possible with the ZDoom implementation, so minimal changes to zspecial.acs are needed, though Eternity may have extensions of its own. Most likely however the base zspecial.acs is going to be updated for Eternity. Parameters are only limited to 0-255 in the Hexen format (and some specials may have some legacy workarounds for that interval), but otherwise they're in the normal integer range for other environments (UDMF, ExtraData, ACS). Some specials have never been added to ExtraData, because of their mere purpose being to work under the limits of the Hexen map format.


Each parameterized line special has a name and two associated numbers: one for UDMF, ACS and Hexen formats, and another one for ExtraData support, set this way to avoid conflicts with classic Boom specials (since it's possible to use their number in the editor instead of the 270 "ExtraData special"). If you only see one number mentioned in the documentation, then it's the UDMF number (for ExtraData it's preferred to use the names).
Each parameterized line special has a name and two associated numbers: one for ExtraData support, set this way to avoid conflicts with classic Boom specials, and one for Hexen, ACS and UDMF formats.
 
For any parameterized special with first argument defined as ''tag'', if it's 0, it will affect the sector behind the line (if any). It will not affect all sectors with tag 0, or be rejected, as it is with classic specials. For thing specials, tag 0 usually means the activator, and tags -1, -2, -3, -4 mean each of the players in a multiplayer game, unless otherwise noted.


'''IMPORTANT''': all ''reserved'' parameters must be set to 0. Failure to do so will result in your maps being broken in later Eternity versions! Also, for "flag" arguments, do not add or provide other values than in the intended range, for the same reason.
'''IMPORTANT''': all ''reserved'' parameters must be set to 0. Failure to do so will result in your maps being broken in later Eternity versions! Also, for "flag" arguments, do not add or provide other values than in the intended range, for the same reason.


{{Backto|Linedef types}}
{{Backto|Linedef types}}
==General info==
All sector tags, unless otherwise specified, have a special meaning if 0: that means to affect the sector behind the trigger linedef (like regular doors in vanilla Doom).


Thing tags (TIDs) have special meaning for values 0 and negative: 0 means activator, and -1 to -4 mean to affect players 1 to 4 (if present). '''Consider other negative values reserved''' and do not use them in your maps.
==Doors==
==Specials==
===Doors===
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
! ExtraData #
! DOOM Format #
! Name
! Name
! Args
! Arg1
! Summary
! Arg2
! Arg3
! Arg4
! Arg5
|-
|-
|| 10 || 302 || [[Door_Close]] || ''tag'', ''speed'', ''light_tag'' || Closes a door.
|| 10 || 302 || [[Door_Close]] || ''tag'' || ''speed'' || ''light_tag'' || ||
|-
|-
|| 11 || 301 || [[Door_Open]] || ''tag'', ''speed'', ''light_tag'' || Opens a door.
|| 11 || 301 || [[Door_Open]] || ''tag'' || ''speed'' || ''light_tag'' || ||
|-
|-
|| 12 || 300 || [[Door_Raise]] || ''tag'', ''speed'', ''delay'', ''light_tag'' || Opens a door temporarily.
|| 12 || 300 || [[Door_Raise]] || ''tag'' || ''speed'' || ''delay'' || ''light_tag'' ||
|-
|-
|| 13 || 429 || [[Door_LockedRaise]] || ''tag'', ''speed'', ''delay'', ''lock'', ''light_tag'' || Opens a locked door.
|| 13 || 429 || [[Door_LockedRaise]] || ''tag'' || ''speed'' || ''delay'' || ''lock'' || ''light_tag''
|-
|-
|| 105 || 304 || [[Door_WaitRaise]] || ''tag'', ''speed'', ''delay'', ''timeoffset'', ''light_tag'' || Opens a door temporarily after a delay.
|| 105 || 304 || [[Door_WaitRaise]] || ''tag'' || ''speed'' || ''delay'' || ''timeoffset'' || ''light_tag''
|-
|-
|| 106 || 305 || [[Door_WaitClose]] || ''tag'', ''speed'', ''timeoffset'', ''light_tag'' || Closes a door after a delay.
|| 106 || 305 || [[Door_WaitClose]] || ''tag'' || ''speed'' || ''timeoffset'' || ''light_tag'' ||
|-
|-
|| 249 || 303 || [[Door_CloseWaitOpen]] || ''tag'', ''speed'', ''delay_octics'', ''light_tag'' || Closes a door, waits a bit, then opens it back.
|| 249 || 303 || [[Door_CloseWaitOpen]] || ''tag'' || ''speed'' || ''delay_octics'' || ''light_tag'' ||
|}
|}
:''tag'': Tag of sector to affect. If it's 0, then the sector behind the linedef will be activated, if applicable.
:''tag'': Tag of sector to affect. If it's 0, then the sector behind the linedef will be activated, if applicable.
Line 41: Line 42:
:''lock'': One of the [[lock identifiers]] to specify the key or set of keys.
:''lock'': One of the [[lock identifiers]] to specify the key or set of keys.


===Floor movement, earthquake===
==Floor movement, earthquake==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
! ExtraData #
! DOOM Format #
! Name
! Name
! Arg1
! Arg1
Line 51: Line 52:
! Arg4
! Arg4
! Arg5
! Arg5
! Description
|-
|-
|| 20 || 318 || [[Floor_LowerByValue]] || ''tag'' || ''speed'' || ''height'' || ''change'' ||
|| 20 || 318 || [[Floor_LowerByValue]] || ''tag'' || ''speed'' || ''height'' || ''change'' ||
Line 73: Line 73:
|| 37 || 319 || [[Floor_MoveToValue]] || ''tag'' || ''speed'' || ''height'' || ''neg'' || ''change''
|| 37 || 319 || [[Floor_MoveToValue]] || ''tag'' || ''speed'' || ''height'' || ''neg'' || ''change''
|-
|-
|| 46 || 452 || [[Floor_CrushStop]] || ''tag'' || || || || || Stops crushing floor movement.
|| 46 || 452 || [[Floor_CrushStop]] || ''tag'' || || || ||
|-
|-
|| 66 || 321 || [[Floor_LowerInstant]] || ''tag'' || - || ''height'' || ''change'' || || Lowers floor instantly.
|| 66 || 321 || [[Floor_LowerInstant]] || ''tag'' || - || ''height'' || ''change'' ||
|-
|-
|| 67 || 320 || [[Floor_RaiseInstant]] || ''tag'' || - || ''height'' || ''change'' || ''crush'' || Raises floor instantly.
|| 67 || 320 || [[Floor_RaiseInstant]] || ''tag'' || - || ''height'' || ''change'' || ''crush''
|-
|-
|| 68 || - || [[Floor_MoveToValueTimes8]] || ''tag'' || ''speed'' || ''height'' || ''neg'' || ''change''
|| 68 || - || [[Floor_MoveToValueTimes8]] || ''tag'' || ''speed'' || ''height'' || ''neg'' || ''change''
Line 85: Line 85:
|| 138 || 397 || [[Floor_Waggle]] || tag || height || speed || offset || timer
|| 138 || 397 || [[Floor_Waggle]] || tag || height || speed || offset || timer
|-
|-
|| 200 || 464 || [[Generic_Floor]] || tag || speed || height || target || flags || Boom-like generalized floor.
|| 200 || 464 || [[Generic_Floor]] || tag || speed || height || target || flags
|-
|-
|| 228 || 475 || [[Plat_RaiseAndStayTx0]] || tag || speed || lock out || || || Variation of [[Floor_RaiseToNearest]].
|| 228 || 475 || [[Plat_RaiseAndStayTx0]] || tag || speed || lock out || ||
|-
|-
|| 230 || 476 || [[Plat_UpByValueStayTx]] || tag || speed || height || || || Variation of [[Floor_RaiseByValue]]
|| 230 || 476 || [[Plat_UpByValueStayTx]] || tag || speed || height || ||
|-
|-
|| 231 || 487 || [[Plat_ToggleCeiling]] || tag || || || || || Toggles floor between ceiling and initial position.
|| 231 || 487 || [[Plat_ToggleCeiling]] || tag || || || ||
|-
|-
|| 235 || 466 || [[Floor_TransferTrigger]] || ''tag'' || || || ||
|| 235 || 466 || [[Floor_TransferTrigger]] || ''tag'' || || || ||
Line 107: Line 107:
|| 256 || 307 || [[Floor_LowerToHighestEE]] || ''tag'' || ''speed'' || ''change'' || ||
|| 256 || 307 || [[Floor_LowerToHighestEE]] || ''tag'' || ''speed'' || ''change'' || ||
|-
|-
|| 257 || 308 || [[Floor_RaiseToLowest]] || ''tag'' || ''change'' || ''crush'' || || || Instantly lower floor to lowest neighbour.
|| 257 || 308 || [[Floor_RaiseToLowest]] || ''tag'' || ''change'' || ''crush'' || ||
|-
|-
|| 258 || 313 || [[Floor_LowerToLowestCeiling]] || ''tag'' || ''speed'' || ''change'' || || || Lower floor to lowest ceiling.
|| 258 || 313 || [[Floor_LowerToLowestCeiling]] || ''tag'' || ''speed'' || ''change'' || ||
|-
|-
|| 259 || 314 || [[Floor_RaiseToCeiling]] || ''tag'' || ''speed'' || ''change'' || ''crush'' || ''gap'' || Raise floor to ceiling.
|| 259 || 314 || [[Floor_RaiseToCeiling]] || ''tag'' || ''speed'' || ''change'' || ''crush'' || ''gap''
|-
|-
|| 260 || 322 || [[Floor_ToCeilingInstant]] || ''tag'' || ''change'' || ''crush'' || ''gap'' || || Raise floor to ceiling instantly.
|| 260 || 322 || [[Floor_ToCeilingInstant]] || ''tag'' || ''change'' || ''crush'' || ''gap'' ||
|-
|-
|| 261 || 316 || [[Floor_LowerByTexture]] || ''tag'' || ''speed'' || ''change'' || || || Lower floor by shortest lower texture.
|| 261 || 316 || [[Floor_LowerByTexture]] || ''tag'' || ''speed'' || ''change'' || ||
|-
|-
|}
|}
*431:'''Floor_Donut''' (pillar_tag, pillar_speed, surrounding_speed)
:Does the donut movement behavior, allowing you to choose pillar speed and surrounding pool speed. The tag belongs to the pillar.
*397:'''Floor_Waggle''' ( tag, height, speed, offset, timer )
*397:'''Floor_Waggle''' ( tag, height, speed, offset, timer )
:This special implements the sinusoidal floor motion from Hexen. Its tag and speed parameters bear similar properties to the other floor specials, but -
:This special implements the sinusoidal floor motion from Hexen. Its tag and speed parameters bear similar properties to the other floor specials, but -
Line 125: Line 128:
*375:'''Radius_Quake''' (intensity, duration, damageradius, quakeradius, tid)
*375:'''Radius_Quake''' (intensity, duration, damageradius, quakeradius, tid)
:This special implements the earthquake effect, centred on the map spot with the given ''tid'', with user-selectable intensity, duration and separate thing damage radius and tremor radius (both being multiplied with 64).
:This special implements the earthquake effect, centred on the map spot with the given ''tid'', with user-selectable intensity, duration and separate thing damage radius and tremor radius (both being multiplied with 64).
*464:'''Generic_Floor'''(''tag'', ''speed'', ''height'', ''target'', ''flags'')
:Encapsulates and applies Boom generalized specials, including all their peculiarities. ''Height'' applies only if it's set to move by a parameterized abount. ''Target'' has the following meanings: 0 (move by ''height''), 1 (to highest neighbor floor), 2 (to lowest neighbor floor), 3 (to next neighbor floor), 4 (to lowest neighbor ceiling), 5 (to ceiling), 6 (by shortest lower texture). By default the floor moves down. To make it move up, add 8 to ''flags''. To make it crush, add 16 to ''flags''. To make it change floor texture, add 1 (zero special), 2 (keep special) or 3 (change special) to ''flags''. In this case, by default it will use the trigger model. To make it use the numeric model, add 4 to ''flags''.
:It is recommended to use the other floor specials instead. Use this if you need some exact Boom behavior.
*452:'''Floor_CrushStop'''(''tag'')
:For Hexen compatibility (and set to emulate Hexen bugs when run on classic Hexen maps), it stops any (and only) crushing floors from moving, and lets you apply other floor movement specials on those sectors (unlike crushing ceiling stoppers).
*451:'''Floor_RaiseAndCrush'''(''tag'', ''speed'', ''crush'')
*451:'''Floor_RaiseAndCrush'''(''tag'', ''speed'', ''crush'')
:This one is for Hexen compatibility. Please use '''Floor_RaiseToCeiling''' or '''Floor_RaiseToLowestCeiling''' instead.
:This one is for Hexen compatibility. Please use '''Floor_RaiseToCeiling''' or '''Floor_RaiseToLowestCeiling''' instead.
====See also====
*475:'''Plat_RaiseAndStayTx0'''(''tag'', ''speed'', ''hereticemu'')
:This one is for Doom/Heretic compatibility. Raises a floor to the nearest neighbor and changes the texture and zeroes the type, according to the trigger model. If the sector is blocked by a thing, it will return to its initial position. '''Hereticemu''' emulates a Heretic bug where such lines would cause the sector to remain in stasis, with no possibility of being reused.
*476:'''Plat_UpByValueStayTX'''(''tag'', ''speed'', ''distance'')
:This one is for Doom/Heretic compatibility. Raises a floor by ''distance'' * 8 units. If a thing blocks the sector, the sector will return to its initial position. The texture will be changed, but not the sector type.
===See also===
*[[Floor movement classic specials]]: for the Doom format variants.
*[[Floor movement classic specials]]: for the Doom format variants.


===Plats, lifts===
==Plats, lifts==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 140: Line 152:
! Arg4
! Arg4
! Arg5
! Arg5
! Description
|-
|-
|| 60 || 410 || [[Plat_PerpetualRaise]] || tag || speed || delay || || || Perpetual lift with lip of 8
|| 60 || 410 || [[Plat_PerpetualRaise]] || tag || speed || delay || ||
|-
|-
|| 61 || 411 || [[Plat_Stop]] || tag || stop_mode || || ||
|| 61 || 411 || [[Plat_Stop]] || tag || stop_mode || || ||
Line 153: Line 164:
|-
|-
|| 65 || 415 || [[Plat_UpByValue]] || tag || speed || delay || height ||
|| 65 || 415 || [[Plat_UpByValue]] || tag || speed || delay || height ||
|-
|| 203 || 501 || [[Generic_Lift]] || tag || speed || delay || type || height ||
|-
|-
|| 206 || 488 || [[Plat_DownWaitUpStayLip]] || tag || speed || delay || lip ||
|| 206 || 488 || [[Plat_DownWaitUpStayLip]] || tag || speed || delay || lip ||
Line 160: Line 169:
|| 207 || 489 || [[Plat_PerpetualRaiseLip]] || tag || speed || delay || lip ||
|| 207 || 489 || [[Plat_PerpetualRaiseLip]] || tag || speed || delay || lip ||
|}
|}
*60 (410) '''Plat_PerpetualRaise'''(''tag'', ''speed'', ''delay'')
:Starts a perpetual platform moving periodically between the lowest adjacent '''plus 8 units''' and highest adjacent neighbor floor. Important: this is not like the classic Doom special, and inherits the Hexen one. To act like Doom, use '''Plat_PerpetualRaiseLip''' with a lip of 0 units. The starting direction is decided randomly.
*207 (489) '''Plat_PerpetualRaiseLip'''(''tag'', ''speed'', ''delay'', ''lip'')
*207 (489) '''Plat_PerpetualRaiseLip'''(''tag'', ''speed'', ''delay'', ''lip'')
:Like '''Plat_PerpetualRaise''', but lets you choose a "lip" (distance from lowest adjacent floor to move down to). If ''lip'' is 0, it will work like classic Doom perpetual plats.
:Like '''Plat_PerpetualRaise''', but lets you choose a "lip" (distance from lowest adjacent floor to move down to). If ''lip'' is 0, it will work like classic Doom perpetual plats.
Line 180: Line 191:
:Toggles a floor between the default position and touching the ceiling. It will be left busy after that.
:Toggles a floor between the default position and touching the ceiling. It will be left busy after that.


===Elevators===
==Elevators==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 202: Line 213:
|}
|}


===Ceiling movement===
==Ceiling movement==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 212: Line 223:
! Arg4
! Arg4
! Arg5
! Arg5
|-
|| 38 || 500 || [[Ceiling_Waggle]] || tag || height || speed || offset || timer
|-
|-
|| 40 || 336 || [[Ceiling_LowerByValue]] || tag || speed || height || change || crush
|| 40 || 336 || [[Ceiling_LowerByValue]] || tag || speed || height || change || crush
Line 315: Line 324:
:See '''Generic_Floor''' for an explanation of parameters.
:See '''Generic_Floor''' for an explanation of parameters.


====Crushing ceilings====
===Crushing ceilings===
There are some crushing ceilings available now. Some originate from Hexen while others are extensions from ZDoom. ZDoom compatibility is considered where relevant. For all specials where it applies, ''crushmode'' can take one of these values:
There are some crushing ceilings available now. Some originate from Hexen while others are extensions from ZDoom. ZDoom compatibility is considered where relevant. For all specials where it applies, ''crushmode'' can take one of these values:
*0: compatibility. Act like it would do in ZDoom. This means that in Doom the crusher keeps pushing into the things it crushes, while in Hexen it stays on position while dealing damage. And if the game is Doom, the special has "Dist" in the name and the speed is set to 8, it will also slow down to speed 1 when crushing.
*0: compatibility. Act like it would do in ZDoom. This means that in Doom the crusher keeps pushing into the things it crushes, while in Hexen it stays on position while dealing damage. And if the game is Doom, the special has "Dist" in the name and the speed is set to 8, it will also slow down to speed 1 when crushing.
Line 336: Line 345:
*443: Generic_Crusher(tag, down_speed, up_speed, silent, damage)
*443: Generic_Crusher(tag, down_speed, up_speed, silent, damage)


===Stair building===
==Stair building==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 346: Line 355:
! Arg4
! Arg4
! Arg5
! Arg5
|-
|| 204 || 502 || [[Generic_Stairs]] || ''tag'' || ''speed'' || ''height'' || ''flags'' || ''reset''
|-
|-
|| 217 || 340 || [[Stairs_BuildUpDoom]] || ''tag'' || ''speed'' || ''stepsize'' || ''delay'' || ''reset''
|| 217 || 340 || [[Stairs_BuildUpDoom]] || ''tag'' || ''speed'' || ''stepsize'' || ''delay'' || ''reset''
Line 384: Line 391:
  ------------------------------------------------------------------------------
  ------------------------------------------------------------------------------


===Polyobjects===
==Polyobjects==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 410: Line 417:
|-
|-
|| 8 || 350 || [[Polyobj_DoorSlide]] || id || speed || angle || distance || delay
|| 8 || 350 || [[Polyobj_DoorSlide]] || id || speed || angle || distance || delay
|-
|| 59 || 499 || [[Polyobj_OR_MoveToSpot]] || id || speed || [[TID]] || ||
|-
|| 86 || 496 || [[Polyobj_MoveToSpot]] || id || speed || [[TID]] || ||
|-
|-
|| 87 || 474 || [[Polyobj_Stop]] || id || || || ||
|| 87 || 474 || [[Polyobj_Stop]] || id || || || ||
|-
|| 88 || 497 || [[Polyobj_MoveTo]] || id || speed || x || y ||
|-
|| 89 || 498 || [[Polyobj_OR_MoveTo]] || id || speed || x || y ||
|-
|-
|| 90 || 357 || [[Polyobj_OR_RotateLeft]] || id || speed || rotation || ||
|| 90 || 357 || [[Polyobj_OR_RotateLeft]] || id || speed || rotation || ||
Line 461: Line 460:
:Stops a polyobject from movement. It will then be free for other activations.
:Stops a polyobject from movement. It will then be free for other activations.


===Pillar building===
==Pillar building==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 520: Line 519:
*[[FloorAndCeiling_LowerRaise]]
*[[FloorAndCeiling_LowerRaise]]


===ACS Scripts===
==ACS Scripts==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 560: Line 559:
:This one executes a script that requires the player to have a key or more. See [[Lock identifiers]] for info on what to put for the ''lock'' argument.
:This one executes a script that requires the player to have a key or more. See [[Lock identifiers]] for info on what to put for the ''lock'' argument.


===Lights===
==Lights==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 618: Line 617:
:Sets the lights in tagged sectors to their maximum neighbors' values
:Sets the lights in tagged sectors to their maximum neighbors' values


===Things===
==Things==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 651: Line 650:
|| 134 || 402 || [[Thing_Projectile]] || tid || type || angle || speed || vertical speed
|| 134 || 402 || [[Thing_Projectile]] || tid || type || angle || speed || vertical speed
|-
|-
|| 135 || 398 || [[Thing_Spawn]] || tid || type || angle || new_tid ||
|| 135 || 398 || [[Thing_Spawn]] || tid || type || angle || ||
|-
|-
|| 136 || 403 || [[Thing_ProjectileGravity]] || tid || type || angle || speed || vertical speed
|| 136 || 403 || [[Thing_ProjectileGravity]] || tid || type || angle || speed || vertical speed
|-
|-
|| 137 || 399 || [[Thing_SpawnNoFog]] || tid || type || angle || new_tid ||
|| 137 || 399 || [[Thing_SpawnNoFog]] || tid || type || angle || ||
|-
|-
|| 176 || 421 || [[Thing_ChangeTID]] || oldtid || newtid || || ||
|| 176 || 421 || [[Thing_ChangeTID]] || oldtid || newtid || || ||
Line 665: Line 664:
*403:'''Thing_ProjectileGravity'''(tid, type, angle, speed, verticalspeed)
*403:'''Thing_ProjectileGravity'''(tid, type, angle, speed, verticalspeed)
:Same as above, but the thrown projectile or monster will be subject to gravity.
:Same as above, but the thrown projectile or monster will be subject to gravity.
*404:'''Thing_Activate'''(tid)
:"Activates" an object of TID ''tid''. The object will enter ''activestate'' while playing ''activatesound''. If the object is a monster (SHOOTABLE or KILLABLE flag set), its DORMANT flag will be reset as well, "waking it up" from a statue.
*405:'''Thing_Deactivate'''(tid)
:Analogous/opposite to the above, the object will enter ''inactivestate'' while playing ''deactivatesound''. If the object is a monster (SHOOTABLE or KILLABLE flag set), its DORMANT flag will be set as well, turning it into a statue.
*421:'''Thing_ChangeTID'''(oldtid, newtid) ''(since Nov 14 2015)''
*421:'''Thing_ChangeTID'''(oldtid, newtid) ''(since Nov 14 2015)''
:Sets the TID of all things which currently have ''oldtid'' to the value ''newtid''. If ''oldtid'' is zero, it will change the TID of the activator.
:Sets the TID of all things which currently have ''oldtid'' to the value ''newtid''. If ''oldtid'' is zero, it will change the TID of the activator.
Line 683: Line 686:
:Enables and sets wind for Boom push/pull source things. If ''tag'' is non-zero, it looks for such things inside a tagged sector. Only one push/pull thing will be used for each tagged sector. If ''tag'' is zero, it will enable pushing for things tagged ''tid''. ''Amount'' is the force, and depending on thing type, it will be attractive or repulsive. If ''use_line'' is 1, it will use the linedef length as amount, not the ''amount'' argument. Either the tagged sector (if ''tag'' is non-zero) or the sectors containing the ''tid'' things must have the Boom generalized wind special.
:Enables and sets wind for Boom push/pull source things. If ''tag'' is non-zero, it looks for such things inside a tagged sector. Only one push/pull thing will be used for each tagged sector. If ''tag'' is zero, it will enable pushing for things tagged ''tid''. ''Amount'' is the force, and depending on thing type, it will be attractive or repulsive. If ''use_line'' is 1, it will use the linedef length as amount, not the ''amount'' argument. Either the tagged sector (if ''tag'' is non-zero) or the sectors containing the ''tid'' things must have the Boom generalized wind special.


===Sectors===
==Sectors==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 722: Line 725:
:Similar to '''Sector_SetWind''', but meant for water flow setup, not air wind.
:Similar to '''Sector_SetWind''', but meant for water flow setup, not air wind.


===Slopes===
==Slopes==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 738: Line 741:
|}
|}


===Teleportation===
==Teleportation==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 770: Line 773:
:Encapsulates the Boom line-teleporting functions. ''Dest_id'' is the tag of the target line. ''Flip'' will cause the user to rotate 180 degrees after teleporting.
:Encapsulates the Boom line-teleporting functions. ''Dest_id'' is the tag of the target line. ''Flip'' will cause the user to rotate 180 degrees after teleporting.


===Portals===
==Portals==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 810: Line 813:
:''Misc'' has values depending on the ''type'' chosen. It makes sense for anchored and linked portals (with 0 meaning source line, and 1 meaning anchor line) and it also has a meaning for the copy types (1 and 5) where it specifies the tag of the sector with portals to copy.
:''Misc'' has values depending on the ''type'' chosen. It makes sense for anchored and linked portals (with 0 meaning source line, and 1 meaning anchor line) and it also has a meaning for the copy types (1 and 5) where it specifies the tag of the sector with portals to copy.


===Binary format specific===
==Binary format specific==
*378:'''Line_SetIdentification'''(id)
*378:'''Line_SetIdentification'''(id)
:Sets the linedef identification number (separate from tag) to ''id''. Useful for various specials that use the line id. Do not use in UDMF.
:Sets the linedef identification number (separate from tag) to ''id''. Useful for various specials that use the line id. Do not use in UDMF.


===Property transfer===
==Property transfer==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 840: Line 843:
:This is a multi-purpose special encapsulating several static specials from MBF and Boom. ''Tag'' is the tag of the target sector(s). ''Type'' can be 255 for MBF sky transfers. If ''flip_or_ceiling'' is 1, the sky will be flipped horizontally. If ''type'' is 255, ''move_type'' must be 0.
:This is a multi-purpose special encapsulating several static specials from MBF and Boom. ''Tag'' is the tag of the target sector(s). ''Type'' can be 255 for MBF sky transfers. If ''flip_or_ceiling'' is 1, the sky will be flipped horizontally. If ''type'' is 255, ''move_type'' must be 0.


===Scrollers===
==Scrollers==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 865: Line 868:
|| 224 || 483 || [[Scroll_Ceiling]] || tag || kind || - || x || y
|| 224 || 483 || [[Scroll_Ceiling]] || tag || kind || - || x || y
|-
|-
|| 225 || ExtraData only || [[Scroll_Texture_Offsets]]
|| 225 || 255 || [[Scroll_Texture_Offset]] || || || || ||
|}
|}
*223 (484) '''Scroll_Floor'''(''tag'', ''kind'', ''scroll_things'', ''x'', ''y'')
*223 (484) '''Scroll_Floor'''(''tag'', ''kind'', ''scroll_things'', ''x'', ''y'')
*224 (483) '''Scroll_Ceiling'''(''tag'', ''kind'', ''unused'', ''x'', ''y'')
*224 (483) '''Scroll_Ceiling'''(''tag'', ''kind'', ''unused'', ''x'', ''y'')
*222 (485) '''Scroll_Texture_Model'''(''line_id'', ''kind'')
*222 (485) '''Scroll_Texture_Model'''(''line_id'', ''kind'')
:These specials do standard Boom scrolling. ''Kind'' specifies if it's a static scroller (0), displacement scroller (1) or accelerative scroller (2), and 4 can be added to it to discard arguments ''x'' and ''y'' and instead use the linedef's vertex coordinates do determine the scrolling vector. ''Scroll_things'' only apples for '''Scroll_Floor''' and means simple visual scrolling (0), thing movement with static floor (1) or thing movement with floor (2). ''X'' and ''y'' are the velocity components with which to scroll, if ''kind'' is less than 4 (otherwise the line's size is used).
:These specials do standard Boom scrolling. ''Kind'' specifies if it's a static scroller (0), accelerative scroller (1) or displacement scroller (2), and 4 can be added to it to discard arguments ''x'' and ''y'' and instead use the linedef's vertex coordinates do determine the scrolling vector. ''Scroll_things'' only apples for '''Scroll_Floor''' and means simple visual scrolling (0), thing movement with static floor (1) or thing movement with floor (2). ''X'' and ''y'' are the velocity components with which to scroll, if ''kind'' is less than 4 (otherwise the line's size is used).


:'''Scroll_Texture_Model''' does wall texture scrolling according to line's vector relative to the target lines.
:'''Scroll_Texture_Model''' does wall texture scrolling according to line's vector relative to the target lines.
*225 (255) '''Scroll_Texture_Offsets'''()
:This scrolls the current linedef based on texture offsets.


===Pushers===
==Pushers==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 894: Line 899:
|}
|}


===Exits===
==Exits==
{|class="wikitable sortable"
{|class="wikitable sortable"
! UDMF #
! UDMF #
Line 916: Line 921:
|}
|}
*400:'''Teleport_EndGame'''
*400:'''Teleport_EndGame'''
:Ends the entire game in victory. This triggers the current game's assigned ending cutscene and the player can only choose to start a new game.
:Ends the game in victory.
*447:'''Exit_Normal'''(reserved)
*447:'''Exit_Normal'''(reserved)
:Exits to a normal destination level. The argument is reserved and must be 0.
:Exits to a normal destination level. The argument is reserved and must be 0.
Line 925: Line 930:
*462:'''ChangeSkill'''(''skill'')
*462:'''ChangeSkill'''(''skill'')
:Changes the current difficulty level, where ''skill'' is from 0 (I'm too young to die) to 4 inclusive (Nightmare!).
:Changes the current difficulty level, where ''skill'' is from 0 (I'm too young to die) to 4 inclusive (Nightmare!).
==See also==
*[[ACS functions]]


[[Category:Editing]]
[[Category:Editing]]
[[Category:Editing reference]]
[[Category:Editing reference]]
Please note that all contributions to Eternity Wiki are considered to be released under the GNU Free Documentation License 1.2 (see Eternity Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)

Templates used on this page: