Editing Parameterized linedef specials
From Eternity Wiki
Jump to navigationJump to search
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. | 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. 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: | 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. | ||
Notation: ''HexenNumber'' (''ExtraDataNumber'') ''Name''(''Parameters'') | |||
{{Backto|Linedef types}} | {{Backto|Linedef types}} | ||
==Doors== | |||
*300:'''Door_Raise'''(''tag'', ''speed'', ''delay'', ''light_tag'') | |||
*301:'''Door_Open'''(''tag'', ''speed'', ''light_tag'') | |||
*302:'''Door_Close'''(''tag'', ''speed'', ''light_tag'') | |||
*303:'''Door_CloseWaitOpen'''(''tag'', ''speed'', ''delay_octics'', ''light_tag'') | |||
*304:'''Door_WaitRaise'''(''tag'', ''speed'', ''delay'', ''timeoffset'', ''light_tag'') | |||
*305:'''Door_WaitClose'''(''tag'', ''speed'', ''timeoffset'', ''light_tag'') | |||
*429:'''Door_LockedRaise'''(''tag'', ''speed'', ''delay'', ''lock'', ''light_tag'') ''(since Feb 25 2016)'' | |||
:''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. | ||
:''speed'': How fast, in eights of units per tic, the door should move. Doom normal doors are as fast as 16, and blazing doors are 64. | :''speed'': How fast, in eights of units per tic, the door should move. Doom normal doors are as fast as 16, and blazing doors are 64. | ||
Line 41: | Line 27: | ||
:''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== | |||
*306:'''Floor_RaiseToHighest''' ( tag, speed, change, crush ) | |||
*307:'''Floor_LowerToHighest''' ( tag, speed, change ) | |||
*308:'''Floor_RaiseToLowest''' ( tag, change, crush ) | |||
*309:'''Floor_LowerToLowest''' ( tag, speed, change ) | |||
*310:'''Floor_RaiseToNearest''' ( tag, speed, change, crush ) | |||
*311:'''Floor_LowerToNearest''' ( tag, speed, change ) | |||
*312:'''Floor_RaiseToLowestCeiling''' ( tag, speed, change, crush, gap ) | |||
*313:'''Floor_LowerToLowestCeiling''' ( tag, speed, change ) | |||
*314:'''Floor_RaiseToCeiling''' ( tag, speed, change, crush, gap ) | |||
*315:'''Floor_RaiseByTexture''' ( tag, speed, change, crush ) | |||
*316:'''Floor_LowerByTexture''' ( tag, speed, change ) | |||
*317:'''Floor_RaiseByValue''' ( tag, speed, height, change, crush ) | |||
*318:'''Floor_LowerByValue''' ( tag, speed, height, change ) | |||
*319:'''Floor_MoveToValue''' ( tag, speed, height, change, crush ) | |||
*320:'''Floor_RaiseInstant''' ( tag, height, change, crush ) | |||
*321:'''Floor_LowerInstant''' ( tag, height, change ) | |||
*322:'''Floor_ToCeilingInstant''' ( tag, change, crush, gap ) | |||
:Most of these are self-explanatory. The first six functions move the floor relative to the neighbor ''floor'' and the next two to the neighbor ceiling. The 'ByTexture' types move by the shortest lower texture's height. Parameters follow - | |||
:*tag - the target sector(s) tag. If set to 0, it will target the sector beyond the triggering linedef, like how manual doors work. | |||
:*speed - speed in eights of units per tic. As a reference most of the Doom regular type floors move by 8. | |||
:*change - 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 - nonzero if to crush, and by how much damage per each event. Regular Doom crushers have 10 damage. | |||
:*height - integer value specifying how much to move the floor, or which is the absolute destination Z coordinate to move it. | |||
:*gap - for floors rising to ceiling, this one sets a gap to stop at before reaching destination. Useful when crushing. | |||
*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 67: | ||
*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). | ||
*[[Floor_TransferTrigger]] | |||
*[[Floor_TransferNumeric]] | |||
*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. | ||
*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. | |||
: | |||
* | |||
: | |||
: | |||
* | |||
== | ==Plats, lifts== | ||
:410:'''Plat_PerpetualRaise'''(''tag'', ''speed'', ''delay'') | |||
:411:'''Plat_Stop'''(''tag'') | |||
:412:'''Plat_DownWaitUpStay'''(''tag'', ''speed'', ''delay'') | |||
:413:'''Plat_DownByValue'''(''tag'', ''speed'', ''delay'', ''height'') | |||
:414:'''Plat_UpWaitDownStay'''(''tag'', ''speed'', ''delay'') | |||
:415:'''Plat_UpByValue'''(''tag'', ''speed'', ''delay'', ''height'') | |||
:458:'''Elevator_RaiseToNearest'''(''tag'', ''speed'') | |||
:459:'''Elevator_LowerToNearest'''(''tag'', ''speed'') | |||
:460:'''Elevator_MoveToFloor'''(''tag'', ''speed'') | |||
:454:'''FloorAndCeiling_RaiseByValue'''(''tag'', ''speed'', ''height'') | |||
:453:'''FloorAndCeiling_LowerByValue'''(''tag'', ''speed'', ''height'') | |||
==Ceiling movement== | |||
*323:'''Ceiling_RaiseToHighest''' ( tag, speed, change ) | *323:'''Ceiling_RaiseToHighest''' ( tag, speed, change ) | ||
*324:'''Ceiling_ToHighestInstant''' ( tag, change, crush ) | *324:'''Ceiling_ToHighestInstant''' ( tag, change, crush ) | ||
Line 314: | Line 128: | ||
*465:'''Generic_Ceiling'''(''tag'', ''speed'', ''height'', ''target'', ''flag'') | *465:'''Generic_Ceiling'''(''tag'', ''speed'', ''height'', ''target'', ''flag'') | ||
:See '''Generic_Floor''' for an explanation of parameters. | :See '''Generic_Floor''' for an explanation of parameters. | ||
===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 332: | Line 145: | ||
*435: Ceiling_LowerAndCrush(tag, speed, damage, crushmode) | *435: Ceiling_LowerAndCrush(tag, speed, damage, crushmode) | ||
*436: Ceiling_LowerAndCrushDist(tag, speed, damage, ground_distance, crushmode) | *436: Ceiling_LowerAndCrushDist(tag, speed, damage, ground_distance, crushmode) | ||
*433: Ceiling_CrushStop(tag | *433: Ceiling_CrushStop(tag) | ||
*443: Generic_Crusher(tag, down_speed, up_speed, silent, damage) | *443: Generic_Crusher(tag, down_speed, up_speed, silent, damage) | ||
==Stair building== | |||
------------------------------------------------------------------------------ | |||
# Function ExtraData Name | |||
340 Build stairs up, DOOM method Stairs_BuildUpDoom | |||
341 Build stairs down, DOOM method Stairs_BuildDownDoom | |||
342 Build stairs up sync*, DOOM method Stairs_BuildUpDoomSync | |||
343 Build stairs dn sync*, DOOM method Stairs_BuildDownDoomSync | |||
------------------------------------------------------------------------------ | |||
* Synchronized stairs have each step move at a different speed so that all the | * Synchronized stairs have each step move at a different speed so that all the | ||
steps reach the destination height at the same time. This stair building | steps reach the destination height at the same time. This stair building | ||
style is only available with these parameterized line types. | style is only available with these parameterized line types. | ||
Parameters | |||
--------------------------------------------------------------- | |||
Stairs_BuildUpDoom tag, speed, stepsize, delay, reset | |||
Stairs_BuildDownDoom tag, speed, stepsize, delay, reset | |||
Stairs_BuildUpDoomSync tag, speed, stepsize, reset | |||
Stairs_BuildDownDoomSync tag, speed, stepsize, reset | |||
Values | Values | ||
Line 382: | Line 188: | ||
building action but in the reverse direction. If | building action but in the reverse direction. If | ||
zero, the stairs will never reset. | zero, the stairs will never reset. | ||
------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ||
==Polyobjects== | |||
*1 (348) '''Polyobj_StartLine'''(''id'', ''mirror_id'', ''sequence_id'') | *1 (348) '''Polyobj_StartLine'''(''id'', ''mirror_id'', ''sequence_id'') | ||
*5 (349) '''Polyobj_ExplicitLine(''id'', ''linenum'', ''mirror_id'', ''sequence_id'') | *5 (349) '''Polyobj_ExplicitLine(''id'', ''linenum'', ''mirror_id'', ''sequence_id'') | ||
Line 461: | Line 223: | ||
: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== | |||
------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ||
# Function ExtraData Name | # Function ExtraData Name | ||
Line 519: | Line 263: | ||
------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ||
*[[FloorAndCeiling_LowerRaise]] | *[[FloorAndCeiling_LowerRaise]] | ||
==ACS Scripts== | |||
{{zdoomwiki}} | {{zdoomwiki}} | ||
Eternity supports ACS script calling. | Eternity supports ACS script calling. | ||
Line 560: | Line 279: | ||
: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== | |||
Eternity supports the following light level controlling parameterized linedef specials. If ''tag'' is 0, any such parameterized special will affect the sector behind the linedef, if applicable. | Eternity supports the following light level controlling parameterized linedef specials. If ''tag'' is 0, any such parameterized special will affect the sector behind the linedef, if applicable. | ||
*368:'''Light_RaiseByValue'''(''tag'', ''lvl'') | *368:'''Light_RaiseByValue'''(''tag'', ''lvl'') | ||
Line 618: | Line 302: | ||
:Sets the lights in tagged sectors to their maximum neighbors' values | :Sets the lights in tagged sectors to their maximum neighbors' values | ||
==Things== | |||
*398:'''Thing_Spawn'''(tid, type, angle) | |||
:Spawns an object of '''acs_spawndata''' '''num''' ''type'' on top of map spot things marked with TID ''tid''. Note: teleportation fog is spawned as well. | |||
*399:'''Thing_SpawnNoFog'''(tid, type, angle) | |||
:Similar to above, but without teleportation fog. | |||
*402:'''Thing_Projectile'''(tid, type, angle, speed, verticalspeed) | *402:'''Thing_Projectile'''(tid, type, angle, speed, verticalspeed) | ||
:Throws a projectile from a map spot. Can also be used to throw a flying monster. Like in Thing_Spawn, ''type'' is an '''acs_spawndata num'''. Note that ''speed'' and ''verticalspeed'' are in eighths (units per 8 tics). Up is positive for ''verticalspeed''. | :Throws a projectile from a map spot. Can also be used to throw a flying monster. Like in Thing_Spawn, ''type'' is an '''acs_spawndata num'''. Note that ''speed'' and ''verticalspeed'' are in eighths (units per 8 tics). Up is positive for ''verticalspeed''. | ||
*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. | ||
*422:'''Thing_Raise'''(tid) ''(since Feb 24 2016)'' | |||
:Resurrects all corpses having ''tid'' if they have room. If ''tid'' is 0, it will resurrect the activator. Doesn't work on players. | |||
*423:'''Thing_Stop'''(tid) ''(since Feb 24 2016)'' | |||
:Stops the movement of all things tagged ''tid''. If ''tid'' is 0, it will stop the activator. It works by resetting velocity to 0, which means that it will work against players, projectiles and other thrusted objects. It will not "paralyze" monsters because they use a different kind of movement. | |||
*424:'''ThrustThing'''(angle, speed, reserved, tid) ''(since Feb 24 2016)'' | |||
:Pushes the thing in a direction using the specified speed. If ''tid'' is 0 it will push the activator. The argument ''reserved'' must be 0 and is intended to be used when Eternity has a working high-speed movement system. If the map is made for vanilla Hexen, it will only be activated from the front side; otherwise it will depend on the '''1SONLY''' [[ExtraData]] flag. | |||
*425:'''ThrustThingZ'''(tid, speed, up_down, set_add) ''(since Feb 24 2016)'' | |||
:Pushes the things tagged ''tid'' vertically. The value from ''speed'' will be divided by 4 before being added to the thing's vertical speed. ''Up_down'' will cause the thing to be thrusted upwards if 0, downwards if 1. ''Set_add'' will cause the speed to override the current value if 0, or add to the current value if 1. | |||
*426:'''DamageThing'''(damage, mod) ''(since Feb 24 2016)'' | *426:'''DamageThing'''(damage, mod) ''(since Feb 24 2016)'' | ||
:Damages the activator. ''Mod'' is a means-of-death ([[damagetype]]), which can be used for custom obituaries and damage resistances. If ''damage'' is 0, it will actually do 10000 (gibbing) damage. | :Damages the activator. ''Mod'' is a means-of-death ([[damagetype]]), which can be used for custom obituaries and damage resistances. If ''damage'' is 0, it will actually do 10000 (gibbing) damage. | ||
Line 683: | Line 341: | ||
: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== | |||
*470:'''Sector_SetRotation'''(tag, floor_angle, ceiling_angle) | *470:'''Sector_SetRotation'''(tag, floor_angle, ceiling_angle) | ||
:Sets the floor and ceiling texture rotation of tagged sectors to the given values in degrees (0-360). | :Sets the floor and ceiling texture rotation of tagged sectors to the given values in degrees (0-360). | ||
Line 721: | Line 356: | ||
*220 (479) '''Sector_SetCurrent'''(''tag'', ''strength'', ''angle'', ''flags'') | *220 (479) '''Sector_SetCurrent'''(''tag'', ''strength'', ''angle'', ''flags'') | ||
: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. | ||
*48 (482) '''Sector_Attach3dMidtex'''(''line_id'', ''tag'', ''do_ceiling'') | |||
:Attaches 3DMidtex lines to the vertical movement of the front sector's floor or (if ''do_ceiling'' is 1) ceiling. Normally it will seek lines tagged ''line_id'', but if ''tag'' is non-zero, it can restrict search to lines belonging to tagged sectors. If ''line_id'' is zero while ''tag'' is nonzero, it will find all 3dmidtex lines belonging to sectors with ''tag'', regardless of line tags. | |||
==Slopes== | |||
*455:'''Plane_Align'''(''floor'', ''ceiling'') | |||
:Only activated on map startup, it sets up slopes in front (1), back (2) or both (3) parts of a line, for ''floor'' and ''ceiling''. | |||
==Teleportation== | |||
*444:'''Teleport'''(tid, sector_tag, reserved) | *444:'''Teleport'''(tid, sector_tag, reserved) | ||
:Teleports the activator. Depending on whether ''tid'' or ''sector_tag'' is nonzero, the behavior will be Hexen or Doom compatible. If ''tid'' is zero, then it will teleport like in Doom, into the first teleport destination found on sectors tagged ''sector_tag''. | :Teleports the activator. Depending on whether ''tid'' or ''sector_tag'' is nonzero, the behavior will be Hexen or Doom compatible. If ''tid'' is zero, then it will teleport like in Doom, into the first teleport destination found on sectors tagged ''sector_tag''. | ||
Line 769: | Line 378: | ||
*446:'''Teleport_Line'''(reserved, dest_id, flip) | *446:'''Teleport_Line'''(reserved, dest_id, flip) | ||
: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== | |||
*'''Sector_SetPortal'''(''tag'', ''type'', ''plane'', ''misc'') | *'''Sector_SetPortal'''(''tag'', ''type'', ''plane'', ''misc'') | ||
:Only activates on map starts, this one sets a sector portal on floor and/or ceiling on the ''tag''ged sectors. See [[Portal]] for visual examples. | :Only activates on map starts, this one sets a sector portal on floor and/or ceiling on the ''tag''ged sectors. See [[Portal]] for visual examples. | ||
:''Plane'' can be 0 (display portal on floor), 1 (display portal on ceiling), 2 (display portal on both); | :''Plane'' can be 0 (display portal on floor), 1 (display portal on ceiling), 2 (display portal on both); | ||
Line 810: | Line 393: | ||
:''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== | |||
*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== | |||
*'''Transfer_FloorLight'''(tag) | *'''Transfer_FloorLight'''(tag) | ||
*'''Transfer_CeilingLight'''(tag) | *'''Transfer_CeilingLight'''(tag) | ||
Line 840: | Line 406: | ||
: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== | |||
*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), | :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. | |||
==Exits== | |||
*400:'''Teleport_EndGame''' | *400:'''Teleport_EndGame''' | ||
:Ends the | :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 926: | Line 428: | ||
: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!). | ||
[[Category:Editing reference]] | [[Category:Editing reference]] |