User:MascaraSnake/UDMF/Specification/Linedef types

From SRB2 Wiki
Jump to: navigation, search

This page outlines how SRB2's linedef types should be set up in UDMF.

Contents

Miscellaneous

Linedef type 1 (Per-Sector Gravity)

Old setup:

  • Tag: Affected sector(s)
  • Control sector floor height: Gravity value
  • Not Climbable flag: Flip player when gravity is negative

Currently, SRB2 handles per-sector gravity via the gravity field in sector_t, which is a pointer to the control sector's floor height. This makes it possible to change the gravity at runtime with a linedef executor. The flip option is stored in verticalflip, which is only set once at load time.

UDMF controls per-sector gravity via the gravity sector field and flipping the player via the flip sector flag. The flip flag can be stored directly in sector_t's verticalflip. To retain backwards compatibility with the binary map format, we need two sector_t fields for gravity: gravitypointer is a pointer to a control sector's floor height, while gravity is the local gravity value. Whenever the gravity value is needed, we evaluate gravitypointer first. If it is NULL, we use gravity instead.

As a consequence, linedef type 1 is no longer necessary in UDMF. If you simply want to set a sector's gravity, you can do it via the gravity field. If you want to change it at runtime, use the "set sector's gravity" linedef executor.

Linedef type 2 (Custom Exit)

Old setup:

  • Tag: Affected sector(s)
  • Control sector floor height: Next map
  • Control sector ceiling height: Next map if Block Enemies is set and player has collected all emeralds
  • Not Climbable flag: Skip score tally
  • Block Enemies flag: Check for emeralds

New setup:

  • arg0: Sector tag
  • arg1: Next map
  • arg2: Flags (1 = Skip score tally, 2 = Check for emeralds)
  • arg3: Next map if emerald check is enabled and player has collected all emeralds

In the binary format, the next map can be changed at runtime with one of the "move sector floor/ceiling" linedef executors. In UDMF, this can be accomplished with the new "change linedef argument" linedef executor.

Linedef type 3 (Zoom Tube Parameters)

Old setup:

  • Tag: Start/end sectors
  • Front X offset: Speed
  • Front Y offset: Waypoint sequence
  • Solid Midtexture flag: Ignore player direction
  • Start sector has the Zoom Tube Start sector type
  • End sector has the Zoom Tube End sector type

The sector types are no longer necessary.

New setup:

  • arg0: Start sector tag (0 = none)
  • arg1: End sector tag (0 = none)
  • arg2: Speed
  • arg3: Waypoint sequence
  • arg4: Ignore player direction? (no/yes)

Linedef type 4 (Speed Pad Parameters)

Old setup:

  • Tag: Affected sector(s)
  • Front X offset: Speed
  • Linedef direction: Direction
  • Front upper texture: Sound to play (default: sfx_spdpad)
  • Solid Midtexture flag: Doesn't teleport player into the center of the sector
  • Repeat Midtexture flag: Send player into rolling frames
  • Tagged sector has the Speed Pad sector type

The sector type is no longer necessary.

New setup:

  • arg0: Sector tag
  • arg1: Speed
  • arg2: Direction
  • arg3: Flags
    • 1 = Doesn't teleport player into the center of the sector
    • 2 = Send player into rolling frames
  • arg0str: Sound to play (default: sfx_spdpad)

Linedef type 5 (Camera Scanner)

Old setup:

  • Tag: Affected sector(s)
  • Floor height: Camera height
  • Ceiling height: Camera distance
  • Linedef direction: Camera direction

New setup:

  • arg0: Sector tag
  • arg1: Camera height
  • arg2: Camera distance
  • arg3: Camera direction (angle)

In the binary format, the camera height and distance can be changed at runtime with one of the "move sector floor/ceiling" linedef executors. In UDMF, this can be accomplished with the new "change linedef argument" linedef executor.

Linedef type 7 (Sector Flat Alignment)

Old setup:

  • Tag: Affected sector(s) (0 = Affect front sector)
  • Linedef direction: Rotation
  • Starting vertex: Origin of flat alignment (unless Effect 6 is checked)
  • Effect 6 flag: Flat offsets are set by front sidedef's X and Y offsets instead
  • Netgame Only flag: Floor is not affected
  • No Netgame flag: Ceiling is not affected

UDMF can do all of this via sector fields. Flat offsets are done via xpanningfloor, ypanningfloor, xpanningceiling and ypanningceiling. Flat rotation is done via rotationfloor and rotationceiling. However, Nev3r wants to retain the linedef type since it is sometimes more convenient to set up and defines its own center of rotation. If the linedef is tagged to a sector, it overrides the sector's rotation fields.

New setup:

  • arg0: Sector tag (0 = Affect front sector)
  • arg1: Affected planes (0 = Floor, 1 = Ceiling, 2 = Both)
  • Linedef direction: Rotation
  • Starting vertex: Origin of flat alignment

Linedef type 8 (Special Sector Properties)

Old setup:

  • Tag: Affected sector(s)
  • Control sector floor height: Camera collision floor (only if control sector has Intangible to the Camera sector type)
  • Control sector ceiling height: Camera collision ceiling (only if control sector has Intangible to the Camera sector type)
  • Not Climbable flag: "Floor Touch" specials execute only if ceiling is touched
  • Peg Midtexture flag: Sector specials are triggered when player barely touches the sector
  • Solid Midtexture flag: "Floor Touch" specials also execute if ceiling is touched

The special effect settings are turned into the sector field specialeffectplanes and the sector flag specialontouch. The only remaining purpose of this linedef type is to set the camera collision planes. These are still set via the control sector's floor and ceiling height, which is more intuitive in this case than using the linedef args. The Intangible to the Camera sector type is no longer needed.

New setup:

  • New name: Camera Collision Planes
  • arg0: Sector tag
  • Control sector floor height: Camera collision floor
  • Control sector ceiling height: Camera collision ceiling

Linedef type 9 (Chain Parameters)/Chain and mace Thing types

Old setup:

  • Linedef tag = Thing Angle
  • Thing parameter: Number of spokes
  • Thing Ambush flag: Double size
  • Thing Object Special flag: Silent
  • Linedef X distance: Number of chain links
  • Linedef Y distance: Speed
  • Front sector floor height: Pitch
  • Front sector ceiling height: Yaw
  • Linedef front X offset: Phase
  • Linedef front Y offset: Number of omitted chain links near center (must be given as a negative value)
  • Back sector floor height: Pinch
  • Back sector ceiling height: Roll
  • Linedef back X offset: Number of omitted spokes
  • Linedef back Y offset: Width
  • Not Climbable flag: Allow player to control yaw
  • Slope Skew flag: Swinging mace
  • No Midtexture Skew flag: Make chains out of maces
  • Peg Midtexture flag: Spawn an additional mace at the center
  • Solid Midtexture flag: Don't clip inside ground
  • Linedef upper textures (for custom mace): Mace object type
  • Linedef lower textures (for custom mace): Chain object type

Most of the settings can now be specified directly on the Thing via the param field. The linedef controls a few optional settings and can be omitted.

New setup:

  • New name: Chain Extra Parameters
  • Thing param0: Number of chain links
  • Thing param1: Number of spokes
  • Thing param2: Width
  • Thing param3: Speed
  • Thing param4: Pinch
  • Thing param5: Flags
    • 1 = Double size
    • 2 = Silent
    • 4 = Swinging mace
    • 8 = Allow player to control yaw
    • 16 = Make chains out of maces
    • 32 = Spawn an additional mace at the center
    • 64 = Don't clip inside ground
  • Thing param0str (for custom mace): Mace object type
  • Thing param1str (for custom mace): Chain object type
  • Thing roll field: Phase
  • Thing pitch field: Pitch
  • Thing angle field: Yaw
  • Linedef arg0: Thing tag
  • Linedef arg1: Roll
  • Linedef arg2: Number of omitted spokes
  • Linedef arg3: Number of omitted chain links near center

Linedef type 10 (Culling Plane)

Old setup:

  • Tag: Affected sector(s)
  • Control sector floor height: Culling plane height
  • Not Climbable flag: Only cull when camera is in tagged sector

The plane height is still set via the control sector's floor height, which is more intuitive in this case than using the linedef args.

New setup:

  • arg0: Sector tag
  • arg1: Only cull when camera is in tagged sector? (no/yes)
  • Control sector floor height: Culling plane height

Linedef type 11 (Rope Hang Parameters)

Old setup:

  • Tag: Affected sector(s)
  • Front X offset: Speed
  • Front Y offset: Waypoint sequence
  • Slope Skew flag: Doesn't loop movement
  • Not Climbable flag: Static
  • Tagged sector has the Rope Hang sector type

The sector type is no longer necessary.

New setup:

  • arg0: Sector tag
  • arg1: Speed (0 = static)
  • arg2: Waypoint sequence
  • arg3: Loop movement? (yes/no)

Linedef type 12 (Rock Spawner Parameters)/Thing type 1202 (Rock Spawner)

Old setup:

  • Linedef tag = Thing Angle
  • Linedef direction: Spawn direction
  • Linedef length: Speed
  • Front X offsets: Spawn interval
  • Front Y offsets: Rock sprite
  • Not Climbable flag: Randomize speed

The linedef type becomes obsolete in UDMF. Do everything via Thing parameters instead.

New setup:

  • Angle: Spawn direction
  • param0: Speed
  • param1: Spawn interval
  • param2: Randomize speed? (no/yes)
  • param0str: Rock sprite

Linedef type 13 (Heat Wave Effect)

Replaced with the heatwave sector flag.

Linedef type 14 (Bustable Block Parameters)

Old setup:

  • Tag: FOF control sector
  • Front textures: Debris object type
  • Front X offset: Spacing of debris particles
  • Front Y offset: Fuse of debris particles
  • Slope Skew flag: Particles launch from center

New setup:

  • arg0: Tag of FOF control sector
  • arg1: Spacing of debris particles
  • arg2: Fuse of debris particles
  • arg3: Particles launch from center? (no/yes)
  • arg0str: Debris object type

Linedef type 15 (Fan Particle Spawner Parameters)/Thing type 757 (Fan Particle Generator)

Old setup:

  • Linedef tag = Thing angle
  • Front sidedef textures: Object type to spawn (default: MT_PARTICLE)
  • Thing Z position: Number of particles to spawn around center (if 0: spawn only one particle directly at the center)
  • Linedef length: Spawn radius
  • Front X offset: Rising speed
  • Front Y offset: Rotation speed around center in angle per tic
  • Control sector floor/ceiling height: Heights between which the particle is bound
  • Back X offset: Spawn interval in tics (default: 3)

The parameters are turned into Thing params. The linedef type becomes optional and its only remaining purpose is to specify the heights between which the particles move. This makes it possible to change the heights at runtime with a "move floor/ceiling" linedef executor. If you don't need to change the heights at runtime, you don't need the linedef type at all and can set the heights via the Thing's Z position and param5 instead.

New setup:

  • New linedef type name: Set Fan Particle Heights
  • Linedef arg0: Thing tag
  • Control sector floor/ceiling height: Heights between which the particle is bound
  • Thing Z position: Spawn height (ignored if linedef is used)
  • Thing param0: Number of particles to spawn around center (if 0: spawn only one particle directly at the center)
  • Thing param1: Spawn radius
  • Thing param2: Rising speed (if negative: sink)
  • Thing param3: Rotation speed around center in angle per tic
  • Thing param4: Spawn interval in tics
  • Thing param5: Distance to rise/sink before the particles disappear (ignored if linedef is used)
  • Thing param0str: Object type to spawn (default: MT_PARTICLE)

Linedef type 40 (Visual Portal Between Tagged Linedefs)

New setup:

  • New name: Visual Portal
  • arg0: Portal number

Alternatively, turn into portal linedef property. Default value is -1, which means no portal is displayed.

Linedef type 41 (Horizon Effect)

Has no parameters, so turn it into a Horizon Effect linedef flag.

Linedef type 63 (Fake Floor/Ceiling Planes)

Old setup:

  • Tag: Affected sector(s)
  • Control sector floor height: Fake floor height
  • Control sector ceiling height: Fake ceiling height

The plane heights are still set via the control sector's floor and ceiling height, which is more intuitive in this case than using the linedef args.

New setup:

  • arg0: Sector tag
  • Control sector floor height: Fake floor height
  • Control sector ceiling height: Fake ceiling height

PolyObjects

Linedef type 20 (First Line)/Linedef type 22 (Parameters)/PolyObject Anchor/PolyObject Spawn Point

Old setup:

  • Linedef tag of both linedefs, anchor Angle, spawn point Angle: PolyObject ID
  • Parameters control sector floor height: PolyObject translucency
  • Parameters control sector special: Parent PolyObject ID
  • Parameters linedef Slope Skew flag: Render outer sides only
  • Parameters linedef No Midtexture Skew flag: Makes the PolyObject intangible
  • Parameters linedef Peg Midtexture flag: Movement can be stopped by pushable Objects
  • Parameters linedef Solid Midtexture flag: Flats are rendered
  • Parameters linedef Not Climbable flag: Triggers linedef executor when a player lands on it
  • PolyObject Spawn Point (Crush) instead of PolyObject Spawn Point: Crush players
  • When a player touches the PolyObject, trigger linedefs with the tag 32000 + ID are called.

Remove linedef type 22 and set everything on linedef type 20 instead. Remove PolyObject Spawn Point (Crush) and set the crush property via linedef type 20 instead.

New setup:

  • Anchor and spawn point tag: PolyObject ID
  • arg0: PolyObject ID
  • arg1: Parent PolyObject ID
  • arg2: Flags
    • 1 = Render outer sides only
    • 2 = Makes the PolyObject intangible
    • 4 = Movement can be stopped by pushable Objects
    • 8 = Flats are rendered
    • 16 = Triggers linedef executor when a player lands on it
    • 32 = Crush players
  • arg3: Translucency (fixed-point or percentage?)
  • arg4: Tag of trigger linedef to call on player touch (0 = None)

Linedef type 30 (Waving Flag)

Old setup:

  • Linedef tag: PolyObject ID
  • Linedef direction: Angle of waving effect
  • Linedef length: Speed
  • Front X offset: Distance to shift

New setup:

  • arg0: PolyObject ID
  • arg1: Angle of waving effect
  • arg2: Speed
  • arg3: Distance to shift

Linedef type 31 (Displacement by Front Sector)

New setup:

  • arg0: PolyObject ID
  • arg1: Base X speed
  • arg2: Base Y speed
  • Floor/ceiling height: Controls the movement

Plane movement

Linedef type 50–51 (Instantly Lower Floor/Raise Ceiling on Level Load)

Removed in UDMF. The original purpose of setting Thing heights beyond 4096 is gone since Thing heights are unrestricted in UDMF. Since the character flags are gone, the only remaining purpose would be to create different terrains for Single Player and multiplayer via the Netgame Only flag. However, this can also be accomplished in a much more flexible manner with linedef executors that run on level load.

Linedef type 52 (Continuously Falling Sector)

New setup:

  • arg0: Speed
  • arg1: Movement (fall/rise)
  • Front sector floor/ceiling: Starting point
  • Back sector floor/ceiling: Ending point

Linedef type 53–55 (Continuous Plane Movers)

Merge into linedef type 53, Continuous Plane Mover (Slowdown).

New setup:

  • arg0: Sector tag
  • arg1: Affected planes (0 = Floor, 1 = Ceiling, 2 = Both)
  • arg2: Speed when moving to front sector
  • arg3: Speed when moving to back sector
  • arg4: Starting delay
  • arg5: Delay before changing direction
  • Front sector floor/ceiling: Starting point
  • Back sector floor/ceiling: Ending point

Linedef type 56–58 (Continuous Two-Speed Plane Movers)

Merge into linedef type 56, Continuous Plane Mover (Constant).

New setup:

  • arg0: Sector tag
  • arg1: Affected planes (0 = Floor, 1 = Ceiling, 2 = Both)
  • arg2: Speed when moving to front sector
  • arg3: Speed when moving to back sector
  • arg4: Starting delay
  • arg5: Delay before changing direction
  • Front sector floor/ceiling: Starting point
  • Back sector floor/ceiling: Ending point

Linedef type 59–60 (Activate Moving Platform)

I don't like the setup of this, which requires three control sectors in a row, one of which is the FOF control sector. Instead, set this up more like linedef type 53: The front and back sectors of linedef type 59 control the heights to move between.

New setup:

  • arg0: Sector tag
  • arg1: Speed
  • arg2: Starting delay
  • arg3: Delay before changing direction
  • arg4: Starting direction (0 = Down, 1 = Up)
  • Front sector floor/ceiling: Starting point
  • Back sector floor/ceiling: Ending point

Linedef types 61–62 (Crushers)

Merge into linedef type 61, Ceiling Crusher.

New setup:

  • arg0: Sector tag
  • arg1: Start at (0 = Floor, 1 = Ceiling)
  • arg2: Crushing speed
  • arg3: Retracting speed

Linedef type 64 (Continuously Appearing/Disappearing FOF)

Old setup:

  • Linedef tag: FOF target sector
  • Control sector tag: FOF control sector
  • Control sector floor height: Initial delay
  • Linedef X distance: Time that the FOF is visible and tangible
  • Linedef Y distance: Time that the FOF is invisible and intangible
  • Block Enemies flag: Linedef tag is FOF control sector tag
  • Not Climbable flag: Mute the sound effect

New setup:

  • arg0: Tag of FOF control linedef
  • arg1: Time that the FOF is visible and tangible
  • arg2: Time that the FOF is invisible and intangible
  • arg3: Initial delay
  • arg4: Mute the sound effect? (no/yes)

Linedef types 66–68 (Move Planes by Displacement)

Old setup:

  • Linedef tag: Sector tag
  • Linedef length: Movement factor
  • Not Climbable flag: Reverse movement
  • Control sector floor height: Controls the movement

New setup:

  • arg0: Sector tag
  • arg1: Affected planes (0 = Floor, 1 = Ceiling, 2 = Both)
  • arg2: Movement factor (fixed-point, negative: reverse movement)
  • Control sector floor height: Controls the movement

FOFs

General

  • All translucent FOFs set the degree of translucency via their control linedef's alpha field.
  • The Transfer Line flag remains unchanged.
  • Whether solid FOFs block the player and/or other Objects is no longer set via the Slope Skew and No Midtexture Skew flags, but instead via linedef arguments.

Linedef types 100–105, 140–146 (Solid)

Merge into linedef type 100.

New setup:

  • arg0: Sector tag
  • arg1: Visibility (0 = Fully visible, 1 = Sides only, 2 = Planes only, 3 = Invisible)
  • arg2: Translucency (0 = Opaque, 1 = Translucent, no insides, 2 = Translucent, insides)
  • arg3: Tangibility (flags: 1 = Intangible from top, 2 = Intangible from bottom, 4 = Don't block players, 8 = Don't block non-players)
  • arg4: Cast shadow? (yes/no)

Linedef types 120–125 (Water)

Merge into linedef type 120.

New setup:

  • arg0: Sector tag
  • arg1: Flags
    • 1 = Opaque (Translucent is default)
    • 2 = Don't render sides
    • 4 = Render separate light level
    • 8 = Use target light level
    • 16 = No ripple effect
    • 32 = Goo physics

Linedef types 150–152 (Air Bobbing)

Merge into linedef type 150.

New setup:

  • arg0: Sector tag
  • arg1: Bobbing distance (Negative for reverse bobbing)
  • arg2: Require spindash to bob? (no/yes)
  • arg3: Tangibility (flags: 1 = Intangible from top, 2 = Intangible from bottom, 4 = Don't block players, 8 = Don't block non-players)

Linedef type 160 (Floating, Bobbing)

New setup:

  • arg0: Sector tag
  • arg1: Tangibility (flags: 1 = Intangible from top, 2 = Intangible from bottom, 4 = Don't block players, 8 = Don't block non-players)

Linedef types 170–180 (Crumbling)

Merge into linedef type 170.

New setup:

  • arg0: Sector tag
  • arg1: Tangibility (flags: 1 = Intangible from top, 2 = Intangible from bottom, 4 = Don't block players, 8 = Don't block non-players)
  • arg2: Flags
    • 1 = Don't respawn
    • 2 = Translucent
    • 4 = Bobbing
    • 8 = Require spindash to bob
    • 16 = Float on water
    • 32 = No shadow
  • arg3: Bobbing distance (if bobbing is enabled)

Linedef types 190–195 (Rising)

Merge into linedef type 190. Change the setup so that it only requires a front and a back sector rather than three sectors, as with the other moving platform specials. This means that the game has to remember the original floor and ceiling height in extra variables.

New setup:

  • arg0: Sector tag
  • arg1: Speed
  • arg2: Require spindash to move? (no/yes)
  • arg3: Tangibility (flags: 1 = Intangible from top, 2 = Intangible from bottom, 4 = Don't block players, 8 = Don't block non-players)
  • arg4: Visibility (0 = Opaque, 1 = Translucent, 2 = Invisible)
  • arg5: Cast shadow? (yes/no)
  • Front sector floor/ceiling height: Starting height
  • Back sector floor/ceiling height: Height to move to (Can be higher or lower)

Linedef types 200–201 (Light Block/Half Light Block)

Merge into linedef type 200.

New setup:

  • arg0: Sector tag
  • arg1: Expand to bottom? (no/yes)

Linedef type 202 (Fog Block)

New setup:

  • arg0: Sector tag

Linedef types 220–222 (Intangible)

Merge into linedef type 220.

New setup:

  • arg0: Sector tag
  • arg1: Flags
    • 1 = Translucent
    • 2 = No shadow
    • 4 = Don't render planes

Linedef type 223 (Intangible, Invisible)

New setup:

  • arg0: Sector tag

Linedef type 250 (Mario Block)

New setup:

  • arg0: Sector tag
  • arg1: Block type (0 = Normal, 1 = Brick, 2 = Invisible, 3 = Invisible brick)
  • Front middle texture: "Full" texture
  • Front lower texture: "Empty" texture
  • Front sector flats: "Full" flats
  • Back sector flats: "Empty" flats

Linedef type 251 (Thwomp Block)

New setup:

  • arg0: Sector tag
  • arg1: Falling speed
  • arg2: Rising speed
  • arg0str: Crushing sound (default: sfx_None)
  • Front middle texture: "Resting" texture
  • Front lower texture: "Falling" texture

Linedef types 252–256 (Bustable Blocks)

Merge into linedef type 254, Bustable Block.

New setup:

  • arg0: Sector tag
  • arg1: Busted by: 0 = Touching, 1 = Spinning, 2 = Spindashing, 3 = Knuckles touching only
  • arg2: Translucent? (no/yes)
  • arg3: Tangibility (flags: 1 = Intangible from top, 2 = Intangible from bottom, 4 = Don't block players, 8 = Don't block non-players)
  • arg4: Flags (1 = Bustable by pushables, 2 = Trigger linedef executor, 4 = Only from below)
  • arg5: Linedef executor tag

Linedef type 257 (Quicksand)

New setup:

  • arg0: Sector tag
  • arg1: Ripple effect? (yes/no)
  • arg2: Sinking speed
  • arg3: Sludginess

Linedef type 258 (Laser)

New setup:

  • arg0: Sector tag
  • arg1: Damage bosses? (yes/no)

Linedef type 259 (Custom FOF)

New setup:

  • arg0: Sector tag
  • arg1: FOF flags
  • arg2: Quicksand sinking speed
  • arg3: Quicksand sludginess
  • arg4: Bustable block flags (1 = Bustable by pushables, 2 = Trigger linedef executor)
  • arg5: Bustable block linedef executor tag
  • Front middle texture (FF_MARIO): "Full" texture
  • Front lower texture (FF_MARIO): "Empty" texture

Linedef executor triggers

General

  • Repeat Midtexture flag on trigger linedefs changes the execution order: Use new Trigger Out of Order flag.

Linedef types 300–302 (Continuous/Each Time/Once)

Merge into linedef type 300, Trigger Linedef Executor – Basic.

New setup:

  • arg0: Sector tag
  • arg1: Trigger type (0 = Continuous, 1 = Each time sector is entered, 2 = Each time sector is entered or left, 3 = Once)

Linedef types 303–304 (Ring Count)

Merge into linedef type 303.

New setup:

  • arg0: Sector tag
  • arg1: Trigger type (0 = Continuous, 1 = Each time sector is entered, 2 = Each time sector is entered or left, 3 = Once)
  • arg2: Ring count
  • arg3: Comparison (0 = Equal, 1 = Greater than or equal, 2 = Less than or equal)
  • arg4: Consider ring count of all players? (no/yes)

Linedef types 305–307 (Character Ability)

Merge into linedef type 305.

New setup:

  • arg0: Sector tag
  • arg1: Trigger type (0 = Continuous, 1 = Each time sector is entered, 2 = Each time sector is entered or left, 3 = Once)
  • arg2: Ability (flags)
    • 1 = No ability
    • 2 = Thok
    • 4 = Fly
    • 8 = Glide/Climb
    • 16 = Homing
    • 32 = Swim
    • 64 = Double jump
    • 128 = Float
    • 256 = Float with slow descent
    • 512 = Telekinesis
    • 1024 = Fall switch
    • 2048 = Jump boost
    • 4096 = Air drill
    • 8192 = Jump-thok

Linedef type 308 (Race Only)

Expand to gametype-specific trigger.

New setup:

  • arg0: Sector tag
  • arg1: Trigger type (0 = Continuous, 1 = Each time sector is entered, 2 = Each time sector is entered or left, 3 = Once)
  • arg2: Gametype (flags)
    • 1 = Single Player
    • 2 = Coop
    • 4 = Competition
    • 8 = Race
    • 16 = Match
    • 32 = Team Match
    • 64 = Tag
    • 128 = Hide & Seek
    • 256 = CTF

Linedef types 309–312 (CTF Red/Blue Team)

Merge into linedef type 309.

New setup:

  • arg0: Sector tag
  • arg1: Trigger type (0 = Continuous, 1 = Each time sector is entered, 2 = Each time sector is entered or left, 3 = Once)
  • arg2: Team (0 = Red, 1 = Blue)

Linedef type 313 (No More Enemies – Once)

This one probably doesn't make sense as an Each Time/Continuous version.

New setup:

  • arg0: Sectors to check

Linedef types 314–315 (Number of Pushables)

Merge into linedef type 314.

New setup:

  • arg0: Sector tag
  • arg1: Trigger type (0 = Continuous, 1 = Each time sector is entered, 2 = Each time sector is entered or left, 3 = Once)
  • arg2: Number of pushables
  • arg3: Comparison (0 = Equal, 1 = Greater than or equal, 2 = Less than or equal)

Linedef types 317–318 (Condition Set Trigger)

Merge into linedef type 317.

New setup:

  • arg0: Sector tag
  • arg1: Trigger type (0 = Continuous, 1 = Each time sector is entered, 2 = Each time sector is entered or left, 3 = Once)
  • arg2: Trigger number

Linedef types 319–320 (Unlockable)

Merge into linedef type 319.

New setup:

  • arg0: Sector tag
  • arg1: Trigger type (0 = Continuous, 1 = Each time sector is entered, 2 = Each time sector is entered or left, 3 = Once)
  • arg2: Unlockable number

Linedef types 321–322 (Trigger After X Calls)

Merge into linedef type 321. "Once" makes no sense as a trigger type here.

New setup:

  • arg0: Sector tag
  • arg1: Trigger type (0 = Continuous, 1 = Each time sector is entered, 2 = Each time sector is entered or left)
  • arg2: Number of calls
  • arg3: Trigger more than once? (no/yes)
  • arg4: Starting number of calls

Linedef type 399 (Level Load)

Has no parameters.

Linedef executors

Delays

Old setup: Upper Unpegged flag must be checked. Back sector floor height sets the delay in tics. The delay can be changed at runtime by moving the back sector floor with another linedef executor.

New setup: Delay in tics is set via the executordelay linedef field. It can be changed at runtime with the "set linedef executor delay" linedef executor.

Linedef type 400–401 (Set Tagged Sector's Floor/Ceiling Height/Texture)

Merge into linedef type 400, Set Tagged Sector's Plane Heights/Flats.

New setup:

  • arg0: Sector tag
  • arg1: Set heights? (0 = None, 1 = Floor, 2 = Ceiling, 3 = Both)
  • arg2: Set flats? (0 = None, 1 = Floor, 2 = Ceiling, 3 = Both)
  • Control sector floor/ceiling height: Heights to set
  • Control sector floor/ceiling flat: Flats to set

Linedef type 402 (Set Tagged Sector's Light Level)

New setup:

  • New name: Copy Light Level to Tagged Sectors
  • arg0: Sector tag
  • Control sector light level: New light level

Linedef type 403–404 (Move Tagged Sector's Floor/Ceiling)

Merge into linedef type 403, Move Tagged Sector's Planes.

New setup:

  • arg0: Sector tag
  • arg1: Affected planes (0 = Floor, 1 = Ceiling, 2 = Both)
  • arg2: Speed
  • arg3: Tag of linedef executor to run after movement has finished (0 = none)
  • Control sector floor/ceiling height: Heights to move to
  • Control sector floor/ceiling flat: Flats to set

Linedef types 405 and 407 (Move Floor/Ceiling According to Front Texture Offsets)

Merge into linedef type 405, Move Planes by Distance.

New setup:

  • arg0: Sector tag
  • arg1: Affected planes (0 = Floor, 1 = Ceiling, 2 = Both)
  • arg2: Distance
  • arg3: Speed
  • arg4: Instant? (no/yes)

Linedef type 409 (Change Tagged Sector's Tag)

New setup:

  • arg0: Tagged sector
  • arg1: New tag

Linedef type 410 (Change Front Sector's Tag)

New setup:

  • arg0: New tag

Linedef type 411 (Stop Plane Movement)

New setup:

  • arg0: Sector tag

Linedef type 412 (Teleporter)/Thing type 751 (Teleport Destination)

New setup:

  • arg0: Tag of teleport Thing
  • arg1: Flags (1 = Silent, 2 = Retain angle, 4 = Retain momentum, 8 = Relative)
  • arg2: X offset (if relative)
  • arg3: Y offset (if relative)
  • arg4: Z offset (if relative)
  • Thing position and angle: Teleport position and angle

Linedef type 413 (Change Music)

New setup:

  • arg0: Flags
    • 1 = Don't loop
    • 2 = Play for everyone
    • 4 = Continue playing after player dies
  • arg0str: Lump name of music to play
  • arg1str: Track to play (for module formats)

Linedef type 414 (Play Sound Effect)

New setup:

  • arg0: Sound source (0 = Triggering object, 1 = Trigger sector, 2 = Nowhere)
  • arg1: Flags
    • 1 = Play only for triggering player
    • 2 = Use tagged sectors as additional sound source
    • 4 = Play only if triggering Object is touching the tagged sectors
  • arg2: Sector tag
  • arg0str: Lump name of sound to play

Linedef type 415 (Run Script)

New setup:

  • arg0str: Lump name of script

Linedef type 416 (Start Adjustable Flickering Light)

New setup:

  • arg0: Tagged sector
  • arg1: Use target sector for brightness 2? (no/yes)
  • arg2: Brightness 1
  • arg3: Brightness 2 (unless arg1 is set)
  • arg4: Flickering frequency

Linedef type 417 (Start Adjustable Pulsating Light)

New setup:

  • arg0: Tagged sector
  • arg1: Use target sector for brightness 2? (no/yes)
  • arg2: Brightness 1
  • arg3: Brightness 2 (unless arg1 is set)
  • arg4: Pulsating speed

Linedef types 418–419 (Start Adjustable Blinking Light)

Merge into linedef type 418.

New setup:

  • arg0: Tagged sector
  • arg1: Flags
    • 1 = Use target sector for brightness 2
    • 2 = Synchronized
  • arg2: Brightness 1
  • arg3: Brightness 2 (unless arg1 flag 1 is set)
  • arg4: Time at brightness 1
  • arg5: Time at brightness 2

Linedef type 420 (Fade Light Level)

New setup:

  • arg0: Sector tag
  • arg1: New light level
  • arg2: Speed

Linedef type 421 (Stop Lighting Effect)

New setup:

  • arg0: Sector tag

Linedef type 422 (Switch to Cut-Away View)/Thing type 752 (Alternative View Point)

New setup:

  • arg0: Tag of viewpoint Thing
  • arg1: Time
  • Thing position, angle and pitch: Camera position, angle and pitch

Linedef type 423 (Change Sky)

New setup:

  • arg0: Sky number
  • arg1: For all players? (no/yes)

Linedef type 424 (Change Weather)

New setup:

  • arg0: Weather
    • 0 = None
    • 1 = Storm (thunder lightning and rain)
    • 2 = Snow
    • 3 = Rain
    • 4 = Preloaded precipitation
    • 5 = Storm (no rain)
    • 6 = Storm (no lightning)
  • arg1: For all players? (no/yes)

Linedef type 425 (Change Object State)

New setup:

  • arg0str: State

Linedef type 426 (Stop Object)

New setup:

  • arg0: Sends Object to center of sector? (no/yes)

Linedef type 427 (Award Score)

New setup:

  • arg0: Score

Linedef type 428 (Start Platform Movement)

I don't like the setup of this, which requires three control sectors in a row, one of which is the FOF control sector. Instead, set this up more like linedef type 53: The front and back sectors of linedef type 428 control the heights to move between.

New setup:

  • arg0: Sector tag
  • arg1: Speed
  • arg2: Starting delay
  • arg3: Delay before changing direction
  • arg4: Starting direction (0 = Down, 1 = Up)
  • Front sector floor/ceiling: Starting point
  • Back sector floor/ceiling: Ending point

Linedef types 429–431 (Crush Floor/Ceiling Once)

Merge into linedef type 429, Crush Planes.

New setup:

  • arg0: Sector tag
  • arg1: Affected planes (0 = Floor, 1 = Ceiling, 2 = Both)
  • arg2: Crushing speed
  • arg3: Retracting speed

Linedef type 432 (Enable/Disable 2D Mode)

New setup:

  • arg0: Mode (0 = 2D, 1 = 3D)

Linedef type 433 (Enable/Disable Gravity Flip)

New setup:

  • arg0: Gravity (0 = Reverse, 1 = Normal)

Linedef type 434 (Award Power-Up)

New setup:

  • arg0str: Power-up to award
  • arg1str: Time/Amount (-1 means indefinite time)

Linedef type 435 (Change Plane Scroller Direction)

New setup:

  • arg0: Sector tag
  • arg1: New X speed
  • arg2: New Y speed

Linedef type 436 (Shatter FOF)

New setup:

  • arg0: FOF control linedef tag

Linedef type 437 (Disable Player Control)

New setup:

  • arg0: Time
  • arg1: Allow jumping? (no/yes)

Linedef type 438 (Change Object Size)

New setup:

  • arg0: Size (fixed-point)

Linedef type 439 (Change Tagged Linedef's Textures)

New setup:

  • Front textures: Textures to change to
  • arg0: Linedef tag
  • arg1: Afftected side (0 = Front, 1 = Back, 2 = Both)
  • arg2: Only change previously set textures? (no/yes)

Linedef type 440 (Start Metal Sonic Race)

Has no parameters anyway!

Linedef type 441 (Condition Set Trigger)

New setup:

  • arg0: Trigger number

Linedef type 442 (Change Object Type State)

New setup:

  • arg0: Affected sector(s)
  • arg1: Change to? (0 = Specified state, 1 = Next state)
  • arg0str: Object type
  • arg1str: State

Linedef type 443 (Call Lua Function)

New setup:

  • arg0str: Function name

Linedef type 444 (Earthquake)

New setup:

  • arg0: Duration
  • arg1: Intensity

Linedef type 445 (Make FOF Disappear/Reappear)

New setup:

  • arg0: FOF control linedef tag
  • arg1: 0 = Disappear, 1 = Reappear

Linedef type 446 (Make FOF Crumble)

New setup:

  • arg0: FOF control linedef tag
  • arg1: Respawn? (0 = Yes, 1 = No, 2 = If FF_NORETURN is not set, 3 = If FF_NORETURN is set)

Linedef type 448 (Change Skybox)

New setup:

  • arg0: New viewpoint ID
  • arg1: New centerpoint ID
  • arg2: Change? (0 = Viewpoint, 1 = Centerpoint, 2 = Both)
  • arg3: For all players? (no/yes)

Linedef type 450 (Execute Linedef Executor (specific tag))

New setup:

  • arg0: Linedef tag

Linedef type 451 (Execute Linedef Executor (random tag in range))

New setup:

  • arg0: Lower bound of tag range
  • arg1: Upper bound of tag range

Linedef type 480 (PolyObject Door Slide)

New setup:

  • arg0: PolyObject ID
  • arg1: Movement direction (angle)
  • arg2: Speed
  • arg3: Distance to move
  • arg4: Time to wait before returning

Linedef type 481 (PolyObject Door Move)

New setup:

  • arg0: PolyObject ID
  • arg1: Speed
  • arg2: Rotation (angle)
  • arg3: Time to wait before returning

Linedef types 482–483 (PolyObject Move)

Merge into linedef type 482.

New setup:

  • arg0: PolyObject ID
  • arg1: Movement direction (angle)
  • arg2: Speed
  • arg3: Distance to move
  • arg4: Override? (no/yes)

Linedef types 484–487 (PolyObject Rotate)

Merge into linedef type 484.

New setup:

  • arg0: PolyObject ID
  • arg1: Speed
  • arg2: Rotation (angle, positive for clockwise, negative for counterclockwise)
  • arg3: Flags
    • 1 = Rotate players
    • 2 = Rotate other Objects
    • 4 = Continuous rotation (arg2 is ignored)
    • 8 = Override

Linedef type 488 (PolyObject Move by Waypoints)

New setup:

  • arg0: PolyObject ID
  • arg1: Waypoint sequence
  • arg2: Speed
  • arg3: Return behavior (0 = Don't return, 1 = Return directly to first waypoint, 2 = Repeat waypoint sequence in reverse)
  • arg4: Flags
    • 1 = Reverse waypoint order
    • 2 = Loop movement (ignored if "Don't return" is set)

Linedef types 489–490 (PolyObject Turn (In)Visible, (In)Tangible)

Merge into linedef type 489, Set Visibility and Tangibility.

New setup:

  • arg0: PolyObject ID
  • arg1: Visibility (0 = No change, 1 = Visible, 2 = Invisible)
  • arg2: Tangibility (0 = No change, 1 = Tangible, 2 = Intangible)

Linedef type 491 (PolyObject Set Translucency)

New setup:

  • arg0: PolyObject ID
  • arg1: Translucency level (0–10)

Scrollers and pushers

Linedef types 500–501, 505–506 (Direct wall scrollers)

Merge into linedef type 500, Scroll Walls.

New setup:

  • arg0: Side (0 = Front, 1 = Back, 2 = Front and back)
  • arg1: Scroll/carry? (0 = Scroll textures and carry objects, 1 = Scroll textures, 2 = Carry objects)
  • arg2: Horizontal scrolling speed
  • arg3: Vertical scrolling speed

Linedef types 502–504 (Scroll Wall According to Linedef)

Merge into linedef type 502, Scroll Walls Remotely.

New setup:

  • arg0: Linedef tag
  • arg1: Side (0 = Front, 1 = Back, 2 = Front and back)
  • arg2: Scroll/carry? (0 = Scroll textures and carry objects, 1 = Scroll textures, 2 = Carry objects)
  • arg3: Horizontal scrolling speed
  • arg4: Vertical scrolling speed
  • arg5: Type (0 = Regular, 1 = Accelerative, 2 = Displacement)
  • Floor/ceiling height: Controls the movement (for accelerative/displacement)

Linedef types 510–535 (Plane scrollers)

Merge into linedef type 510, Scroll Planes. Get rid of Conveyor Belt sector type.

New setup:

  • arg0: Tagged sector
  • arg1: Affected planes
    • 0 = Floor
    • 1 = Ceiling
    • 2 = Both
  • arg2: Scroll/carry?
    • 0 = Scroll textures and carry objects
    • 1 = Scroll textures
    • 2 = Carry objects
  • arg3: Base speed
  • arg4: Type
    • 0 = Regular
    • 1 = Accelerative
    • 2 = Displacement
    • +4 = Exclusive
  • Linedef direction: Scrolling direction
  • Floor/ceiling height: Controls the movement (for accelerative/displacement)

Linedef type 540 (Floor Friction)

Removed in UDMF and replaced with the sector field friction.

Linedef type 541–546 (Wind/Current)

Merge into linedef type 541. Get rid of Wind/Current sector type.

New setup:

  • arg0: Tagged sector
  • arg1: X speed
  • arg2: Y speed
  • arg3: Z speed (positive for upwards, negative for downwards)
  • arg4: Type (0 = Wind, 1 = Current)
  • arg5: Flags (1 = Player slides, 2 = Exclusive)

Linedef type 547 (Push/Pull)/Thing type 754 (Push Point)/Thing type 755 (Pull Point)

Old setup:

  • Linedef tag: Affected sector(s)
  • Linedef length: Pushing/pulling strength
  • Linedef Not Climbable flag: Exclusive
  • Thing Angle: Radius
  • Special and Ambush: Pushing and fading axes
  • Affected sectors have Wind/Current sector type

Merge everything into Thing type 754, Push/Pull Point. No linedef type or sector type required.

New setup:

  • param0: Affected sector(s)
  • param1: Radius
  • param2: Strength (positive for pushing, negative for pulling)
  • param3: Push/pull axes (flags: 1 = X, 2 = Y, 4 = Z)
  • param4: Flags
    • 1 = Don't fade vertically
    • 2 = Exclusive
    • 4 = Show gravity well sprites

Lighting

Linedef type 600/Linedef type 601 (Floor/Ceiling Lighting)

Removed in UDMF since floor and ceiling lighting can be set via the sector fields lightfloor and lightceiling. The values specified there are relative to the sector's overall light level, unless lightfloorabsolute/lightceilingabsolute is set.

Linedef type 602 (Adjustable Pulsating Light)

New setup:

  • arg0: Tagged sector
  • arg1: Use target sector for brightness 2? (no/yes)
  • arg2: Brightness 1
  • arg3: Brightness 2 (unless arg1 is set)
  • arg4: Pulsating speed

Linedef type 603 (Adjustable Flickering Light)

  • arg0: Tagged sector
  • arg1: Use target sector for brightness 2? (no/yes)
  • arg2: Brightness 1
  • arg3: Brightness 2 (unless arg1 is set)
  • arg4: Flickering frequency

Linedef types 604–605 (Adjustable Blinking Light)

Merge into linedef type 604.

New setup:

  • arg0: Tagged sector
  • arg1: Flags
    • 1 = Use target sector for brightness 2
    • 2 = Synchronized
  • arg2: Brightness 1
  • arg3: Brightness 2 (unless arg1 flag 1 is set)
  • arg4: Time at brightness 1
  • arg5: Time at brightness 2

Linedef type 606 (Colormap)

In UDMF, colormap settings are specified via the sector fields lightcolor, fadecolor, desaturation, fadestart, fadeend and foglighting, making this linedef type unnecessary. However, to make shenanigans like global colormaps easier, a modified version of this linedef type is retained.

New setup:

  • New name: Copy Colormap to Tagged Sectors
  • arg0: Sector tag
  • All colormap settings of the control sector are copied to all tagged sectors

Slopes

Linedef types 700–703, 710–713 (Sector-based slopes)

Merge into linedef type 700, Create Sector-Based Slope.

New setup:

  • arg0: Create floor slope? (0 = None, 1 = Front side, 2 = Back side)
  • arg1: Create ceiling slope? (0 = None, 1 = Front side, 2 = Back side)
  • arg2: Flags (1 = No physics, 2 = Dynamic)

Linedef types 704–705, 714–715 (Vertex-based slopes)

Merge into linedef type 704, Create Vertex-Based Slope.

New setup:

  • arg0: Plane to slope (0 = Front side floor, 1 = Front side ceiling, 2 = Back side floor, 3 = Back side ceiling)
  • arg1: Slope vertex 1 tag
  • arg2: Slope vertex 2 tag
  • arg3: Slope vertex 3 tag
  • arg4: Flags (1 = No physics, 2 = Dynamic)

Linedef types 720–722 (Copy slope)

Merge into linedef type 720, Copy Slope.

New setup:

  • arg0: Tag of sector whose floor slope is copied to the front sector (0 = no copy)
  • arg1: Tag of sector whose ceiling slope is copied to the front sector (0 = no copy)
  • arg2: Tag of sector whose floor slope is copied to the back sector (0 = no copy)
  • arg3: Tag of sector whose ceiling slope is copied to the back sector (0 = no copy)
  • arg4: Share slopes (flags)
    • 1 = Copy front floor slope to back floor slope
    • 2 = Copy back floor slope to front floor slope
    • 4 = Copy front ceiling slope to back ceiling slope
    • 8 = Copy back ceiling slope to front ceiling slope

Linedef type 799 (Set Tagged Dynamic Slope Vertex to Front Sector Height)

Made obsolete by linedef type 454.

Translucent walls

Linedef type 900–908 (Translucent walls)

Removed in UDMF since linedef translucency can be set via the linedef field alpha.

Linedef type 909 (Fog wall)

Removed in UDMF and replaced with the fogwall linedef flag.

New linedef types

These linedef types will be added specifically for UDMF.

Linedef type 17 (Make FOF Bouncy)

Setup:

  • arg0: Tag of FOF control sector
  • arg1: Bouncing strength
  • arg2: Dampen? (no/yes)

Linedef type 334 (Emerald Check)

Replaces the Trigger Linedef Executor (Emerald Check) sector type.

Setup:

  • arg0: Sector tag
  • arg1: Trigger type (0 = Continuous, 1 = Each time sector is entered, 2 = Each time sector is entered or left, 3 = Once)
  • arg2: Required emeralds (Flags: 1 = Emerald 1, 2 = Emerald 2, 4 = Emerald 3, 8 = Emerald 4, 16 = Emerald 5, 32 = Emerald 6, 64 = Emerald 7)

Linedef type 335 (NiGHTS Mare)

Replaces the Trigger Linedef Executor (NiGHTS Mare) sector type.

Setup:

  • arg0: Sector tag
  • arg1: Trigger type (0 = Continuous, 1 = Each time sector is entered, 2 = Each time sector is entered or left, 3 = Once)
  • arg2: Mares to trigger on (Flags: 1 = Mare 1, 2 = Mare 2, 4 = Mare 3, ...)

Linedef type 463 (Set Sector's Gravity)

Setup:

  • arg0: Tagged sector
  • arg1: Gravity (fixed-point?)
  • arg2: Flip player? (no/yes)

Linedef type 464 (Set Linedef Executor Delay)

Setup:

  • arg0: Tagged linedef
  • arg1: Delay (in tics)
  • arg2: Add or set? (set/add)

Linedef type 465 (Set Thing Height)

Setup:

  • arg0: Tagged Thing
  • arg1: Height
  • arg2: Add or set? (set/add)

Linedef type 466 (Change Linedef Argument)

Setup:

  • arg0: Tagged linedef
  • arg1: Argument number
  • arg2: Value
  • arg3: Add or set? (set/add)

Linedef type 548 (Fan)

Setup:

  • arg0: Sector tag
  • arg1: Maximum height
  • arg2: Strength